Skip to content

Commit

Permalink
Merge pull request #248 from gr455/meshmodel-components
Browse files Browse the repository at this point in the history
Add Meshmodel support
  • Loading branch information
Revolyssup authored Dec 26, 2022
2 parents 4f5a103 + a26d322 commit 6e5e500
Show file tree
Hide file tree
Showing 21 changed files with 145 additions and 11 deletions.
22 changes: 22 additions & 0 deletions build/config.go
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
package build

import (
"encoding/json"
"fmt"
"io"
"os"
"path/filepath"
"strings"
Expand All @@ -17,9 +19,18 @@ var DefaultVersion string
var DefaultURL string
var DefaultGenerationMethod string
var WorkloadPath string
var MeshModelPath string
var AllVersions []string
var CRDNames []string

var meshmodelmetadata = make(map[string]interface{})

var MeshModelConfig = adapter.MeshModelConfig{ //Move to build/config.go
Category: "Orchestration & Management",
SubCategory: "Service Mesh",
Metadata: meshmodelmetadata,
}

// NewConfig creates the configuration for creating components
func NewConfig(version string) manifests.Config {
return manifests.Config{
Expand All @@ -40,7 +51,18 @@ func NewConfig(version string) manifests.Config {

func init() {
wd, _ := os.Getwd()
f, _ := os.Open("./build/meshmodel_metadata.json")
defer func() {
err := f.Close()
if err != nil {
fmt.Println(err.Error())
}
}()
byt, _ := io.ReadAll(f)

_ = json.Unmarshal(byt, &meshmodelmetadata)
WorkloadPath = filepath.Join(wd, "templates", "oam", "workloads")
MeshModelPath = filepath.Join(wd, "templates", "meshmodel", "components")
AllVersions, _ = utils.GetLatestReleaseTagsSorted("traefik", "mesh")
if len(AllVersions) == 0 {
return
Expand Down
8 changes: 8 additions & 0 deletions build/meshmodel_metadata.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"Primary Color": "#9D0FB0",
"Secondary Color": "#e281f0",
"Shape": "circle",
"Logo URL": "",
"SVG_Color": "",
"SVG_White": "<svg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><g clip-path=\"url(#a)\"><path d=\"m11.54 6.143.046.025 3.928 2.226a.878.878 0 0 0 .865 0l3.896-2.202a1.315 1.315 0 0 1 1.792.482 1.336 1.336 0 0 1-.45 1.808l-.045.027-2.249 1.273a.442.442 0 0 0-.224.386.446.446 0 0 0 .224.386l6.072 3.442a.875.875 0 0 0 .865 0l3.756-2.129a1.315 1.315 0 0 1 1.796.478 1.335 1.335 0 0 1-.453 1.812l-.045.027-2.115 1.196a.442.442 0 0 0-.164.61c.04.067.096.123.164.162l2.125 1.204a1.329 1.329 0 0 1 .518 1.79 1.316 1.316 0 0 1-1.771.551l-.046-.025-3.766-2.135a.877.877 0 0 0-.865 0l-6.14 3.48a.441.441 0 0 0-.164.61.44.44 0 0 0 .164.161l2.537 1.438a1.336 1.336 0 0 1 .51 1.785 1.318 1.318 0 0 1-1.763.556l-.046-.025-4.177-2.369a.878.878 0 0 0-.865 0l-4.215 2.392a1.315 1.315 0 0 1-1.79-.48 1.335 1.335 0 0 1 .447-1.81l.045-.026 2.572-1.46a.44.44 0 0 0 .167-.604.432.432 0 0 0-.167-.168l-6.084-3.448a.878.878 0 0 0-.866 0l-3.582 2.027a1.316 1.316 0 0 1-1.794-.48 1.336 1.336 0 0 1 .453-1.81l.045-.027 1.937-1.096a.44.44 0 0 0 .225-.386.444.444 0 0 0-.225-.386L.684 14.314a1.336 1.336 0 0 1-.51-1.785 1.315 1.315 0 0 1 1.762-.556l.047.025 3.579 2.029a.876.876 0 0 0 .864 0l6.143-3.476a.442.442 0 0 0 .225-.386.444.444 0 0 0-.225-.386l-2.281-1.295a1.336 1.336 0 0 1-.51-1.785c.164-.305.44-.534.769-.638.329-.104.685-.074.993.083v-.001Zm3.973 5.793-6.144 3.476a.442.442 0 0 0-.165.61c.04.068.096.124.165.163l6.08 3.446a.876.876 0 0 0 .866 0l6.138-3.48a.442.442 0 0 0 .164-.609.443.443 0 0 0-.164-.162l-6.076-3.444a.877.877 0 0 0-.865 0Z\" fill=\"#fff\"/></g><defs><clipPath id=\"a\"><path fill=\"#fff\" d=\"M0 0h32v32H0z\"/></clipPath></defs></svg>"
}
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ replace (

require (
github.com/google/uuid v1.3.0
github.com/layer5io/meshery-adapter-library v0.6.0
github.com/layer5io/meshery-adapter-library v0.6.3
github.com/layer5io/meshkit v0.6.16
github.com/layer5io/service-mesh-performance v0.3.4
gopkg.in/yaml.v2 v2.4.0
Expand Down
4 changes: 2 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -627,8 +627,8 @@ github.com/lann/ps v0.0.0-20150810152359-62de8c46ede0/go.mod h1:vmVJ0l/dxyfGW6Fm
github.com/layer5io/kuttl v0.4.1-0.20200723152044-916f10574334/go.mod h1:UmrVd7x+bNVKrpmKgTtfRiTKHZeNPcMjQproJ0vGwhE=
github.com/layer5io/learn-layer5/smi-conformance v0.0.0-20210317075357-06b4f88b3e34 h1:QaViadDOBCMDUwYx78kfRvHMkzRVnh/GOhm3s2gxoP4=
github.com/layer5io/learn-layer5/smi-conformance v0.0.0-20210317075357-06b4f88b3e34/go.mod h1:BQPLwdJt7v7y0fXIejI4whR9zMyX07Wjt5xrbgEmHLw=
github.com/layer5io/meshery-adapter-library v0.6.0 h1:Tg3/e7qqVDOWtj1ZHEq8/dvQ/MG7Ebg5Q3dS6qvA0Is=
github.com/layer5io/meshery-adapter-library v0.6.0/go.mod h1:uEAy+N9/50nnmH3kdTU+J1ZaKAn5ajL4hSHyQYHeasM=
github.com/layer5io/meshery-adapter-library v0.6.3 h1:5tsbgrB1q84X2rM1TsRVe3pSBZ8kztjo4lPsHuPBe/Y=
github.com/layer5io/meshery-adapter-library v0.6.3/go.mod h1:x9/295iLiWab88uOwjgyZbJTX8aqkxfUlVZhqQKabew=
github.com/layer5io/meshkit v0.6.16 h1:bU9Q4Fl31yPqPjNJkf91wT7bM5LtLh+7P0eQix9f22I=
github.com/layer5io/meshkit v0.6.16/go.mod h1:9ZXmiP0dxRCNlVYgchrOnfFcNrdHVXuayiuN8RRTQ68=
github.com/layer5io/service-mesh-performance v0.3.2-0.20210122142912-a94e0658b021/go.mod h1:W153amv8aHAeIWxO7b7d7Vibt9RhaEVh4Uh+RG+BumQ=
Expand Down
19 changes: 14 additions & 5 deletions main.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ import (
"strings"
"time"

"github.com/google/uuid"
"github.com/layer5io/meshery-traefik-mesh/traefik"
"github.com/layer5io/meshery-traefik-mesh/traefik/oam"
"github.com/layer5io/meshkit/logger"
Expand All @@ -39,6 +40,7 @@ var (
serviceName = "traefik-mesh-adapter"
version = "edge"
gitsha = "none"
instanceID = uuid.NewString()
)

func init() {
Expand Down Expand Up @@ -160,6 +162,11 @@ func registerCapabilities(port string, log logger.Handler) {
if err := oam.RegisterTraits(mesheryServerAddress(), serviceAddress()+":"+port); err != nil {
log.Info(err.Error())
}

// Register meshmodel components
if err := oam.RegisterMeshModelComponents(instanceID, mesheryServerAddress(), serviceAddress(), port); err != nil {
log.Error(err)
}
}
func registerDynamicCapabilities(port string, log logger.Handler) {
registerWorkloads(port, log)
Expand Down Expand Up @@ -195,11 +202,13 @@ func registerWorkloads(port string, log logger.Handler) {
crdurl := url + crd
log.Info("Registering ", crdurl)
if err := adapter.CreateComponents(adapter.StaticCompConfig{
URL: crdurl,
Method: gm,
Path: build.WorkloadPath,
DirName: version,
Config: build.NewConfig(version),
URL: crdurl,
Method: gm,
OAMPath: build.WorkloadPath,
MeshModelPath: build.MeshModelPath,
MeshModelConfig: build.MeshModelConfig,
DirName: version,
Config: build.NewConfig(version),
}); err != nil {
log.Info(err.Error())
return
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"kind":"HTTPRouteGroup","apiVersion":"specs.smi-spec.io/v1alpha4","display-name":"HTTP Route Group","format":"JSON","metadata":{"Logo URL":"","Primary Color":"#9D0FB0","SVG_Color":"","SVG_White":"\u003csvg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cg clip-path=\"url(#a)\"\u003e\u003cpath d=\"m11.54 6.143.046.025 3.928 2.226a.878.878 0 0 0 .865 0l3.896-2.202a1.315 1.315 0 0 1 1.792.482 1.336 1.336 0 0 1-.45 1.808l-.045.027-2.249 1.273a.442.442 0 0 0-.224.386.446.446 0 0 0 .224.386l6.072 3.442a.875.875 0 0 0 .865 0l3.756-2.129a1.315 1.315 0 0 1 1.796.478 1.335 1.335 0 0 1-.453 1.812l-.045.027-2.115 1.196a.442.442 0 0 0-.164.61c.04.067.096.123.164.162l2.125 1.204a1.329 1.329 0 0 1 .518 1.79 1.316 1.316 0 0 1-1.771.551l-.046-.025-3.766-2.135a.877.877 0 0 0-.865 0l-6.14 3.48a.441.441 0 0 0-.164.61.44.44 0 0 0 .164.161l2.537 1.438a1.336 1.336 0 0 1 .51 1.785 1.318 1.318 0 0 1-1.763.556l-.046-.025-4.177-2.369a.878.878 0 0 0-.865 0l-4.215 2.392a1.315 1.315 0 0 1-1.79-.48 1.335 1.335 0 0 1 .447-1.81l.045-.026 2.572-1.46a.44.44 0 0 0 .167-.604.432.432 0 0 0-.167-.168l-6.084-3.448a.878.878 0 0 0-.866 0l-3.582 2.027a1.316 1.316 0 0 1-1.794-.48 1.336 1.336 0 0 1 .453-1.81l.045-.027 1.937-1.096a.44.44 0 0 0 .225-.386.444.444 0 0 0-.225-.386L.684 14.314a1.336 1.336 0 0 1-.51-1.785 1.315 1.315 0 0 1 1.762-.556l.047.025 3.579 2.029a.876.876 0 0 0 .864 0l6.143-3.476a.442.442 0 0 0 .225-.386.444.444 0 0 0-.225-.386l-2.281-1.295a1.336 1.336 0 0 1-.51-1.785c.164-.305.44-.534.769-.638.329-.104.685-.074.993.083v-.001Zm3.973 5.793-6.144 3.476a.442.442 0 0 0-.165.61c.04.068.096.124.165.163l6.08 3.446a.876.876 0 0 0 .866 0l6.138-3.48a.442.442 0 0 0 .164-.609.443.443 0 0 0-.164-.162l-6.076-3.444a.877.877 0 0 0-.865 0Z\" fill=\"#fff\"/\u003e\u003c/g\u003e\u003cdefs\u003e\u003cclipPath id=\"a\"\u003e\u003cpath fill=\"#fff\" d=\"M0 0h32v32H0z\"/\u003e\u003c/clipPath\u003e\u003c/defs\u003e\u003c/svg\u003e","Secondary Color":"#e281f0","Shape":"circle"},"model":{"name":"TRAEFIK_MESH","version":"v1.4.5","display-name":"TRAEFIK_MESH","category":"Orchestration \u0026 Management","sub-category":"Service Mesh"},"schema":"{\n \"properties\": {\n \"matches\": {\n \"description\": \"Match conditions of this route group.\",\n \"items\": {\n \"properties\": {\n \"headers\": {\n \"description\": \"Header match conditions of this route.\",\n \"items\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Header match condition of this route.\",\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"methods\": {\n \"description\": \"The HTTP methods of this HTTP route.\",\n \"items\": {\n \"description\": \"The HTTP method of this HTTP route.\",\n \"enum\": [\n \"*\",\n \"GET\",\n \"HEAD\",\n \"PUT\",\n \"POST\",\n \"DELETE\",\n \"CONNECT\",\n \"OPTIONS\",\n \"TRACE\",\n \"PATCH\"\n ],\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name of the HTTP route.\",\n \"type\": \"string\"\n },\n \"pathRegex\": {\n \"description\": \"URI path regex of the HTTP route.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"matches\"\n ],\n \"title\": \"HTTP Route Group\",\n \"type\": \"object\"\n}"}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"kind":"TCPRoute","apiVersion":"specs.smi-spec.io/v1alpha4","display-name":"TCP Route","format":"JSON","metadata":{"Logo URL":"","Primary Color":"#9D0FB0","SVG_Color":"","SVG_White":"\u003csvg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cg clip-path=\"url(#a)\"\u003e\u003cpath d=\"m11.54 6.143.046.025 3.928 2.226a.878.878 0 0 0 .865 0l3.896-2.202a1.315 1.315 0 0 1 1.792.482 1.336 1.336 0 0 1-.45 1.808l-.045.027-2.249 1.273a.442.442 0 0 0-.224.386.446.446 0 0 0 .224.386l6.072 3.442a.875.875 0 0 0 .865 0l3.756-2.129a1.315 1.315 0 0 1 1.796.478 1.335 1.335 0 0 1-.453 1.812l-.045.027-2.115 1.196a.442.442 0 0 0-.164.61c.04.067.096.123.164.162l2.125 1.204a1.329 1.329 0 0 1 .518 1.79 1.316 1.316 0 0 1-1.771.551l-.046-.025-3.766-2.135a.877.877 0 0 0-.865 0l-6.14 3.48a.441.441 0 0 0-.164.61.44.44 0 0 0 .164.161l2.537 1.438a1.336 1.336 0 0 1 .51 1.785 1.318 1.318 0 0 1-1.763.556l-.046-.025-4.177-2.369a.878.878 0 0 0-.865 0l-4.215 2.392a1.315 1.315 0 0 1-1.79-.48 1.335 1.335 0 0 1 .447-1.81l.045-.026 2.572-1.46a.44.44 0 0 0 .167-.604.432.432 0 0 0-.167-.168l-6.084-3.448a.878.878 0 0 0-.866 0l-3.582 2.027a1.316 1.316 0 0 1-1.794-.48 1.336 1.336 0 0 1 .453-1.81l.045-.027 1.937-1.096a.44.44 0 0 0 .225-.386.444.444 0 0 0-.225-.386L.684 14.314a1.336 1.336 0 0 1-.51-1.785 1.315 1.315 0 0 1 1.762-.556l.047.025 3.579 2.029a.876.876 0 0 0 .864 0l6.143-3.476a.442.442 0 0 0 .225-.386.444.444 0 0 0-.225-.386l-2.281-1.295a1.336 1.336 0 0 1-.51-1.785c.164-.305.44-.534.769-.638.329-.104.685-.074.993.083v-.001Zm3.973 5.793-6.144 3.476a.442.442 0 0 0-.165.61c.04.068.096.124.165.163l6.08 3.446a.876.876 0 0 0 .866 0l6.138-3.48a.442.442 0 0 0 .164-.609.443.443 0 0 0-.164-.162l-6.076-3.444a.877.877 0 0 0-.865 0Z\" fill=\"#fff\"/\u003e\u003c/g\u003e\u003cdefs\u003e\u003cclipPath id=\"a\"\u003e\u003cpath fill=\"#fff\" d=\"M0 0h32v32H0z\"/\u003e\u003c/clipPath\u003e\u003c/defs\u003e\u003c/svg\u003e","Secondary Color":"#e281f0","Shape":"circle"},"model":{"name":"TRAEFIK_MESH","version":"v1.4.5","display-name":"TRAEFIK_MESH","category":"Orchestration \u0026 Management","sub-category":"Service Mesh"},"schema":"{\n \"properties\": {\n \"matches\": {\n \"description\": \"Match conditions of this route.\",\n \"properties\": {\n \"ports\": {\n \"description\": \"Port numbers to match TCP traffic.\",\n \"items\": {\n \"type\": \"integer\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"ports\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"matches\"\n ],\n \"title\": \"TCP Route\",\n \"type\": \"object\"\n}"}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"kind":"TraefikMesh","apiVersion":"core.meshmodel.dev/v1alpha1","display-name":"Traefik Mesh","format":"JSON","metadata":{"Logo URL":"","Primary Color":"#9D0FB0","SVG_Color":"","SVG_White":"\u003csvg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cg clip-path=\"url(#a)\"\u003e\u003cpath d=\"m11.54 6.143.046.025 3.928 2.226a.878.878 0 0 0 .865 0l3.896-2.202a1.315 1.315 0 0 1 1.792.482 1.336 1.336 0 0 1-.45 1.808l-.045.027-2.249 1.273a.442.442 0 0 0-.224.386.446.446 0 0 0 .224.386l6.072 3.442a.875.875 0 0 0 .865 0l3.756-2.129a1.315 1.315 0 0 1 1.796.478 1.335 1.335 0 0 1-.453 1.812l-.045.027-2.115 1.196a.442.442 0 0 0-.164.61c.04.067.096.123.164.162l2.125 1.204a1.329 1.329 0 0 1 .518 1.79 1.316 1.316 0 0 1-1.771.551l-.046-.025-3.766-2.135a.877.877 0 0 0-.865 0l-6.14 3.48a.441.441 0 0 0-.164.61.44.44 0 0 0 .164.161l2.537 1.438a1.336 1.336 0 0 1 .51 1.785 1.318 1.318 0 0 1-1.763.556l-.046-.025-4.177-2.369a.878.878 0 0 0-.865 0l-4.215 2.392a1.315 1.315 0 0 1-1.79-.48 1.335 1.335 0 0 1 .447-1.81l.045-.026 2.572-1.46a.44.44 0 0 0 .167-.604.432.432 0 0 0-.167-.168l-6.084-3.448a.878.878 0 0 0-.866 0l-3.582 2.027a1.316 1.316 0 0 1-1.794-.48 1.336 1.336 0 0 1 .453-1.81l.045-.027 1.937-1.096a.44.44 0 0 0 .225-.386.444.444 0 0 0-.225-.386L.684 14.314a1.336 1.336 0 0 1-.51-1.785 1.315 1.315 0 0 1 1.762-.556l.047.025 3.579 2.029a.876.876 0 0 0 .864 0l6.143-3.476a.442.442 0 0 0 .225-.386.444.444 0 0 0-.225-.386l-2.281-1.295a1.336 1.336 0 0 1-.51-1.785c.164-.305.44-.534.769-.638.329-.104.685-.074.993.083v-.001Zm3.973 5.793-6.144 3.476a.442.442 0 0 0-.165.61c.04.068.096.124.165.163l6.08 3.446a.876.876 0 0 0 .866 0l6.138-3.48a.442.442 0 0 0 .164-.609.443.443 0 0 0-.164-.162l-6.076-3.444a.877.877 0 0 0-.865 0Z\" fill=\"#fff\"/\u003e\u003c/g\u003e\u003cdefs\u003e\u003cclipPath id=\"a\"\u003e\u003cpath fill=\"#fff\" d=\"M0 0h32v32H0z\"/\u003e\u003c/clipPath\u003e\u003c/defs\u003e\u003c/svg\u003e","Secondary Color":"#e281f0","Shape":"circle"},"model":{"name":"TRAEFIK_MESH","version":"v1.4.5","display-name":"TRAEFIK_MESH","category":"Orchestration \u0026 Management","sub-category":"Service Mesh"},"schema":"{\"$id\":\"http://meshery.layer5.io/definition/Workload/TraefikMesh\",\"$schema\":\"http://json-schema.org/draft-07/schema\",\"title\":\"TraefikMesh\",\"type\":\"object\",\"properties\":{}}"}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"kind":"TrafficSplit","apiVersion":"split.smi-spec.io/v1alpha4","display-name":"Traffic Split","format":"JSON","metadata":{"Logo URL":"","Primary Color":"#9D0FB0","SVG_Color":"","SVG_White":"\u003csvg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003cg clip-path=\"url(#a)\"\u003e\u003cpath d=\"m11.54 6.143.046.025 3.928 2.226a.878.878 0 0 0 .865 0l3.896-2.202a1.315 1.315 0 0 1 1.792.482 1.336 1.336 0 0 1-.45 1.808l-.045.027-2.249 1.273a.442.442 0 0 0-.224.386.446.446 0 0 0 .224.386l6.072 3.442a.875.875 0 0 0 .865 0l3.756-2.129a1.315 1.315 0 0 1 1.796.478 1.335 1.335 0 0 1-.453 1.812l-.045.027-2.115 1.196a.442.442 0 0 0-.164.61c.04.067.096.123.164.162l2.125 1.204a1.329 1.329 0 0 1 .518 1.79 1.316 1.316 0 0 1-1.771.551l-.046-.025-3.766-2.135a.877.877 0 0 0-.865 0l-6.14 3.48a.441.441 0 0 0-.164.61.44.44 0 0 0 .164.161l2.537 1.438a1.336 1.336 0 0 1 .51 1.785 1.318 1.318 0 0 1-1.763.556l-.046-.025-4.177-2.369a.878.878 0 0 0-.865 0l-4.215 2.392a1.315 1.315 0 0 1-1.79-.48 1.335 1.335 0 0 1 .447-1.81l.045-.026 2.572-1.46a.44.44 0 0 0 .167-.604.432.432 0 0 0-.167-.168l-6.084-3.448a.878.878 0 0 0-.866 0l-3.582 2.027a1.316 1.316 0 0 1-1.794-.48 1.336 1.336 0 0 1 .453-1.81l.045-.027 1.937-1.096a.44.44 0 0 0 .225-.386.444.444 0 0 0-.225-.386L.684 14.314a1.336 1.336 0 0 1-.51-1.785 1.315 1.315 0 0 1 1.762-.556l.047.025 3.579 2.029a.876.876 0 0 0 .864 0l6.143-3.476a.442.442 0 0 0 .225-.386.444.444 0 0 0-.225-.386l-2.281-1.295a1.336 1.336 0 0 1-.51-1.785c.164-.305.44-.534.769-.638.329-.104.685-.074.993.083v-.001Zm3.973 5.793-6.144 3.476a.442.442 0 0 0-.165.61c.04.068.096.124.165.163l6.08 3.446a.876.876 0 0 0 .866 0l6.138-3.48a.442.442 0 0 0 .164-.609.443.443 0 0 0-.164-.162l-6.076-3.444a.877.877 0 0 0-.865 0Z\" fill=\"#fff\"/\u003e\u003c/g\u003e\u003cdefs\u003e\u003cclipPath id=\"a\"\u003e\u003cpath fill=\"#fff\" d=\"M0 0h32v32H0z\"/\u003e\u003c/clipPath\u003e\u003c/defs\u003e\u003c/svg\u003e","Secondary Color":"#e281f0","Shape":"circle"},"model":{"name":"TRAEFIK_MESH","version":"v1.4.5","display-name":"TRAEFIK_MESH","category":"Orchestration \u0026 Management","sub-category":"Service Mesh"},"schema":"{\n \"properties\": {\n \"backends\": {\n \"description\": \"The backend services of this split.\",\n \"items\": {\n \"properties\": {\n \"service\": {\n \"description\": \"Name of the Kubernetes service.\",\n \"type\": \"string\"\n },\n \"weight\": {\n \"description\": \"Traffic weight value of this backend.\",\n \"type\": \"number\"\n }\n },\n \"required\": [\n \"service\",\n \"weight\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"matches\": {\n \"description\": \"The HTTP route groups that this traffic split should match.\",\n \"items\": {\n \"properties\": {\n \"kind\": {\n \"description\": \"Kind of the matching group.\",\n \"enum\": [\n \"HTTPRouteGroup\"\n ],\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the matching group.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"service\": {\n \"description\": \"The apex service of this split.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"service\",\n \"backends\"\n ],\n \"title\": \"Traffic Split\",\n \"type\": \"object\"\n}"}
Loading

0 comments on commit 6e5e500

Please sign in to comment.