From 7ccde37504a998dbc6c287b0d6c1372b952374d4 Mon Sep 17 00:00:00 2001 From: ashish Date: Thu, 20 Jan 2022 20:23:55 +0530 Subject: [PATCH] Add build time and modify run time comp generation Signed-off-by: ashish --- .github/workflows/update-oam-defs.yml | 102 ++----- Dockerfile | 1 + build/config.go | 57 ++++ go.mod | 4 +- go.sum | 84 +----- main.go | 80 +++--- osm/oam/register.go | 11 +- ...ery.layer5.io.meshery.layer5io.schema.json | 103 +++++++ .../egress.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 60 ++++ ...utegroup.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 118 ++++++++ ...sbackend.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 264 ++++++++++++++++++ ...shconfig.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 79 ++++++ ...rservice.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 25 ++ ...tcproute.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 59 ++++ ...ficsplit.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 91 ++++++ ...ictarget.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 103 +++++++ .../egress.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 60 ++++ ...utegroup.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 118 ++++++++ ...sbackend.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 264 ++++++++++++++++++ ...shconfig.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 79 ++++++ ...rservice.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 25 ++ ...tcproute.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 59 ++++ ...ficsplit.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 91 ++++++ ...ictarget.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 103 +++++++ .../egress.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 60 ++++ ...utegroup.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 118 ++++++++ ...sbackend.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 264 ++++++++++++++++++ ...shconfig.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 79 ++++++ ...rservice.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 25 ++ ...tcproute.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 59 ++++ ...ficsplit.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 91 ++++++ ...ictarget.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 103 +++++++ .../egress.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 60 ++++ ...utegroup.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 118 ++++++++ ...sbackend.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 264 ++++++++++++++++++ ...shconfig.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 79 ++++++ ...rservice.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 25 ++ ...tcproute.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 59 ++++ ...ficsplit.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 91 ++++++ ...ictarget.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 103 +++++++ .../egress.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 60 ++++ ...utegroup.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 118 ++++++++ ...sbackend.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 264 ++++++++++++++++++ ...shconfig.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 79 ++++++ ...rservice.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 25 ++ ...tcproute.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 59 ++++ ...ficsplit.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 91 ++++++ ...ictarget.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 103 +++++++ .../egress.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 60 ++++ ...utegroup.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 118 ++++++++ ...sbackend.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 264 ++++++++++++++++++ ...shconfig.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 79 ++++++ ...rservice.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 25 ++ ...tcproute.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 59 ++++ ...ficsplit.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 91 ++++++ ...ictarget.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 103 +++++++ .../egress.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 60 ++++ ...utegroup.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 118 ++++++++ ...sbackend.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 264 ++++++++++++++++++ ...shconfig.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 79 ++++++ ...rservice.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 25 ++ ...tcproute.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 59 ++++ ...ficsplit.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 91 ++++++ ...ictarget.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 103 +++++++ .../egress.meshery.layer5.io_definition.json | 20 ++ .../egress.osm.meshery.layer5io.schema.json | 0 .../egress.osm_definition.json | 0 ...ery.layer5.io.meshery.layer5io.schema.json | 60 ++++ ...utegroup.meshery.layer5.io_definition.json | 20 ++ ...outegroup.osm.meshery.layer5io.schema.json | 0 .../httproutegroup.osm_definition.json | 0 ...ery.layer5.io.meshery.layer5io.schema.json | 118 ++++++++ ...sbackend.meshery.layer5.io_definition.json | 20 ++ ...ssbackend.osm.meshery.layer5io.schema.json | 0 .../ingressbackend.osm_definition.json | 0 ...ery.layer5.io.meshery.layer5io.schema.json | 264 ++++++++++++++++++ ...shconfig.meshery.layer5.io_definition.json | 20 ++ ...eshconfig.osm.meshery.layer5io.schema.json | 0 .../meshconfig.osm_definition.json | 0 ...ery.layer5.io.meshery.layer5io.schema.json | 79 ++++++ ...rservice.meshery.layer5.io_definition.json | 20 ++ ...erservice.osm.meshery.layer5io.schema.json | 0 .../multiclusterservice.osm_definition.json | 0 ...ery.layer5.io.meshery.layer5io.schema.json | 25 ++ ...tcproute.meshery.layer5.io_definition.json | 20 ++ .../tcproute.osm.meshery.layer5io.schema.json | 0 .../tcproute.osm_definition.json | 0 ...ery.layer5.io.meshery.layer5io.schema.json | 59 ++++ ...ficsplit.meshery.layer5.io_definition.json | 20 ++ ...fficsplit.osm.meshery.layer5io.schema.json | 0 .../trafficsplit.osm_definition.json | 0 ...ery.layer5.io.meshery.layer5io.schema.json | 91 ++++++ ...ictarget.meshery.layer5.io_definition.json | 20 ++ ...fictarget.osm.meshery.layer5io.schema.json | 0 .../traffictarget.osm_definition.json | 0 ...ery.layer5.io.meshery.layer5io.schema.json | 103 +++++++ .../egress.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 60 ++++ ...utegroup.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 118 ++++++++ ...sbackend.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 264 ++++++++++++++++++ ...shconfig.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 79 ++++++ ...rservice.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 25 ++ ...tcproute.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 59 ++++ ...ficsplit.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 91 ++++++ ...ictarget.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 103 +++++++ .../egress.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 60 ++++ ...utegroup.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 118 ++++++++ ...sbackend.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 264 ++++++++++++++++++ ...shconfig.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 79 ++++++ ...rservice.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 25 ++ ...tcproute.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 59 ++++ ...ficsplit.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 91 ++++++ ...ictarget.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 103 +++++++ .../egress.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 60 ++++ ...utegroup.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 118 ++++++++ ...sbackend.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 264 ++++++++++++++++++ ...shconfig.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 79 ++++++ ...rservice.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 25 ++ ...tcproute.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 59 ++++ ...ficsplit.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 91 ++++++ ...ictarget.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 103 +++++++ .../egress.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 60 ++++ ...utegroup.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 118 ++++++++ ...sbackend.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 264 ++++++++++++++++++ ...shconfig.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 79 ++++++ ...rservice.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 25 ++ ...tcproute.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 59 ++++ ...ficsplit.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 91 ++++++ ...ictarget.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 103 +++++++ .../egress.meshery.layer5.io_definition.json | 20 ++ .../egress.osm.meshery.layer5io.schema.json | 0 .../egress.osm_definition.json | 0 ...ery.layer5.io.meshery.layer5io.schema.json | 60 ++++ ...utegroup.meshery.layer5.io_definition.json | 20 ++ ...outegroup.osm.meshery.layer5io.schema.json | 0 .../httproutegroup.osm_definition.json | 0 ...ery.layer5.io.meshery.layer5io.schema.json | 118 ++++++++ ...sbackend.meshery.layer5.io_definition.json | 20 ++ ...ssbackend.osm.meshery.layer5io.schema.json | 0 .../ingressbackend.osm_definition.json | 0 ...ery.layer5.io.meshery.layer5io.schema.json | 264 ++++++++++++++++++ ...shconfig.meshery.layer5.io_definition.json | 20 ++ ...eshconfig.osm.meshery.layer5io.schema.json | 0 .../meshconfig.osm_definition.json | 0 ...ery.layer5.io.meshery.layer5io.schema.json | 79 ++++++ ...rservice.meshery.layer5.io_definition.json | 20 ++ ...erservice.osm.meshery.layer5io.schema.json | 0 .../multiclusterservice.osm_definition.json | 0 ...ery.layer5.io.meshery.layer5io.schema.json | 25 ++ ...tcproute.meshery.layer5.io_definition.json | 20 ++ .../tcproute.osm.meshery.layer5io.schema.json | 0 .../tcproute.osm_definition.json | 0 ...ery.layer5.io.meshery.layer5io.schema.json | 59 ++++ ...ficsplit.meshery.layer5.io_definition.json | 20 ++ ...fficsplit.osm.meshery.layer5io.schema.json | 0 .../trafficsplit.osm_definition.json | 0 ...ery.layer5.io.meshery.layer5io.schema.json | 91 ++++++ ...ictarget.meshery.layer5.io_definition.json | 20 ++ ...fictarget.osm.meshery.layer5io.schema.json | 0 .../traffictarget.osm_definition.json | 0 ...ery.layer5.io.meshery.layer5io.schema.json | 103 +++++++ .../egress.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 60 ++++ ...utegroup.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 118 ++++++++ ...sbackend.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 264 ++++++++++++++++++ ...shconfig.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 79 ++++++ ...rservice.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 25 ++ ...tcproute.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 59 ++++ ...ficsplit.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 91 ++++++ ...ictarget.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 103 +++++++ .../egress.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 60 ++++ ...utegroup.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 118 ++++++++ ...sbackend.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 264 ++++++++++++++++++ ...shconfig.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 79 ++++++ ...rservice.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 25 ++ ...tcproute.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 59 ++++ ...ficsplit.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 91 ++++++ ...ictarget.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 103 +++++++ .../egress.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 60 ++++ ...utegroup.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 118 ++++++++ ...sbackend.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 264 ++++++++++++++++++ ...shconfig.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 79 ++++++ ...rservice.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 25 ++ ...tcproute.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 59 ++++ ...ficsplit.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 91 ++++++ ...ictarget.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 103 +++++++ .../egress.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 60 ++++ ...utegroup.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 118 ++++++++ ...sbackend.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 264 ++++++++++++++++++ ...shconfig.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 79 ++++++ ...rservice.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 25 ++ ...tcproute.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 59 ++++ ...ficsplit.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 91 ++++++ ...ictarget.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 103 +++++++ .../egress.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 60 ++++ ...utegroup.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 118 ++++++++ ...sbackend.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 264 ++++++++++++++++++ ...shconfig.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 79 ++++++ ...rservice.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 25 ++ ...tcproute.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 59 ++++ ...ficsplit.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 91 ++++++ ...ictarget.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 103 +++++++ .../egress.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 60 ++++ ...utegroup.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 118 ++++++++ ...sbackend.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 264 ++++++++++++++++++ ...shconfig.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 79 ++++++ ...rservice.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 25 ++ ...tcproute.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 59 ++++ ...ficsplit.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 91 ++++++ ...ictarget.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 103 +++++++ .../egress.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 60 ++++ ...utegroup.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 118 ++++++++ ...sbackend.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 264 ++++++++++++++++++ ...shconfig.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 79 ++++++ ...rservice.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 25 ++ ...tcproute.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 59 ++++ ...ficsplit.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 91 ++++++ ...ictarget.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 103 +++++++ .../egress.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 60 ++++ ...utegroup.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 118 ++++++++ ...sbackend.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 264 ++++++++++++++++++ ...shconfig.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 79 ++++++ ...rservice.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 25 ++ ...tcproute.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 59 ++++ ...ficsplit.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 91 ++++++ ...ictarget.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 103 +++++++ .../egress.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 60 ++++ ...utegroup.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 118 ++++++++ ...sbackend.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 264 ++++++++++++++++++ ...shconfig.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 79 ++++++ ...rservice.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 25 ++ ...tcproute.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 59 ++++ ...ficsplit.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 91 ++++++ ...ictarget.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 103 +++++++ .../egress.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 60 ++++ ...utegroup.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 118 ++++++++ ...sbackend.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 264 ++++++++++++++++++ ...shconfig.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 79 ++++++ ...rservice.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 25 ++ ...tcproute.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 59 ++++ ...ficsplit.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 91 ++++++ ...ictarget.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 103 +++++++ .../egress.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 60 ++++ ...utegroup.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 118 ++++++++ ...sbackend.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 264 ++++++++++++++++++ ...shconfig.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 79 ++++++ ...rservice.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 25 ++ ...tcproute.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 59 ++++ ...ficsplit.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 91 ++++++ ...ictarget.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 103 +++++++ .../egress.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 60 ++++ ...utegroup.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 118 ++++++++ ...sbackend.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 264 ++++++++++++++++++ ...shconfig.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 79 ++++++ ...rservice.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 25 ++ ...tcproute.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 59 ++++ ...ficsplit.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 91 ++++++ ...ictarget.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 103 +++++++ .../egress.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 60 ++++ ...utegroup.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 118 ++++++++ ...sbackend.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 264 ++++++++++++++++++ ...shconfig.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 79 ++++++ ...rservice.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 25 ++ ...tcproute.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 59 ++++ ...ficsplit.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 91 ++++++ ...ictarget.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 103 +++++++ .../egress.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 60 ++++ ...utegroup.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 118 ++++++++ ...sbackend.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 264 ++++++++++++++++++ ...shconfig.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 79 ++++++ ...rservice.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 25 ++ ...tcproute.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 59 ++++ ...ficsplit.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 91 ++++++ ...ictarget.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 103 +++++++ .../egress.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 60 ++++ ...utegroup.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 118 ++++++++ ...sbackend.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 264 ++++++++++++++++++ ...shconfig.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 79 ++++++ ...rservice.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 25 ++ ...tcproute.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 59 ++++ ...ficsplit.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 91 ++++++ ...ictarget.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 103 +++++++ .../egress.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 60 ++++ ...utegroup.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 118 ++++++++ ...sbackend.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 264 ++++++++++++++++++ ...shconfig.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 79 ++++++ ...rservice.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 25 ++ ...tcproute.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 59 ++++ ...ficsplit.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 91 ++++++ ...ictarget.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 103 +++++++ .../egress.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 60 ++++ ...utegroup.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 118 ++++++++ ...sbackend.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 264 ++++++++++++++++++ ...shconfig.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 79 ++++++ ...rservice.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 25 ++ ...tcproute.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 59 ++++ ...ficsplit.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 91 ++++++ ...ictarget.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 103 +++++++ .../egress.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 60 ++++ ...utegroup.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 118 ++++++++ ...sbackend.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 264 ++++++++++++++++++ ...shconfig.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 79 ++++++ ...rservice.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 25 ++ ...tcproute.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 59 ++++ ...ficsplit.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 91 ++++++ ...ictarget.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 103 +++++++ .../egress.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 60 ++++ ...utegroup.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 118 ++++++++ ...sbackend.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 264 ++++++++++++++++++ ...shconfig.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 79 ++++++ ...rservice.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 25 ++ ...tcproute.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 59 ++++ ...ficsplit.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 91 ++++++ ...ictarget.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 103 +++++++ .../egress.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 60 ++++ ...utegroup.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 118 ++++++++ ...sbackend.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 264 ++++++++++++++++++ ...shconfig.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 79 ++++++ ...rservice.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 25 ++ ...tcproute.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 59 ++++ ...ficsplit.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 91 ++++++ ...ictarget.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 103 +++++++ .../egress.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 60 ++++ ...utegroup.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 118 ++++++++ ...sbackend.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 264 ++++++++++++++++++ ...shconfig.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 79 ++++++ ...rservice.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 25 ++ ...tcproute.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 59 ++++ ...ficsplit.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 91 ++++++ ...ictarget.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 103 +++++++ .../egress.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 60 ++++ ...utegroup.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 118 ++++++++ ...sbackend.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 264 ++++++++++++++++++ ...shconfig.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 79 ++++++ ...rservice.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 25 ++ ...tcproute.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 59 ++++ ...ficsplit.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 91 ++++++ ...ictarget.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 103 +++++++ .../egress.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 60 ++++ ...utegroup.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 118 ++++++++ ...sbackend.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 264 ++++++++++++++++++ ...shconfig.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 79 ++++++ ...rservice.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 25 ++ ...tcproute.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 59 ++++ ...ficsplit.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 91 ++++++ ...ictarget.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 103 +++++++ .../egress.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 60 ++++ ...utegroup.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 118 ++++++++ ...sbackend.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 264 ++++++++++++++++++ ...shconfig.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 79 ++++++ ...rservice.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 25 ++ ...tcproute.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 59 ++++ ...ficsplit.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 91 ++++++ ...ictarget.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 103 +++++++ .../egress.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 60 ++++ ...utegroup.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 118 ++++++++ ...sbackend.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 264 ++++++++++++++++++ ...shconfig.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 79 ++++++ ...rservice.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 25 ++ ...tcproute.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 59 ++++ ...ficsplit.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 91 ++++++ ...ictarget.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 103 +++++++ .../egress.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 60 ++++ ...utegroup.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 118 ++++++++ ...sbackend.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 264 ++++++++++++++++++ ...shconfig.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 79 ++++++ ...rservice.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 25 ++ ...tcproute.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 59 ++++ ...ficsplit.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 91 ++++++ ...ictarget.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 103 +++++++ .../egress.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 60 ++++ ...utegroup.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 118 ++++++++ ...sbackend.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 264 ++++++++++++++++++ ...shconfig.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 79 ++++++ ...rservice.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 25 ++ ...tcproute.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 59 ++++ ...ficsplit.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 91 ++++++ ...ictarget.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 103 +++++++ .../egress.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 60 ++++ ...utegroup.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 118 ++++++++ ...sbackend.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 264 ++++++++++++++++++ ...shconfig.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 79 ++++++ ...rservice.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 25 ++ ...tcproute.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 59 ++++ ...ficsplit.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 91 ++++++ ...ictarget.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 103 +++++++ .../egress.meshery.layer5.io_definition.json | 20 ++ .../egress.osm.meshery.layer5io.schema.json | 0 .../egress.osm_definition.json | 0 ...ery.layer5.io.meshery.layer5io.schema.json | 60 ++++ ...utegroup.meshery.layer5.io_definition.json | 20 ++ ...outegroup.osm.meshery.layer5io.schema.json | 0 .../httproutegroup.osm_definition.json | 0 ...ery.layer5.io.meshery.layer5io.schema.json | 118 ++++++++ ...sbackend.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 264 ++++++++++++++++++ ...shconfig.meshery.layer5.io_definition.json | 20 ++ ...eshconfig.osm.meshery.layer5io.schema.json | 0 .../meshconfig.osm_definition.json | 0 ...ery.layer5.io.meshery.layer5io.schema.json | 79 ++++++ ...rservice.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 25 ++ ...tcproute.meshery.layer5.io_definition.json | 20 ++ .../tcproute.osm.meshery.layer5io.schema.json | 0 .../tcproute.osm_definition.json | 0 ...ery.layer5.io.meshery.layer5io.schema.json | 59 ++++ ...ficsplit.meshery.layer5.io_definition.json | 20 ++ ...fficsplit.osm.meshery.layer5io.schema.json | 0 .../trafficsplit.osm_definition.json | 0 ...ery.layer5.io.meshery.layer5io.schema.json | 91 ++++++ ...ictarget.meshery.layer5.io_definition.json | 20 ++ ...fictarget.osm.meshery.layer5io.schema.json | 0 .../traffictarget.osm_definition.json | 0 ...ery.layer5.io.meshery.layer5io.schema.json | 103 +++++++ .../egress.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 60 ++++ ...utegroup.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 118 ++++++++ ...sbackend.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 264 ++++++++++++++++++ ...shconfig.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 79 ++++++ ...rservice.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 25 ++ ...tcproute.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 59 ++++ ...ficsplit.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 91 ++++++ ...ictarget.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 103 +++++++ .../egress.meshery.layer5.io_definition.json | 20 ++ .../egress.osm.meshery.layer5io.schema.json | 0 .../egress.osm_definition.json | 0 ...ery.layer5.io.meshery.layer5io.schema.json | 60 ++++ ...utegroup.meshery.layer5.io_definition.json | 20 ++ ...outegroup.osm.meshery.layer5io.schema.json | 0 .../httproutegroup.osm_definition.json | 0 ...ery.layer5.io.meshery.layer5io.schema.json | 118 ++++++++ ...sbackend.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 264 ++++++++++++++++++ ...shconfig.meshery.layer5.io_definition.json | 20 ++ ...eshconfig.osm.meshery.layer5io.schema.json | 0 .../meshconfig.osm_definition.json | 0 ...ery.layer5.io.meshery.layer5io.schema.json | 79 ++++++ ...rservice.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 25 ++ ...tcproute.meshery.layer5.io_definition.json | 20 ++ .../tcproute.osm.meshery.layer5io.schema.json | 0 .../tcproute.osm_definition.json | 0 ...ery.layer5.io.meshery.layer5io.schema.json | 59 ++++ ...ficsplit.meshery.layer5.io_definition.json | 20 ++ ...fficsplit.osm.meshery.layer5io.schema.json | 0 .../trafficsplit.osm_definition.json | 0 ...ery.layer5.io.meshery.layer5io.schema.json | 91 ++++++ ...ictarget.meshery.layer5.io_definition.json | 20 ++ ...fictarget.osm.meshery.layer5io.schema.json | 0 .../traffictarget.osm_definition.json | 0 ...ery.layer5.io.meshery.layer5io.schema.json | 103 +++++++ .../egress.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 60 ++++ ...utegroup.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 118 ++++++++ ...sbackend.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 264 ++++++++++++++++++ ...shconfig.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 79 ++++++ ...rservice.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 25 ++ ...tcproute.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 59 ++++ ...ficsplit.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 91 ++++++ ...ictarget.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 103 +++++++ .../egress.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 60 ++++ ...utegroup.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 118 ++++++++ ...sbackend.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 264 ++++++++++++++++++ ...shconfig.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 79 ++++++ ...rservice.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 25 ++ ...tcproute.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 59 ++++ ...ficsplit.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 91 ++++++ ...ictarget.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 103 +++++++ .../egress.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 60 ++++ ...utegroup.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 118 ++++++++ ...sbackend.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 264 ++++++++++++++++++ ...shconfig.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 79 ++++++ ...rservice.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 25 ++ ...tcproute.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 59 ++++ ...ficsplit.meshery.layer5.io_definition.json | 20 ++ ...ery.layer5.io.meshery.layer5io.schema.json | 91 ++++++ ...ictarget.meshery.layer5.io_definition.json | 20 ++ 815 files changed, 45211 insertions(+), 201 deletions(-) create mode 100644 build/config.go create mode 100755 templates/oam/workloads/v0.0.1/egress.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.0.1/egress.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.0.1/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.0.1/httproutegroup.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.0.1/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.0.1/ingressbackend.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.0.1/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.0.1/meshconfig.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.0.1/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.0.1/multiclusterservice.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.0.1/tcproute.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.0.1/tcproute.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.0.1/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.0.1/trafficsplit.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.0.1/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.0.1/traffictarget.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.0.10/egress.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.0.10/egress.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.0.10/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.0.10/httproutegroup.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.0.10/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.0.10/ingressbackend.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.0.10/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.0.10/meshconfig.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.0.10/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.0.10/multiclusterservice.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.0.10/tcproute.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.0.10/tcproute.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.0.10/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.0.10/trafficsplit.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.0.10/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.0.10/traffictarget.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.0.9/egress.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.0.9/egress.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.0.9/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.0.9/httproutegroup.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.0.9/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.0.9/ingressbackend.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.0.9/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.0.9/meshconfig.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.0.9/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.0.9/multiclusterservice.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.0.9/tcproute.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.0.9/tcproute.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.0.9/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.0.9/trafficsplit.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.0.9/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.0.9/traffictarget.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.1.0-rc.1/egress.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.1.0-rc.1/egress.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.1.0-rc.1/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.1.0-rc.1/httproutegroup.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.1.0-rc.1/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.1.0-rc.1/ingressbackend.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.1.0-rc.1/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.1.0-rc.1/meshconfig.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.1.0-rc.1/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.1.0-rc.1/multiclusterservice.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.1.0-rc.1/tcproute.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.1.0-rc.1/tcproute.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.1.0-rc.1/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.1.0-rc.1/trafficsplit.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.1.0-rc.1/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.1.0-rc.1/traffictarget.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.1.0/egress.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.1.0/egress.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.1.0/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.1.0/httproutegroup.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.1.0/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.1.0/ingressbackend.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.1.0/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.1.0/meshconfig.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.1.0/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.1.0/multiclusterservice.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.1.0/tcproute.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.1.0/tcproute.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.1.0/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.1.0/trafficsplit.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.1.0/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.1.0/traffictarget.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.10.0-rc.1/egress.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.10.0-rc.1/egress.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.10.0-rc.1/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.10.0-rc.1/httproutegroup.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.10.0-rc.1/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.10.0-rc.1/ingressbackend.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.10.0-rc.1/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.10.0-rc.1/meshconfig.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.10.0-rc.1/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.10.0-rc.1/multiclusterservice.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.10.0-rc.1/tcproute.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.10.0-rc.1/tcproute.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.10.0-rc.1/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.10.0-rc.1/trafficsplit.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.10.0-rc.1/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.10.0-rc.1/traffictarget.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.10.0-rc.2/egress.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.10.0-rc.2/egress.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.10.0-rc.2/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.10.0-rc.2/httproutegroup.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.10.0-rc.2/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.10.0-rc.2/ingressbackend.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.10.0-rc.2/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.10.0-rc.2/meshconfig.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.10.0-rc.2/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.10.0-rc.2/multiclusterservice.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.10.0-rc.2/tcproute.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.10.0-rc.2/tcproute.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.10.0-rc.2/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.10.0-rc.2/trafficsplit.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.10.0-rc.2/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.10.0-rc.2/traffictarget.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.10.0/egress.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.10.0/egress.meshery.layer5.io_definition.json rename templates/oam/workloads/{workloads-v0.10.0 => v0.10.0}/egress.osm.meshery.layer5io.schema.json (100%) rename templates/oam/workloads/{workloads-v0.10.0 => v0.10.0}/egress.osm_definition.json (100%) create mode 100755 templates/oam/workloads/v0.10.0/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.10.0/httproutegroup.meshery.layer5.io_definition.json rename templates/oam/workloads/{workloads-v0.10.0 => v0.10.0}/httproutegroup.osm.meshery.layer5io.schema.json (100%) rename templates/oam/workloads/{workloads-v0.10.0 => v0.10.0}/httproutegroup.osm_definition.json (100%) create mode 100755 templates/oam/workloads/v0.10.0/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.10.0/ingressbackend.meshery.layer5.io_definition.json rename templates/oam/workloads/{workloads-v0.10.0 => v0.10.0}/ingressbackend.osm.meshery.layer5io.schema.json (100%) rename templates/oam/workloads/{workloads-v0.10.0 => v0.10.0}/ingressbackend.osm_definition.json (100%) create mode 100755 templates/oam/workloads/v0.10.0/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.10.0/meshconfig.meshery.layer5.io_definition.json rename templates/oam/workloads/{workloads-v0.10.0 => v0.10.0}/meshconfig.osm.meshery.layer5io.schema.json (100%) rename templates/oam/workloads/{workloads-v0.10.0 => v0.10.0}/meshconfig.osm_definition.json (100%) create mode 100755 templates/oam/workloads/v0.10.0/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.10.0/multiclusterservice.meshery.layer5.io_definition.json rename templates/oam/workloads/{workloads-v0.10.0 => v0.10.0}/multiclusterservice.osm.meshery.layer5io.schema.json (100%) rename templates/oam/workloads/{workloads-v0.10.0 => v0.10.0}/multiclusterservice.osm_definition.json (100%) create mode 100755 templates/oam/workloads/v0.10.0/tcproute.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.10.0/tcproute.meshery.layer5.io_definition.json rename templates/oam/workloads/{workloads-v0.10.0 => v0.10.0}/tcproute.osm.meshery.layer5io.schema.json (100%) rename templates/oam/workloads/{workloads-v0.10.0 => v0.10.0}/tcproute.osm_definition.json (100%) create mode 100755 templates/oam/workloads/v0.10.0/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.10.0/trafficsplit.meshery.layer5.io_definition.json rename templates/oam/workloads/{workloads-v0.10.0 => v0.10.0}/trafficsplit.osm.meshery.layer5io.schema.json (100%) rename templates/oam/workloads/{workloads-v0.10.0 => v0.10.0}/trafficsplit.osm_definition.json (100%) create mode 100755 templates/oam/workloads/v0.10.0/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.10.0/traffictarget.meshery.layer5.io_definition.json rename templates/oam/workloads/{workloads-v0.10.0 => v0.10.0}/traffictarget.osm.meshery.layer5io.schema.json (100%) rename templates/oam/workloads/{workloads-v0.10.0 => v0.10.0}/traffictarget.osm_definition.json (100%) create mode 100755 templates/oam/workloads/v0.11.0-rc.1/egress.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.11.0-rc.1/egress.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.11.0-rc.1/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.11.0-rc.1/httproutegroup.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.11.0-rc.1/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.11.0-rc.1/ingressbackend.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.11.0-rc.1/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.11.0-rc.1/meshconfig.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.11.0-rc.1/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.11.0-rc.1/multiclusterservice.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.11.0-rc.1/tcproute.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.11.0-rc.1/tcproute.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.11.0-rc.1/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.11.0-rc.1/trafficsplit.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.11.0-rc.1/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.11.0-rc.1/traffictarget.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.11.0-rc.3/egress.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.11.0-rc.3/egress.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.11.0-rc.3/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.11.0-rc.3/httproutegroup.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.11.0-rc.3/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.11.0-rc.3/ingressbackend.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.11.0-rc.3/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.11.0-rc.3/meshconfig.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.11.0-rc.3/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.11.0-rc.3/multiclusterservice.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.11.0-rc.3/tcproute.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.11.0-rc.3/tcproute.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.11.0-rc.3/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.11.0-rc.3/trafficsplit.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.11.0-rc.3/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.11.0-rc.3/traffictarget.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.11.0/egress.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.11.0/egress.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.11.0/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.11.0/httproutegroup.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.11.0/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.11.0/ingressbackend.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.11.0/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.11.0/meshconfig.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.11.0/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.11.0/multiclusterservice.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.11.0/tcproute.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.11.0/tcproute.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.11.0/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.11.0/trafficsplit.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.11.0/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.11.0/traffictarget.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.11.1-rc.1/egress.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.11.1-rc.1/egress.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.11.1-rc.1/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.11.1-rc.1/httproutegroup.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.11.1-rc.1/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.11.1-rc.1/ingressbackend.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.11.1-rc.1/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.11.1-rc.1/meshconfig.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.11.1-rc.1/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.11.1-rc.1/multiclusterservice.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.11.1-rc.1/tcproute.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.11.1-rc.1/tcproute.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.11.1-rc.1/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.11.1-rc.1/trafficsplit.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.11.1-rc.1/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.11.1-rc.1/traffictarget.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.11.1/egress.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.11.1/egress.meshery.layer5.io_definition.json rename templates/oam/workloads/{workloads-v0.11.1 => v0.11.1}/egress.osm.meshery.layer5io.schema.json (100%) rename templates/oam/workloads/{workloads-v0.11.1 => v0.11.1}/egress.osm_definition.json (100%) create mode 100755 templates/oam/workloads/v0.11.1/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.11.1/httproutegroup.meshery.layer5.io_definition.json rename templates/oam/workloads/{workloads-v0.11.1 => v0.11.1}/httproutegroup.osm.meshery.layer5io.schema.json (100%) rename templates/oam/workloads/{workloads-v0.11.1 => v0.11.1}/httproutegroup.osm_definition.json (100%) create mode 100755 templates/oam/workloads/v0.11.1/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.11.1/ingressbackend.meshery.layer5.io_definition.json rename templates/oam/workloads/{workloads-v0.11.1 => v0.11.1}/ingressbackend.osm.meshery.layer5io.schema.json (100%) rename templates/oam/workloads/{workloads-v0.11.1 => v0.11.1}/ingressbackend.osm_definition.json (100%) create mode 100755 templates/oam/workloads/v0.11.1/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.11.1/meshconfig.meshery.layer5.io_definition.json rename templates/oam/workloads/{workloads-v0.11.1 => v0.11.1}/meshconfig.osm.meshery.layer5io.schema.json (100%) rename templates/oam/workloads/{workloads-v0.11.1 => v0.11.1}/meshconfig.osm_definition.json (100%) create mode 100755 templates/oam/workloads/v0.11.1/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.11.1/multiclusterservice.meshery.layer5.io_definition.json rename templates/oam/workloads/{workloads-v0.11.1 => v0.11.1}/multiclusterservice.osm.meshery.layer5io.schema.json (100%) rename templates/oam/workloads/{workloads-v0.11.1 => v0.11.1}/multiclusterservice.osm_definition.json (100%) create mode 100755 templates/oam/workloads/v0.11.1/tcproute.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.11.1/tcproute.meshery.layer5.io_definition.json rename templates/oam/workloads/{workloads-v0.11.1 => v0.11.1}/tcproute.osm.meshery.layer5io.schema.json (100%) rename templates/oam/workloads/{workloads-v0.11.1 => v0.11.1}/tcproute.osm_definition.json (100%) create mode 100755 templates/oam/workloads/v0.11.1/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.11.1/trafficsplit.meshery.layer5.io_definition.json rename templates/oam/workloads/{workloads-v0.11.1 => v0.11.1}/trafficsplit.osm.meshery.layer5io.schema.json (100%) rename templates/oam/workloads/{workloads-v0.11.1 => v0.11.1}/trafficsplit.osm_definition.json (100%) create mode 100755 templates/oam/workloads/v0.11.1/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.11.1/traffictarget.meshery.layer5.io_definition.json rename templates/oam/workloads/{workloads-v0.11.1 => v0.11.1}/traffictarget.osm.meshery.layer5io.schema.json (100%) rename templates/oam/workloads/{workloads-v0.11.1 => v0.11.1}/traffictarget.osm_definition.json (100%) create mode 100755 templates/oam/workloads/v0.11.2/egress.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.11.2/egress.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.11.2/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.11.2/httproutegroup.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.11.2/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.11.2/ingressbackend.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.11.2/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.11.2/meshconfig.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.11.2/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.11.2/multiclusterservice.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.11.2/tcproute.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.11.2/tcproute.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.11.2/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.11.2/trafficsplit.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.11.2/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.11.2/traffictarget.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.2.0/egress.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.2.0/egress.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.2.0/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.2.0/httproutegroup.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.2.0/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.2.0/ingressbackend.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.2.0/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.2.0/meshconfig.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.2.0/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.2.0/multiclusterservice.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.2.0/tcproute.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.2.0/tcproute.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.2.0/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.2.0/trafficsplit.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.2.0/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.2.0/traffictarget.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.3.0/egress.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.3.0/egress.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.3.0/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.3.0/httproutegroup.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.3.0/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.3.0/ingressbackend.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.3.0/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.3.0/meshconfig.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.3.0/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.3.0/multiclusterservice.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.3.0/tcproute.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.3.0/tcproute.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.3.0/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.3.0/trafficsplit.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.3.0/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.3.0/traffictarget.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.4.0/egress.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.4.0/egress.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.4.0/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.4.0/httproutegroup.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.4.0/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.4.0/ingressbackend.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.4.0/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.4.0/meshconfig.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.4.0/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.4.0/multiclusterservice.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.4.0/tcproute.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.4.0/tcproute.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.4.0/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.4.0/trafficsplit.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.4.0/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.4.0/traffictarget.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.4.1/egress.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.4.1/egress.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.4.1/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.4.1/httproutegroup.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.4.1/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.4.1/ingressbackend.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.4.1/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.4.1/meshconfig.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.4.1/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.4.1/multiclusterservice.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.4.1/tcproute.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.4.1/tcproute.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.4.1/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.4.1/trafficsplit.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.4.1/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.4.1/traffictarget.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.4.2/egress.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.4.2/egress.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.4.2/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.4.2/httproutegroup.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.4.2/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.4.2/ingressbackend.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.4.2/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.4.2/meshconfig.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.4.2/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.4.2/multiclusterservice.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.4.2/tcproute.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.4.2/tcproute.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.4.2/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.4.2/trafficsplit.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.4.2/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.4.2/traffictarget.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.5.0-rc.1/egress.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.5.0-rc.1/egress.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.5.0-rc.1/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.5.0-rc.1/httproutegroup.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.5.0-rc.1/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.5.0-rc.1/ingressbackend.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.5.0-rc.1/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.5.0-rc.1/meshconfig.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.5.0-rc.1/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.5.0-rc.1/multiclusterservice.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.5.0-rc.1/tcproute.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.5.0-rc.1/tcproute.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.5.0-rc.1/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.5.0-rc.1/trafficsplit.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.5.0-rc.1/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.5.0-rc.1/traffictarget.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.5.0/egress.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.5.0/egress.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.5.0/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.5.0/httproutegroup.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.5.0/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.5.0/ingressbackend.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.5.0/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.5.0/meshconfig.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.5.0/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.5.0/multiclusterservice.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.5.0/tcproute.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.5.0/tcproute.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.5.0/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.5.0/trafficsplit.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.5.0/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.5.0/traffictarget.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.6.0-rc.1/egress.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.6.0-rc.1/egress.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.6.0-rc.1/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.6.0-rc.1/httproutegroup.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.6.0-rc.1/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.6.0-rc.1/ingressbackend.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.6.0-rc.1/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.6.0-rc.1/meshconfig.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.6.0-rc.1/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.6.0-rc.1/multiclusterservice.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.6.0-rc.1/tcproute.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.6.0-rc.1/tcproute.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.6.0-rc.1/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.6.0-rc.1/trafficsplit.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.6.0-rc.1/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.6.0-rc.1/traffictarget.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.6.0/egress.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.6.0/egress.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.6.0/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.6.0/httproutegroup.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.6.0/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.6.0/ingressbackend.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.6.0/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.6.0/meshconfig.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.6.0/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.6.0/multiclusterservice.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.6.0/tcproute.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.6.0/tcproute.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.6.0/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.6.0/trafficsplit.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.6.0/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.6.0/traffictarget.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.6.1/egress.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.6.1/egress.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.6.1/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.6.1/httproutegroup.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.6.1/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.6.1/ingressbackend.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.6.1/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.6.1/meshconfig.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.6.1/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.6.1/multiclusterservice.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.6.1/tcproute.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.6.1/tcproute.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.6.1/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.6.1/trafficsplit.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.6.1/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.6.1/traffictarget.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.7.0-rc.1/egress.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.7.0-rc.1/egress.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.7.0-rc.1/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.7.0-rc.1/httproutegroup.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.7.0-rc.1/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.7.0-rc.1/ingressbackend.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.7.0-rc.1/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.7.0-rc.1/meshconfig.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.7.0-rc.1/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.7.0-rc.1/multiclusterservice.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.7.0-rc.1/tcproute.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.7.0-rc.1/tcproute.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.7.0-rc.1/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.7.0-rc.1/trafficsplit.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.7.0-rc.1/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.7.0-rc.1/traffictarget.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.7.0/egress.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.7.0/egress.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.7.0/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.7.0/httproutegroup.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.7.0/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.7.0/ingressbackend.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.7.0/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.7.0/meshconfig.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.7.0/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.7.0/multiclusterservice.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.7.0/tcproute.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.7.0/tcproute.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.7.0/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.7.0/trafficsplit.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.7.0/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.7.0/traffictarget.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.8.0-rc.1/egress.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.8.0-rc.1/egress.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.8.0-rc.1/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.8.0-rc.1/httproutegroup.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.8.0-rc.1/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.8.0-rc.1/ingressbackend.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.8.0-rc.1/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.8.0-rc.1/meshconfig.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.8.0-rc.1/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.8.0-rc.1/multiclusterservice.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.8.0-rc.1/tcproute.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.8.0-rc.1/tcproute.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.8.0-rc.1/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.8.0-rc.1/trafficsplit.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.8.0-rc.1/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.8.0-rc.1/traffictarget.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.8.0-rc.2/egress.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.8.0-rc.2/egress.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.8.0-rc.2/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.8.0-rc.2/httproutegroup.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.8.0-rc.2/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.8.0-rc.2/ingressbackend.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.8.0-rc.2/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.8.0-rc.2/meshconfig.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.8.0-rc.2/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.8.0-rc.2/multiclusterservice.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.8.0-rc.2/tcproute.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.8.0-rc.2/tcproute.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.8.0-rc.2/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.8.0-rc.2/trafficsplit.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.8.0-rc.2/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.8.0-rc.2/traffictarget.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.8.0/egress.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.8.0/egress.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.8.0/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.8.0/httproutegroup.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.8.0/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.8.0/ingressbackend.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.8.0/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.8.0/meshconfig.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.8.0/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.8.0/multiclusterservice.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.8.0/tcproute.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.8.0/tcproute.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.8.0/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.8.0/trafficsplit.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.8.0/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.8.0/traffictarget.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.8.1-rc.1/egress.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.8.1-rc.1/egress.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.8.1-rc.1/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.8.1-rc.1/httproutegroup.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.8.1-rc.1/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.8.1-rc.1/ingressbackend.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.8.1-rc.1/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.8.1-rc.1/meshconfig.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.8.1-rc.1/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.8.1-rc.1/multiclusterservice.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.8.1-rc.1/tcproute.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.8.1-rc.1/tcproute.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.8.1-rc.1/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.8.1-rc.1/trafficsplit.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.8.1-rc.1/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.8.1-rc.1/traffictarget.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.8.1-rc.2/egress.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.8.1-rc.2/egress.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.8.1-rc.2/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.8.1-rc.2/httproutegroup.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.8.1-rc.2/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.8.1-rc.2/ingressbackend.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.8.1-rc.2/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.8.1-rc.2/meshconfig.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.8.1-rc.2/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.8.1-rc.2/multiclusterservice.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.8.1-rc.2/tcproute.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.8.1-rc.2/tcproute.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.8.1-rc.2/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.8.1-rc.2/trafficsplit.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.8.1-rc.2/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.8.1-rc.2/traffictarget.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.8.1/egress.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.8.1/egress.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.8.1/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.8.1/httproutegroup.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.8.1/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.8.1/ingressbackend.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.8.1/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.8.1/meshconfig.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.8.1/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.8.1/multiclusterservice.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.8.1/tcproute.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.8.1/tcproute.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.8.1/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.8.1/trafficsplit.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.8.1/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.8.1/traffictarget.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.8.2/egress.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.8.2/egress.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.8.2/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.8.2/httproutegroup.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.8.2/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.8.2/ingressbackend.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.8.2/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.8.2/meshconfig.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.8.2/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.8.2/multiclusterservice.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.8.2/tcproute.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.8.2/tcproute.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.8.2/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.8.2/trafficsplit.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.8.2/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.8.2/traffictarget.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.8.3-rc.1/egress.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.8.3-rc.1/egress.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.8.3-rc.1/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.8.3-rc.1/httproutegroup.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.8.3-rc.1/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.8.3-rc.1/ingressbackend.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.8.3-rc.1/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.8.3-rc.1/meshconfig.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.8.3-rc.1/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.8.3-rc.1/multiclusterservice.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.8.3-rc.1/tcproute.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.8.3-rc.1/tcproute.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.8.3-rc.1/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.8.3-rc.1/trafficsplit.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.8.3-rc.1/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.8.3-rc.1/traffictarget.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.8.3/egress.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.8.3/egress.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.8.3/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.8.3/httproutegroup.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.8.3/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.8.3/ingressbackend.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.8.3/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.8.3/meshconfig.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.8.3/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.8.3/multiclusterservice.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.8.3/tcproute.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.8.3/tcproute.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.8.3/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.8.3/trafficsplit.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.8.3/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.8.3/traffictarget.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.8.4-rc.1/egress.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.8.4-rc.1/egress.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.8.4-rc.1/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.8.4-rc.1/httproutegroup.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.8.4-rc.1/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.8.4-rc.1/ingressbackend.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.8.4-rc.1/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.8.4-rc.1/meshconfig.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.8.4-rc.1/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.8.4-rc.1/multiclusterservice.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.8.4-rc.1/tcproute.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.8.4-rc.1/tcproute.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.8.4-rc.1/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.8.4-rc.1/trafficsplit.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.8.4-rc.1/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.8.4-rc.1/traffictarget.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.8.4/egress.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.8.4/egress.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.8.4/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.8.4/httproutegroup.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.8.4/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.8.4/ingressbackend.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.8.4/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.8.4/meshconfig.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.8.4/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.8.4/multiclusterservice.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.8.4/tcproute.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.8.4/tcproute.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.8.4/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.8.4/trafficsplit.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.8.4/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.8.4/traffictarget.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.9.0-rc.1/egress.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.9.0-rc.1/egress.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.9.0-rc.1/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.9.0-rc.1/httproutegroup.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.9.0-rc.1/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.9.0-rc.1/ingressbackend.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.9.0-rc.1/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.9.0-rc.1/meshconfig.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.9.0-rc.1/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.9.0-rc.1/multiclusterservice.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.9.0-rc.1/tcproute.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.9.0-rc.1/tcproute.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.9.0-rc.1/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.9.0-rc.1/trafficsplit.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.9.0-rc.1/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.9.0-rc.1/traffictarget.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.9.0-rc.2/egress.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.9.0-rc.2/egress.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.9.0-rc.2/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.9.0-rc.2/httproutegroup.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.9.0-rc.2/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.9.0-rc.2/ingressbackend.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.9.0-rc.2/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.9.0-rc.2/meshconfig.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.9.0-rc.2/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.9.0-rc.2/multiclusterservice.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.9.0-rc.2/tcproute.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.9.0-rc.2/tcproute.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.9.0-rc.2/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.9.0-rc.2/trafficsplit.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.9.0-rc.2/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.9.0-rc.2/traffictarget.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.9.0/egress.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.9.0/egress.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.9.0/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.9.0/httproutegroup.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.9.0/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.9.0/ingressbackend.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.9.0/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.9.0/meshconfig.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.9.0/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.9.0/multiclusterservice.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.9.0/tcproute.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.9.0/tcproute.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.9.0/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.9.0/trafficsplit.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.9.0/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.9.0/traffictarget.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.9.1-rc.1/egress.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.9.1-rc.1/egress.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.9.1-rc.1/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.9.1-rc.1/httproutegroup.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.9.1-rc.1/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.9.1-rc.1/ingressbackend.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.9.1-rc.1/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.9.1-rc.1/meshconfig.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.9.1-rc.1/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.9.1-rc.1/multiclusterservice.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.9.1-rc.1/tcproute.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.9.1-rc.1/tcproute.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.9.1-rc.1/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.9.1-rc.1/trafficsplit.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.9.1-rc.1/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.9.1-rc.1/traffictarget.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.9.1/egress.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.9.1/egress.meshery.layer5.io_definition.json rename templates/oam/workloads/{workloads-v0.9.1 => v0.9.1}/egress.osm.meshery.layer5io.schema.json (100%) rename templates/oam/workloads/{workloads-v0.9.1 => v0.9.1}/egress.osm_definition.json (100%) create mode 100755 templates/oam/workloads/v0.9.1/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.9.1/httproutegroup.meshery.layer5.io_definition.json rename templates/oam/workloads/{workloads-v0.9.1 => v0.9.1}/httproutegroup.osm.meshery.layer5io.schema.json (100%) rename templates/oam/workloads/{workloads-v0.9.1 => v0.9.1}/httproutegroup.osm_definition.json (100%) create mode 100755 templates/oam/workloads/v0.9.1/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.9.1/ingressbackend.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.9.1/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.9.1/meshconfig.meshery.layer5.io_definition.json rename templates/oam/workloads/{workloads-v0.9.1 => v0.9.1}/meshconfig.osm.meshery.layer5io.schema.json (100%) rename templates/oam/workloads/{workloads-v0.9.1 => v0.9.1}/meshconfig.osm_definition.json (100%) create mode 100755 templates/oam/workloads/v0.9.1/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.9.1/multiclusterservice.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.9.1/tcproute.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.9.1/tcproute.meshery.layer5.io_definition.json rename templates/oam/workloads/{workloads-v0.9.1 => v0.9.1}/tcproute.osm.meshery.layer5io.schema.json (100%) rename templates/oam/workloads/{workloads-v0.9.1 => v0.9.1}/tcproute.osm_definition.json (100%) create mode 100755 templates/oam/workloads/v0.9.1/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.9.1/trafficsplit.meshery.layer5.io_definition.json rename templates/oam/workloads/{workloads-v0.9.1 => v0.9.1}/trafficsplit.osm.meshery.layer5io.schema.json (100%) rename templates/oam/workloads/{workloads-v0.9.1 => v0.9.1}/trafficsplit.osm_definition.json (100%) create mode 100755 templates/oam/workloads/v0.9.1/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.9.1/traffictarget.meshery.layer5.io_definition.json rename templates/oam/workloads/{workloads-v0.9.1 => v0.9.1}/traffictarget.osm.meshery.layer5io.schema.json (100%) rename templates/oam/workloads/{workloads-v0.9.1 => v0.9.1}/traffictarget.osm_definition.json (100%) create mode 100755 templates/oam/workloads/v0.9.2-rc.1/egress.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.9.2-rc.1/egress.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.9.2-rc.1/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.9.2-rc.1/httproutegroup.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.9.2-rc.1/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.9.2-rc.1/ingressbackend.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.9.2-rc.1/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.9.2-rc.1/meshconfig.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.9.2-rc.1/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.9.2-rc.1/multiclusterservice.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.9.2-rc.1/tcproute.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.9.2-rc.1/tcproute.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.9.2-rc.1/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.9.2-rc.1/trafficsplit.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.9.2-rc.1/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.9.2-rc.1/traffictarget.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.9.2/egress.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.9.2/egress.meshery.layer5.io_definition.json rename templates/oam/workloads/{workloads-v0.9.2 => v0.9.2}/egress.osm.meshery.layer5io.schema.json (100%) rename templates/oam/workloads/{workloads-v0.9.2 => v0.9.2}/egress.osm_definition.json (100%) create mode 100755 templates/oam/workloads/v0.9.2/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.9.2/httproutegroup.meshery.layer5.io_definition.json rename templates/oam/workloads/{workloads-v0.9.2 => v0.9.2}/httproutegroup.osm.meshery.layer5io.schema.json (100%) rename templates/oam/workloads/{workloads-v0.9.2 => v0.9.2}/httproutegroup.osm_definition.json (100%) create mode 100755 templates/oam/workloads/v0.9.2/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.9.2/ingressbackend.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.9.2/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.9.2/meshconfig.meshery.layer5.io_definition.json rename templates/oam/workloads/{workloads-v0.9.2 => v0.9.2}/meshconfig.osm.meshery.layer5io.schema.json (100%) rename templates/oam/workloads/{workloads-v0.9.2 => v0.9.2}/meshconfig.osm_definition.json (100%) create mode 100755 templates/oam/workloads/v0.9.2/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.9.2/multiclusterservice.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v0.9.2/tcproute.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.9.2/tcproute.meshery.layer5.io_definition.json rename templates/oam/workloads/{workloads-v0.9.2 => v0.9.2}/tcproute.osm.meshery.layer5io.schema.json (100%) rename templates/oam/workloads/{workloads-v0.9.2 => v0.9.2}/tcproute.osm_definition.json (100%) create mode 100755 templates/oam/workloads/v0.9.2/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.9.2/trafficsplit.meshery.layer5.io_definition.json rename templates/oam/workloads/{workloads-v0.9.2 => v0.9.2}/trafficsplit.osm.meshery.layer5io.schema.json (100%) rename templates/oam/workloads/{workloads-v0.9.2 => v0.9.2}/trafficsplit.osm_definition.json (100%) create mode 100755 templates/oam/workloads/v0.9.2/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v0.9.2/traffictarget.meshery.layer5.io_definition.json rename templates/oam/workloads/{workloads-v0.9.2 => v0.9.2}/traffictarget.osm.meshery.layer5io.schema.json (100%) rename templates/oam/workloads/{workloads-v0.9.2 => v0.9.2}/traffictarget.osm_definition.json (100%) create mode 100755 templates/oam/workloads/v1.0.0-rc.1/egress.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v1.0.0-rc.1/egress.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v1.0.0-rc.1/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v1.0.0-rc.1/httproutegroup.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v1.0.0-rc.1/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v1.0.0-rc.1/ingressbackend.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v1.0.0-rc.1/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v1.0.0-rc.1/meshconfig.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v1.0.0-rc.1/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v1.0.0-rc.1/multiclusterservice.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v1.0.0-rc.1/tcproute.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v1.0.0-rc.1/tcproute.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v1.0.0-rc.1/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v1.0.0-rc.1/trafficsplit.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v1.0.0-rc.1/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v1.0.0-rc.1/traffictarget.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v1.0.0-rc.2/egress.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v1.0.0-rc.2/egress.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v1.0.0-rc.2/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v1.0.0-rc.2/httproutegroup.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v1.0.0-rc.2/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v1.0.0-rc.2/ingressbackend.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v1.0.0-rc.2/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v1.0.0-rc.2/meshconfig.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v1.0.0-rc.2/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v1.0.0-rc.2/multiclusterservice.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v1.0.0-rc.2/tcproute.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v1.0.0-rc.2/tcproute.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v1.0.0-rc.2/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v1.0.0-rc.2/trafficsplit.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v1.0.0-rc.2/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v1.0.0-rc.2/traffictarget.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v1.0.0-rc.3/egress.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v1.0.0-rc.3/egress.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v1.0.0-rc.3/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v1.0.0-rc.3/httproutegroup.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v1.0.0-rc.3/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v1.0.0-rc.3/ingressbackend.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v1.0.0-rc.3/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v1.0.0-rc.3/meshconfig.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v1.0.0-rc.3/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v1.0.0-rc.3/multiclusterservice.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v1.0.0-rc.3/tcproute.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v1.0.0-rc.3/tcproute.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v1.0.0-rc.3/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v1.0.0-rc.3/trafficsplit.meshery.layer5.io_definition.json create mode 100755 templates/oam/workloads/v1.0.0-rc.3/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json create mode 100755 templates/oam/workloads/v1.0.0-rc.3/traffictarget.meshery.layer5.io_definition.json diff --git a/.github/workflows/update-oam-defs.yml b/.github/workflows/update-oam-defs.yml index 6f4b89f6..a2d99d50 100644 --- a/.github/workflows/update-oam-defs.yml +++ b/.github/workflows/update-oam-defs.yml @@ -1,40 +1,12 @@ -name: Meshery Open Service Mesh Pattern Components Generator +name: Meshery OSM Pattern Components Generator on: push: branches: - - "master" + - 'master' + schedule: + - cron: "0 0 * * *" jobs: - check_osm_version: - name: Check OSM Version - runs-on: ubuntu-latest - outputs: - NEW_OSM_VERSION: ${{ steps.glrt.outputs.release }} - EXISTS: ${{ env.EXISTS }} - steps: - - name: Get latest release tag - id: glrt - uses: pozetroninc/github-action-get-latest-release@master - with: - repository: openservicemesh/osm - excludes: prerelease, draft - - name: Check out code - uses: actions/checkout@master - with: - fetch-depth: 1 - - name: Check if manifests for latest release exist - run: | - if [ -d templates/oam/workloads/workloads-${{ steps.glrt.outputs.release }} ] - then - echo "EXISTS=true" > $GITHUB_ENV - else - export "EXISTS=false" > $GITHUB_ENV - fi - generator: - name: Generate and push OAM definitions - needs: [check_osm_version] - if: ${{ !needs.check_osm_version.outputs.EXISTS }} - env: - NEW_OSM_VERSION: ${{ needs.check_osm_version.outputs.NEW_OSM_VERSION }} + GenerateComponents: runs-on: ubuntu-latest steps: - name: Check out code @@ -43,55 +15,23 @@ jobs: fetch-depth: 1 token: ${{ secrets.GH_ACCESS_TOKEN }} ref: "master" - - name: Get OSM manifests - run: | - mkdir ./osm-crds - cd ./osm-crds - curl --remote-name-all `curl -H "Accept: application/vnd.github.VERSION.raw" https://api.github.com/repos/openservicemesh/osm/contents/cmd/osm-bootstrap/crds\?ref\=$NEW_OSM_VERSION | jq 'map(.download_url) | .[]' | tr -d '"'` - cd .. - awk 'FNR==1 && NR>1 { printf("\n%s\n\n","---") } 1' osm-crds/*.yaml > ~/osm.yaml - - name: Build jsonschema util - run: | - curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | bash - export NVM_DIR="$HOME/.nvm" - [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm - nvm install v14.15.3 - nvm install-latest-npm - git clone https://github.com/layer5io/kubeopenapi-jsonschema util - cd util - npm i; npm i nexe -g - make linux - - name: Generate Workload definitions + - name: Setup Go + uses: actions/setup-go@v1 + with: + go-version: 1.17 + - name: Run adapter to create components run: | - dirPath=../templates/oam/workloads/workloads-$NEW_OSM_VERSION - cd util - mkdir -p $dirPath - meshName=osm - smpMeshName=OPEN_SERVICE_MESH - template='{"apiVersion":"core.oam.dev/v1alpha1","kind":"WorkloadDefinition","metadata":{},"spec":{"definitionRef":{},"metadata":{"@type":"pattern.meshery.io/mesh/workload","meshVersion":"'$NEW_OSM_VERSION'","meshName":"'$smpMeshName'","k8sAPIVersion":null,"k8sKind":""}}}' - crds=$(./kubeopenapi-jsonschema --location ~/osm.yaml -t yaml --filter '$[?(@.kind=="CustomResourceDefinition")]' -o json --o-filter '$..["spec"]["names"]["kind"]' | jq '.[]') - for t in ${crds[@]}; do - nameUpper=`echo $t | tr -d '"'` - nameLower=`echo $t | tr -d '"' | tr '[:upper:]' '[:lower:]'` - definitionRef=$(printf %s.osm.meshery.layer5.io $nameLower) - apiVersion=$(./kubeopenapi-jsonschema --location ~/osm.yaml -t yaml --filter '$[?(@.kind=="CustomResourceDefinition" && @.spec.names.kind=='$t')]..spec.versions[0]' --o-filter "$[].name" -o json | jq '.[]' | tr -d '"') - apiGroup=$(./kubeopenapi-jsonschema --location ~/osm.yaml -t yaml --filter '$[?(@.kind=="CustomResourceDefinition" && @.spec.names.kind=='$t')]..spec' --o-filter "$[].group" -o json | jq '.[]' | tr -d '"') - ./kubeopenapi-jsonschema --location ~/osm.yaml -t yaml --filter '$[?(@.kind=="CustomResourceDefinition" && @.spec.names.kind=='$t')]..openAPIV3Schema.properties.spec' --o-filter "$[]" -o json |\ - jq ' - .[] - | .version = "'$NEW_OSM_VERSION'" - | ."object-type" = "'$nameUpper'" - | ."service-mesh" = "'$meshName'" ' > $dirPath/$nameLower.osm.meshery.layer5io.schema.json - echo $template |\ - jq ' - ."metadata"."name" = "'$(printf %s.OSM $nameUpper)'" - | ."spec"."metadata"."k8sAPIVersion" = "'$(printf $apiGroup/$apiVersion $apiGroup $apiVersion)'" - | ."spec"."metadata"."k8sKind" = "'$nameUpper'" - | ."spec"."definitionRef"."name"="'$definitionRef'"' > $dirPath/$nameLower.osm_definition.json + touch log.txt + mkdir -p ~/.meshery/bin + (FORCE_DYNAMIC_REG=true DEBUG=true go run main.go > log.txt 2>&1) & + end=$((SECONDS+300)) + while [ $SECONDS -lt $end ]; do + if [ "$(cat log.txt | grep "Component Creation completed for version")" != "" ];then + echo "New components created" + break + fi done - - name: Cleanup - run: | - rm -rf util + rm log.txt - name: Commit changes uses: stefanzweifel/git-auto-commit-action@v4 with: @@ -100,5 +40,5 @@ jobs: commit_user_email: ci@layer5.io commit_author: ${{ github.actor }} <${{ github.actor }}@users.noreply.github.com> commit_options: "--signoff" - commit_message: "[Patterns] Pattern components generated from latest osm manifests" + commit_message: "[Patterns] Pattern components generated from latest OSM manifests" branch: master diff --git a/Dockerfile b/Dockerfile index af2a612a..b979725d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -7,6 +7,7 @@ RUN go mod download COPY main.go main.go COPY internal/ internal/ COPY osm/ osm/ +COPY build/ build/ RUN GOPROXY=https://proxy.golang.org,direct CGO_ENABLED=1 GOOS=linux GOARCH=amd64 GO111MODULE=on go build -ldflags="-w -s -X main.version=$VERSION -X main.gitsha=$GIT_COMMITSHA" -a -o meshery-osm main.go FROM alpine:3.15 as jsonschema-util diff --git a/build/config.go b/build/config.go new file mode 100644 index 00000000..16517034 --- /dev/null +++ b/build/config.go @@ -0,0 +1,57 @@ +package build + +import ( + "os" + "path/filepath" + "strings" + + "github.com/layer5io/meshery-adapter-library/adapter" + "github.com/layer5io/meshery-osm/internal/config" + + "github.com/layer5io/meshkit/utils" + "github.com/layer5io/meshkit/utils/manifests" + smp "github.com/layer5io/service-mesh-performance/spec" +) + +var DefaultGenerationMethod string +var LatestVersion string +var WorkloadPath string +var CRDnames []string +var OverrideURL string +var AllVersions []string + +//NewConfig creates the configuration for creating components +func NewConfig(version string) manifests.Config { + return manifests.Config{ + Name: smp.ServiceMesh_Type_name[int32(smp.ServiceMesh_OPEN_SERVICE_MESH)], + MeshVersion: version, + Filter: manifests.CrdFilter{ + RootFilter: []string{"$[?(@.kind==\"CustomResourceDefinition\")]"}, + NameFilter: []string{"$..[\"spec\"][\"names\"][\"kind\"]"}, + VersionFilter: []string{"$[0]..spec.versions[0]"}, + GroupFilter: []string{"$[0]..spec"}, + SpecFilter: []string{"$[0]..openAPIV3Schema.properties.spec"}, + ItrFilter: []string{"$[?(@.spec.names.kind"}, + ItrSpecFilter: []string{"$[?(@.spec.names.kind"}, + VField: "name", + GField: "group", + }, + } +} +func GetDefaultURL(crd string) string { + if OverrideURL != "" { + return OverrideURL + } + return strings.Join([]string{"https://raw.githubusercontent.com/openservicemesh/osm/main/cmd/osm-bootstrap/crds", crd}, "/") +} +func init() { + wd, _ := os.Getwd() + WorkloadPath = filepath.Join(wd, "templates", "oam", "workloads") + AllVersions, _ = utils.GetLatestReleaseTagsSorted("openservicemesh", "osm") + if len(AllVersions) == 0 { + return + } + CRDnames, _ = config.GetFileNames("openservicemesh", "osm", "/cmd/osm-bootstrap/crds/**") + LatestVersion = AllVersions[len(AllVersions)-1] + DefaultGenerationMethod = adapter.Manifests +} diff --git a/go.mod b/go.mod index 56ae3a15..b2a4ba16 100644 --- a/go.mod +++ b/go.mod @@ -5,8 +5,8 @@ go 1.15 replace github.com/kudobuilder/kuttl => github.com/layer5io/kuttl v0.4.1-0.20200806180306-b7e46afd657f require ( - github.com/layer5io/meshery-adapter-library v0.1.23 - github.com/layer5io/meshkit v0.2.36 + github.com/layer5io/meshery-adapter-library v0.5.2 + github.com/layer5io/meshkit v0.5.1 github.com/layer5io/service-mesh-performance v0.3.3 gopkg.in/yaml.v2 v2.4.0 k8s.io/apimachinery v0.21.0 diff --git a/go.sum b/go.sum index af69e37a..e98c1a24 100644 --- a/go.sum +++ b/go.sum @@ -59,34 +59,27 @@ github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBp github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= -github.com/DATA-DOG/go-sqlmock v1.4.1/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q5eFN3EC/SaM= github.com/DATA-DOG/go-sqlmock v1.5.0 h1:Shsta01QNfFxHCfpW6YH2STWB0MudeXXEWMr20OEh60= github.com/DATA-DOG/go-sqlmock v1.5.0/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q5eFN3EC/SaM= github.com/DataDog/sketches-go v0.0.1/go.mod h1:Q5DbzQ+3AkgGwymQO7aZFNP7ns2lZKGtvRBzRXfdi60= github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= github.com/MakeNowJust/heredoc v0.0.0-20170808103936-bb23615498cd h1:sjQovDkwrZp8u+gxLtPgKGjk5hCxuy2hrRejBTA9xFU= github.com/MakeNowJust/heredoc v0.0.0-20170808103936-bb23615498cd/go.mod h1:64YHyfSL2R96J44Nlwm39UHepQbyR5q10x7iYa1ks2E= -github.com/Masterminds/goutils v1.1.0/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU= github.com/Masterminds/goutils v1.1.1 h1:5nUrii3FMTL5diU80unEVvNevw1nH4+ZV4DSLVJLSYI= github.com/Masterminds/goutils v1.1.1/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU= github.com/Masterminds/semver v1.5.0 h1:H65muMkzWKEuNDnfl9d70GUjFniHKHRbFPGBuZ3QEww= github.com/Masterminds/semver v1.5.0/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y= -github.com/Masterminds/semver/v3 v3.1.0/go.mod h1:VPu/7SZ7ePZ3QOrcuXROw5FAcLl4a0cBrbBpGY/8hQs= github.com/Masterminds/semver/v3 v3.1.1 h1:hLg3sBzpNErnxhQtUy/mmLR2I9foDujNK030IGemrRc= github.com/Masterminds/semver/v3 v3.1.1/go.mod h1:VPu/7SZ7ePZ3QOrcuXROw5FAcLl4a0cBrbBpGY/8hQs= -github.com/Masterminds/sprig/v3 v3.1.0/go.mod h1:ONGMf7UfYGAbMXCZmQLy8x3lCDIPrEZE/rU8pmrbihA= github.com/Masterminds/sprig/v3 v3.2.2 h1:17jRggJu518dr3QaafizSXOjKYp94wKfABxUmyxvxX8= github.com/Masterminds/sprig/v3 v3.2.2/go.mod h1:UoaO7Yp8KlPnJIYWTFkMaqPUYKTfGFPhxNuwnnxkKlk= -github.com/Masterminds/squirrel v1.4.0/go.mod h1:yaPeOnPG5ZRwL9oKdTsO/prlkPbXWZlRVMQ/gGlzIuA= github.com/Masterminds/squirrel v1.5.0 h1:JukIZisrUXadA9pl3rMkjhiamxiB0cXiu+HGp/Y8cY8= github.com/Masterminds/squirrel v1.5.0/go.mod h1:NNaOrjSoIDfDA40n7sr2tPNZRfjzjA400rg+riTZj10= github.com/Masterminds/vcs v1.13.1/go.mod h1:N09YCmOQr6RLxC6UNHzuVwAdodYbbnycGHSmwVJjcKA= github.com/Microsoft/go-winio v0.4.14/go.mod h1:qXqCSQ3Xa7+6tgxaGTIe4Kpcdsi+P8jBhyzoq1bpyYA= -github.com/Microsoft/go-winio v0.4.15-0.20190919025122-fc70bd9a86b5/go.mod h1:tTuCMEN+UleMWgg9dVx4Hu52b1bJo+59jBh3ajtinzw= github.com/Microsoft/go-winio v0.4.16-0.20201130162521-d1ffc52c7331/go.mod h1:XB6nPKklQyQ7GC9LdcBEcBl8PF76WugXOPRXwdLnMv0= github.com/Microsoft/go-winio v0.4.16 h1:FtSW/jqD+l4ba5iPBj9CODVtgfYAD8w2wS923g/cFDk= github.com/Microsoft/go-winio v0.4.16/go.mod h1:XB6nPKklQyQ7GC9LdcBEcBl8PF76WugXOPRXwdLnMv0= -github.com/Microsoft/hcsshim v0.8.7/go.mod h1:OHd7sQqRFrYd3RmSgbgji+ctCwkbq2wbEYNSzOYtcBQ= github.com/Microsoft/hcsshim v0.8.14 h1:lbPVK25c1cu5xTLITwpUcxoA9vKrKErASPYygvouJns= github.com/Microsoft/hcsshim v0.8.14/go.mod h1:NtVKoYxQuTLx6gEq0L96c9Ju4JbRJ4nY2ow3VK6a9Lg= github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ= @@ -148,7 +141,6 @@ github.com/bitly/go-simplejson v0.5.0 h1:6IH+V8/tVMab511d5bn4M7EwGXZf9Hj6i2xSwkN github.com/bitly/go-simplejson v0.5.0/go.mod h1:cXHtHw4XUPsvGaxgjIAn8PhEWG9NfngEKAMDJEczWVA= github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84= github.com/bketelsen/crypt v0.0.4/go.mod h1:aI6NrJ0pMGgvZKL1iVgXLnfIFJtfV+bKCoqOes/6LfM= -github.com/blang/semver v3.1.0+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= github.com/blang/semver v3.5.0+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869 h1:DDGfHa7BWjL4YnC6+E63dPcxHo2sUxDIu8g3QgEJdRY= @@ -183,18 +175,14 @@ github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnht github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= -github.com/containerd/cgroups v0.0.0-20190919134610-bf292b21730f/go.mod h1:OApqhQ4XNSNC13gXIwDjhOQxjWa/NxkwZXJ1EvqT0ko= github.com/containerd/cgroups v0.0.0-20200531161412-0dbf7f05ba59 h1:qWj4qVYZ95vLWwqyNJCQg7rDsG5wPdze0UaPolH7DUk= github.com/containerd/cgroups v0.0.0-20200531161412-0dbf7f05ba59/go.mod h1:pA0z1pT8KYB3TCXK/ocprsh7MAkoW8bZVzPdih9snmM= github.com/containerd/console v0.0.0-20180822173158-c12b1e7919c1/go.mod h1:Tj/on1eG8kiEhd0+fhSDzsPAFESxzBBvdyEgyryXffw= github.com/containerd/containerd v1.2.9/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= -github.com/containerd/containerd v1.3.0-beta.2.0.20190828155532-0293cbd26c69/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= github.com/containerd/containerd v1.3.2/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= -github.com/containerd/containerd v1.3.4/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= github.com/containerd/containerd v1.4.4 h1:rtRG4N6Ct7GNssATwgpvMGfnjnwfjnu/Zs9W3Ikzq+M= github.com/containerd/containerd v1.4.4/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= github.com/containerd/continuity v0.0.0-20190426062206-aaeac12a7ffc/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= -github.com/containerd/continuity v0.0.0-20200107194136-26c1120b8d41/go.mod h1:Dq467ZllaHgAtVp4p1xUQWBrFXR9s/wyoTpG8zOJGkY= github.com/containerd/continuity v0.0.0-20201208142359-180525291bb7 h1:6ejg6Lkk8dskcM7wQ28gONkukbQkM4qpj4RnYbpFzrI= github.com/containerd/continuity v0.0.0-20201208142359-180525291bb7/go.mod h1:kR3BEg7bDFaEddKm54WSmrol1fKWDU1nKYkgrcgZT7Y= github.com/containerd/fifo v0.0.0-20190226154929-a9fb20d87448/go.mod h1:ODA38xgv3Kuk8dQz2ZQXpnv/UZZUHUCL7pnLehbXgQI= @@ -229,7 +217,6 @@ github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSs github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/daviddengcn/go-colortext v0.0.0-20160507010035-511bcaf42ccd/go.mod h1:dv4zxwHi5C/8AeI+4gX4dCWOIvNi7I6JCSX0HvlKPgE= -github.com/deislabs/oras v0.8.1/go.mod h1:Mx0rMSbBNaNfY9hjpccEnxkOqJL6KGjtxNHPLC4G4As= github.com/deislabs/oras v0.11.1 h1:oo2J/3vXdcti8cjFi8ghMOkx0OacONxHC8dhJ17NdJ0= github.com/deislabs/oras v0.11.1/go.mod h1:39lCtf8Q6WDC7ul9cnyWXONNzKvabEKk+AX+L0ImnQk= github.com/denisenkom/go-mssqldb v0.0.0-20191001013358-cfbb681360f0/go.mod h1:xbL0rPBG9cCiLr28tMa8zpbdarY27NDyej4t/EjAShU= @@ -238,7 +225,6 @@ github.com/dgrijalva/jwt-go v0.0.0-20170104182250-a601269ab70c/go.mod h1:E3ru+11 github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= github.com/dnaeon/go-vcr v1.0.1/go.mod h1:aBB1+wY4s93YsC3HHjMBMrwTj2R9FHDzUr9KyGc8n1E= -github.com/docker/cli v0.0.0-20200130152716-5d0cf8839492/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= github.com/docker/cli v20.10.5+incompatible h1:bjflayQbWg+xOkF2WPEAOi4Y7zWhR7ptoPhV/VqLVDE= github.com/docker/cli v20.10.5+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= github.com/docker/distribution v0.0.0-20191216044856-a8371794149d/go.mod h1:0+TTO4EOBfRPhZXAeF1Vu+W3hHZ8eLp8PgKVZlcvtFY= @@ -246,7 +232,6 @@ github.com/docker/distribution v2.7.1+incompatible h1:a5mlkVzth6W5A4fOsS3D2EO5BU github.com/docker/distribution v2.7.1+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= github.com/docker/docker v0.7.3-0.20190327010347-be7ac8be2ae0/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/docker v1.4.2-0.20190916154449-92cc603036dd/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= -github.com/docker/docker v1.4.2-0.20200203170920-46ec8731fbce/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/docker v17.12.0-ce-rc1.0.20200618181300-9dc6525e6118+incompatible h1:iWPIG7pWIsCwT6ZtHnTUpoVMnete7O/pzd9HFE3+tn8= github.com/docker/docker v17.12.0-ce-rc1.0.20200618181300-9dc6525e6118+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/docker-credential-helpers v0.6.3 h1:zI2p9+1NQYdnG6sMU26EX4aVGlqbInSQxQXLvzJ4RPQ= @@ -284,7 +269,6 @@ github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5y github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/evanphx/json-patch v0.0.0-20200808040245-162e5629780b/go.mod h1:NAJj0yf/KaRKURN6nyi7A9IZydMivZEm9oQLWNjfKDc= github.com/evanphx/json-patch v4.2.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= github.com/evanphx/json-patch v4.5.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= github.com/evanphx/json-patch v4.9.0+incompatible h1:kLcOMZeuLAJvL2BPWLMIj5oaZQobrkAqrL+WFZwQses= @@ -405,11 +389,9 @@ github.com/gobuffalo/packr/v2 v2.7.1 h1:n3CIW5T17T8v4GGK5sWXLVWJhCz7b5aNLSxW6gYi github.com/gobuffalo/packr/v2 v2.7.1/go.mod h1:qYEvAazPaVxy7Y7KR0W8qYEE+RymX74kETFqjFoFlOc= github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= -github.com/godbus/dbus v0.0.0-20190422162347-ade71ed3457e/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4= github.com/godbus/dbus/v5 v5.0.3/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/godror/godror v0.13.3/go.mod h1:2ouUT4kdhUBk7TAkHWD4SN0CdI0pgEQbo8FVHhbSKWg= -github.com/gofrs/flock v0.7.1/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU= github.com/gofrs/flock v0.8.0/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU= github.com/gogo/googleapis v1.1.0/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= @@ -455,8 +437,6 @@ github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/golangplus/bytes v0.0.0-20160111154220-45c989fe5450/go.mod h1:Bk6SMAONeMXrxql8uvOKuAZSu8aM5RUGv+1C6IJaEho= -github.com/golangplus/fmt v0.0.0-20150411045040-2a5d6d7d2995/go.mod h1:lJgMEyOkYFkPcDKwRXegd+iM6E7matEszMG5HhwytU8= github.com/golangplus/testing v0.0.0-20180327235837-af21d9c3145e/go.mod h1:0AA//k/eakGydO4jKRoRL2j92ZKSzTgj9tclaCrvXHk= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0 h1:0udJVsspx3VBr5FwtLhQQtuAsVc79tTq0ocGIPAU6qo= @@ -501,7 +481,6 @@ github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+ github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= github.com/googleapis/gnostic v0.0.0-20170729233727-0c5108395e2d/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= -github.com/googleapis/gnostic v0.1.0/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= github.com/googleapis/gnostic v0.3.1/go.mod h1:on+2t9HRStVgn95RSsFWFz+6Q0Snyqv1awfrALZdbtU= github.com/googleapis/gnostic v0.4.1 h1:DLJCy1n/vrD4HPjOvYcT8aYQXpPIzoRZONaYwyycI+I= github.com/googleapis/gnostic v0.4.1/go.mod h1:LRhVm6pbyptWbWbuZ38d1eyptfvIytN3ir6b65WBswg= @@ -535,12 +514,10 @@ github.com/hashicorp/consul/api v1.1.0/go.mod h1:VmuI/Lkw1nC05EYQWNKwWGbkg+FbDBt github.com/hashicorp/consul/api v1.3.0/go.mod h1:MmDNSzIMUjNpY/mQ398R4bk2FnqQLoPndWW5VkKPlCE= github.com/hashicorp/consul/sdk v0.1.1/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= github.com/hashicorp/consul/sdk v0.3.0/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= -github.com/hashicorp/errwrap v0.0.0-20141028054710-7554cd9344ce/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= -github.com/hashicorp/go-multierror v0.0.0-20161216184304-ed905158d874/go.mod h1:JMRHfdO9jKNzS/+BTlxCjKNQHg/jZAft8U7LloJvN7I= github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= @@ -567,7 +544,6 @@ github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1: github.com/imdario/mergo v0.3.5/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= github.com/imdario/mergo v0.3.6/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= github.com/imdario/mergo v0.3.7/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= -github.com/imdario/mergo v0.3.8/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= github.com/imdario/mergo v0.3.11/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= github.com/imdario/mergo v0.3.12 h1:b6R2BslTbIEToALKP7LxUvijTsNI9TAe80pLWN2g/HU= github.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= @@ -576,7 +552,6 @@ github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANyt github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= -github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/jessevdk/go-flags v1.5.0/go.mod h1:Fw0T6WPc1dYxT4mKEZRfG5kJhaTDP9pj1c2EWnYs/m4= github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc= github.com/jinzhu/now v1.1.1 h1:g39TucaRWyV3dwDO++eEc6qf8TVIQ/Da48WmqjZ3i7E= @@ -584,7 +559,6 @@ github.com/jinzhu/now v1.1.1/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/ github.com/jmespath/go-jmespath v0.0.0-20160202185014-0b12d6b521d8/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= github.com/jmespath/go-jmespath v0.0.0-20160803190731-bd40a432e4c7/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= -github.com/jmoiron/sqlx v1.2.0/go.mod h1:1FEQNm3xlJgrMD+FBdI9+xvCksHtbpVBBw5dYhBSsks= github.com/jmoiron/sqlx v1.3.1 h1:aLN7YINNZ7cYOPK3QC83dbM6KT0NMqVMw961TqrejlE= github.com/jmoiron/sqlx v1.3.1/go.mod h1:2BljVx/86SuTyjE+aPYlHCTNvZrnJXghYGpNiXLBMCQ= github.com/joho/godotenv v1.3.0 h1:Zjp+RcGpHhGlrMbJzXTrZZPrWj+1vfm90La1wgB6Bhc= @@ -629,20 +603,15 @@ github.com/lann/ps v0.0.0-20150810152359-62de8c46ede0/go.mod h1:vmVJ0l/dxyfGW6Fm github.com/layer5io/kuttl v0.4.1-0.20200806180306-b7e46afd657f/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.1.23 h1:7eGxHJL4Ag6gU2ZBqsYrbBkQBJFv7Tcob8SZ3wgwrNI= -github.com/layer5io/meshery-adapter-library v0.1.23/go.mod h1:SLknhKksSoUtKzG2tvJKkN/DsMnGV+O+etmuj5Qew48= -github.com/layer5io/meshkit v0.2.24/go.mod h1:blHAWgbcsNJ3rjKr8YvYke8jQILV75vRaARXYwSh0YA= -github.com/layer5io/meshkit v0.2.33 h1:YRCGiKauuPlJvofLxVwtzEbpWP9y+FbAZXp/FJUPyXc= -github.com/layer5io/meshkit v0.2.33/go.mod h1:2o6I6N7XmupMvJRb1gqlRBIf51GIUqwCzPCGarZxIRU= -github.com/layer5io/meshkit v0.2.36 h1:qBcwRP6WrJS0ExfxGqtd55mNxyODgDHVdu/xMrho71A= -github.com/layer5io/meshkit v0.2.36/go.mod h1:2o6I6N7XmupMvJRb1gqlRBIf51GIUqwCzPCGarZxIRU= +github.com/layer5io/meshery-adapter-library v0.5.2 h1:xjXaIZc96oKxIOWpydsYz0CJoV5wAGzJT2GplJ67Y9I= +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/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= github.com/layer5io/service-mesh-performance v0.3.3/go.mod h1:W153amv8aHAeIWxO7b7d7Vibt9RhaEVh4Uh+RG+BumQ= -github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= -github.com/lib/pq v1.7.0/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/lib/pq v1.10.0 h1:Zx5DJFEYQXio93kgXnQ09fXNiUKsqv4OUEu2UtGcB1E= github.com/lib/pq v1.10.0/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de h1:9TO3cAIGXtEhnIaL+V+BEER86oLrvS+kWobKpbJuye0= @@ -681,9 +650,7 @@ github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzp github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-runewidth v0.0.7 h1:Ei8KR0497xHyKJPAv59M1dkC+rOZCMBJ+t3fZ+twI54= github.com/mattn/go-runewidth v0.0.7/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= -github.com/mattn/go-shellwords v1.0.10/go.mod h1:EZzvwXDESEeg03EKmM+RmDnNOPKG4lLtQsUlTZDWQ8Y= github.com/mattn/go-shellwords v1.0.11/go.mod h1:EZzvwXDESEeg03EKmM+RmDnNOPKG4lLtQsUlTZDWQ8Y= -github.com/mattn/go-sqlite3 v1.9.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= github.com/mattn/go-sqlite3 v1.12.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= github.com/mattn/go-sqlite3 v1.14.5/go.mod h1:WVKg1VTActs4Qso6iwGbiFih2UIHo0ENGwNd0Lj+XmI= github.com/mattn/go-sqlite3 v1.14.6 h1:dNPt6NO46WmLVt2DLNpwczCmdV5boIZ6g/tlDrlRUbg= @@ -778,9 +745,7 @@ github.com/opencontainers/image-spec v1.0.1/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zM github.com/opencontainers/runc v0.0.0-20190115041553-12f6a991201f/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= github.com/opencontainers/runc v0.1.1 h1:GlxAyO6x8rfZYN9Tt0Kti5a/cP41iuiO2yYT0IJGY8Y= github.com/opencontainers/runc v0.1.1/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= -github.com/opencontainers/runtime-spec v0.1.2-0.20190507144316-5b71a03e2700/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= github.com/opencontainers/runtime-spec v1.0.2/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= -github.com/opencontainers/runtime-tools v0.0.0-20181011054405-1d69bd0f9c39/go.mod h1:r3f7wjNzSs2extwzU3Y+6pKfobzPh+kKFJ3ofN+3nfs= github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492/go.mod h1:Ngi6UdF0k5OKD5t5wlmGhe/EDKPoUM3BXZSSfIuJbis= github.com/opentracing/basictracer-go v1.0.0/go.mod h1:QfBfYuafItcjQuMwinw9GhYKwFXS9KnPs5lxoYwgW74= github.com/opentracing/opentracing-go v1.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= @@ -804,7 +769,6 @@ github.com/phayes/freeport v0.0.0-20180830031419-95f893ade6f2/go.mod h1:iIss55rK github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc= github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/errors v0.8.1-0.20171018195549-f15c970de5b7/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= @@ -845,7 +809,6 @@ github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= -github.com/prometheus/procfs v0.0.5/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ= github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= github.com/prometheus/procfs v0.2.0 h1:wH4vA7pcjKuZzjF7lM8awk4fnuJO6idemZXoKnULUx4= @@ -875,7 +838,6 @@ github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNX github.com/shopspring/decimal v1.2.0 h1:abSATXmQEYyShuxI4/vyW3tV1MrKAJzCZ/0zLUXYbsQ= github.com/shopspring/decimal v1.2.0/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= -github.com/sirupsen/logrus v1.0.4-0.20170822132746-89742aefa4b2/go.mod h1:pMByvHTf9Beacp5x1UXfOR9xyW/9antXMhjMPG0dEzc= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= @@ -936,14 +898,12 @@ github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5Cc github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/subosito/gotenv v1.2.0 h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= -github.com/syndtr/gocapability v0.0.0-20170704070218-db04d3cc01c8/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= github.com/thoas/go-funk v0.6.0/go.mod h1:+IWnUfUmFO1+WVYQWQtIJHeRRdaIyyYglZN7xzUPe4Q= github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= -github.com/urfave/cli v0.0.0-20171014202726-7bc6a0acffa5/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= github.com/urfave/cli v1.22.2/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= @@ -954,11 +914,9 @@ github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f h1:J9EGpcZtP github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 h1:EzJWgHovont7NscjpAxXsDA8S8BMYve8Y5+7cuRE7R0= github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= -github.com/xeipuuv/gojsonschema v0.0.0-20180618132009-1d523034197f/go.mod h1:5yf86TLmAcydyeJq5YvxkGPE2fm/u4myDekKRoLuqhs= github.com/xeipuuv/gojsonschema v1.2.0 h1:LhYJRs+L4fBtjZUfuSZIKGeVu0QRy8e5Xi7D17UxZ74= github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= -github.com/xlab/handysort v0.0.0-20150421192137-fb3537ed64a1/go.mod h1:QcJo0QPSfTONNIgpN5RA8prR7fF8nkF6cTWTcNerRO8= github.com/xlab/treeprint v0.0.0-20181112141820-a009c3971eca h1:1CFlNzQhALwjS9mBAUkycX616GzgsuYUOCHA5+HSlXI= github.com/xlab/treeprint v0.0.0-20181112141820-a009c3971eca/go.mod h1:ce1O1j6UtZfjr22oyGxGLbauSBp2YVXpARAosm7dHBg= github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= @@ -1017,7 +975,6 @@ go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9E go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= -golang.org/x/crypto v0.0.0-20171113213409-9f005a07e0d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= @@ -1034,8 +991,6 @@ golang.org/x/crypto v0.0.0-20190621222207-cc06ce4a13d4/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20200128174031-69ecbb4d6d5d/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20200220183623-bac4c82f6975/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200414173820-0848c9571904/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= @@ -1179,7 +1134,6 @@ golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190514135907-3a4b5fb9f71f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190515120540-06a5c4944438/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190602015325-4c4f7f33c9ed/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1235,8 +1189,9 @@ golang.org/x/sys v0.0.0-20210324051608-47abb6519492/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210502180810-71e4cd670f79/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210510120138-977fb7262007 h1:gG67DSER+11cZvqIMb8S8bt0vZtiN6xWYARwirrOSfE= golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220110181412-a018aaa089fe h1:W8vbETX/n8S6EmY0Pu4Ix7VvpsJUESTwl0oCK8MJOgk= +golang.org/x/sys v0.0.0-20220110181412-a018aaa089fe/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d h1:SZxvLBoTP5yHO3Frd4z4vrF+DBX9vMVanchswa69toE= @@ -1451,7 +1406,6 @@ google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlba google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0 h1:bxAC2xTBsZGibn2RTntX0oH50xLsqy1OxA9tTL3p/lk= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -gopkg.in/airbrake/gobrake.v2 v2.0.9/go.mod h1:/h5ZAUhDkGaJfjzjKLSjv6zCL6O0LLBxU4K+aSYdM/U= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20141024133853-64131543e789/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= @@ -1464,7 +1418,6 @@ gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qS gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= gopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o= -gopkg.in/gemnasium/logrus-airbrake-hook.v2 v2.1.2/go.mod h1:Xk6kEKp8OKb+X14hQBKWaSkCsqBpgog8nAV2xsGOxlo= gopkg.in/gorp.v1 v1.7.2 h1:j3DWlAyGVv8whO7AcIWznQ2Yj7yJkn34B8s63GViAAw= gopkg.in/gorp.v1 v1.7.2/go.mod h1:Wo3h+DBQZIxATwftsglhdD/62zRFPhGhTiu5jUJmCaw= gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= @@ -1504,7 +1457,6 @@ gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81 gotest.tools/v3 v3.0.2/go.mod h1:3SzNCllyD9/Y+b5r9JIKQ474KzkZyqLqEfYqMsX94Bk= gotest.tools/v3 v3.0.3 h1:4AuOwCGf4lLR9u3YOe2awrHygurzhO/HeQ6laiA6Sx0= gotest.tools/v3 v3.0.3/go.mod h1:Z7Lb0S5l+klDB31fvDQX8ss/FlKDxtlFlw3Oa8Ymbl8= -helm.sh/helm/v3 v3.3.1/go.mod h1:CyCGQa53/k1JFxXvXveGwtfJ4cuB9zkaBSGa5rnAiHU= helm.sh/helm/v3 v3.6.3 h1:0nKDyXJr23nI3JrcP7HH7NcR+CYRvro/52Dvr1KhGO0= helm.sh/helm/v3 v3.6.3/go.mod h1:mIIus8EOqj+obtycw3sidsR4ORr2aFDmXMSI3k+oeVY= honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= @@ -1518,52 +1470,39 @@ honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9 k8s.io/api v0.17.0/go.mod h1:npsyOePkeP0CPwyGfXDHxvypiYMJxBWAMpQxCaJ4ZxI= k8s.io/api v0.17.2/go.mod h1:BS9fjjLc4CMuqfSO8vgbHPKMt5+SF0ET6u/RVDihTo4= k8s.io/api v0.17.3/go.mod h1:YZ0OTkuw7ipbe305fMpIdf3GLXZKRigjtZaV5gzC2J0= -k8s.io/api v0.18.8/go.mod h1:d/CXqwWv+Z2XEG1LgceeDmHQwpUJhROPx16SlxJgERY= -k8s.io/api v0.18.12/go.mod h1:3sS78jmUoGHwERyMbEhxP6owcQ77UxGo+Yy+dKNWrh0= k8s.io/api v0.21.0 h1:gu5iGF4V6tfVCQ/R+8Hc0h7H1JuEhzyEi9S4R5LM8+Y= k8s.io/api v0.21.0/go.mod h1:+YbrhBBGgsxbF6o6Kj4KJPJnBmAKuXDeS3E18bgHNVU= k8s.io/apiextensions-apiserver v0.17.0/go.mod h1:XiIFUakZywkUl54fVXa7QTEHcqQz9HG55nHd1DCoHj8= k8s.io/apiextensions-apiserver v0.17.2/go.mod h1:4KdMpjkEjjDI2pPfBA15OscyNldHWdBCfsWMDWAmSTs= -k8s.io/apiextensions-apiserver v0.18.8/go.mod h1:7f4ySEkkvifIr4+BRrRWriKKIJjPyg9mb/p63dJKnlM= k8s.io/apiextensions-apiserver v0.21.0 h1:Nd4uBuweg6ImzbxkC1W7xUNZcCV/8Vt10iTdTIVF3hw= k8s.io/apiextensions-apiserver v0.21.0/go.mod h1:gsQGNtGkc/YoDG9loKI0V+oLZM4ljRPjc/sql5tmvzc= k8s.io/apimachinery v0.17.0/go.mod h1:b9qmWdKlLuU9EBh+06BtLcSf/Mu89rWL33naRxs1uZg= k8s.io/apimachinery v0.17.2/go.mod h1:b9qmWdKlLuU9EBh+06BtLcSf/Mu89rWL33naRxs1uZg= k8s.io/apimachinery v0.17.3/go.mod h1:gxLnyZcGNdZTCLnq3fgzyg2A5BVCHTNDFrw8AmuJ+0g= -k8s.io/apimachinery v0.18.8/go.mod h1:6sQd+iHEqmOtALqOFjSWp2KZ9F0wlU/nWm0ZgsYWMig= -k8s.io/apimachinery v0.18.12/go.mod h1:PF5taHbXgTEJLU+xMypMmYTXTWPJ5LaW8bfsisxnEXk= k8s.io/apimachinery v0.21.0 h1:3Fx+41if+IRavNcKOz09FwEXDBG6ORh6iMsTSelhkMA= k8s.io/apimachinery v0.21.0/go.mod h1:jbreFvJo3ov9rj7eWT7+sYiRx+qZuCYXwWT1bcDswPY= k8s.io/apiserver v0.17.0/go.mod h1:ABM+9x/prjINN6iiffRVNCBR2Wk7uY4z+EtEGZD48cg= k8s.io/apiserver v0.17.2/go.mod h1:lBmw/TtQdtxvrTk0e2cgtOxHizXI+d0mmGQURIHQZlo= -k8s.io/apiserver v0.18.8/go.mod h1:12u5FuGql8Cc497ORNj79rhPdiXQC4bf53X/skR/1YM= k8s.io/apiserver v0.21.0 h1:1hWMfsz+cXxB77k6/y0XxWxwl6l9OF26PC9QneUVn1Q= k8s.io/apiserver v0.21.0/go.mod h1:w2YSn4/WIwYuxG5zJmcqtRdtqgW/J2JRgFAqps3bBpg= -k8s.io/cli-runtime v0.18.8/go.mod h1:7EzWiDbS9PFd0hamHHVoCY4GrokSTPSL32MA4rzIu0M= -k8s.io/cli-runtime v0.18.12/go.mod h1:wTj8W8za8NDWe505mrlckiZ5H2cZA0YEuv0E7WC+Srs= k8s.io/cli-runtime v0.21.0 h1:/V2Kkxtf6x5NI2z+Sd/mIrq4FQyQ8jzZAUD6N5RnN7Y= k8s.io/cli-runtime v0.21.0/go.mod h1:XoaHP93mGPF37MkLbjGVYqg3S1MnsFdKtiA/RZzzxOo= k8s.io/client-go v0.17.0/go.mod h1:TYgR6EUHs6k45hb6KWjVD6jFZvJV4gHDikv/It0xz+k= k8s.io/client-go v0.17.2/go.mod h1:QAzRgsa0C2xl4/eVpeVAZMvikCn8Nm81yqVx3Kk9XYI= k8s.io/client-go v0.17.3/go.mod h1:cLXlTMtWHkuK4tD360KpWz2gG2KtdWEr/OT02i3emRQ= -k8s.io/client-go v0.18.8/go.mod h1:HqFqMllQ5NnQJNwjro9k5zMyfhZlOwpuTLVrxjkYSxU= -k8s.io/client-go v0.18.12/go.mod h1:0aC8XkA09dX/goYqHQJ/kVv0zL1t+weOZt3pmz9LpxA= k8s.io/client-go v0.21.0 h1:n0zzzJsAQmJngpC0IhgFcApZyoGXPrDIAD601HD09ag= k8s.io/client-go v0.21.0/go.mod h1:nNBytTF9qPFDEhoqgEPaarobC8QPae13bElIVHzIglA= k8s.io/code-generator v0.17.0/go.mod h1:DVmfPQgxQENqDIzVR2ddLXMH34qeszkKSdH/N+s+38s= k8s.io/code-generator v0.17.2/go.mod h1:DVmfPQgxQENqDIzVR2ddLXMH34qeszkKSdH/N+s+38s= k8s.io/code-generator v0.17.3/go.mod h1:l8BLVwASXQZTo2xamW5mQNFCe1XPiAesVq7Y1t7PiQQ= -k8s.io/code-generator v0.18.8/go.mod h1:TgNEVx9hCyPGpdtCWA34olQYLkh3ok9ar7XfSsr8b6c= k8s.io/code-generator v0.21.0/go.mod h1:hUlps5+9QaTrKx+jiM4rmq7YmH8wPOIko64uZCHDh6Q= k8s.io/component-base v0.17.0/go.mod h1:rKuRAokNMY2nn2A6LP/MiwpoaMRHpfRnrPaUJJj1Yoc= k8s.io/component-base v0.17.2/go.mod h1:zMPW3g5aH7cHJpKYQ/ZsGMcgbsA/VyhEugF3QT1awLs= -k8s.io/component-base v0.18.8/go.mod h1:00frPRDas29rx58pPCxNkhUfPbwajlyyvu8ruNgSErU= k8s.io/component-base v0.21.0 h1:tLLGp4BBjQaCpS/KiuWh7m2xqvAdsxLm4ATxHSe5Zpg= k8s.io/component-base v0.21.0/go.mod h1:qvtjz6X0USWXbgmbfXR+Agik4RZ3jv2Bgr5QnZzdPYw= k8s.io/component-helpers v0.21.0/go.mod h1:tezqefP7lxfvJyR+0a+6QtVrkZ/wIkyMLK4WcQ3Cj8U= k8s.io/gengo v0.0.0-20190128074634-0689ccc1d7d6/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= k8s.io/gengo v0.0.0-20190822140433-26a664648505/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= -k8s.io/gengo v0.0.0-20200114144118-36b2048a9120/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= k8s.io/gengo v0.0.0-20200413195148-3a45101e95ac/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= k8s.io/gengo v0.0.0-20201214224949-b6c5ce23f027/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= k8s.io/klog v0.0.0-20181102134211-b9b56d5dfc92/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= @@ -1575,17 +1514,12 @@ k8s.io/klog/v2 v2.2.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= k8s.io/klog/v2 v2.8.0 h1:Q3gmuM9hKEjefWFFYF0Mat+YyFJvsUyYuwyNNJ5C9Ts= k8s.io/klog/v2 v2.8.0/go.mod h1:hy9LJ/NvuK+iVyP4Ehqva4HxZG/oXyIS3n3Jmire4Ec= k8s.io/kube-openapi v0.0.0-20191107075043-30be4d16710a/go.mod h1:1TqjTSzOxsLGIKfj0lK8EeCP7K1iUG65v09OM0/WG5E= -k8s.io/kube-openapi v0.0.0-20200410145947-61e04a5be9a6/go.mod h1:GRQhZsXIAJ1xR0C9bd8UpWHZ5plfAS9fzPjJuQ6JL3E= k8s.io/kube-openapi v0.0.0-20210305001622-591a79e4bda7 h1:vEx13qjvaZ4yfObSSXW7BrMc/KQBBT/Jyee8XtLf4x0= k8s.io/kube-openapi v0.0.0-20210305001622-591a79e4bda7/go.mod h1:wXW5VT87nVfh/iLV8FpR2uDvrFyomxbtb1KivDbvPTE= -k8s.io/kubectl v0.18.8/go.mod h1:PlEgIAjOMua4hDFTEkVf+W5M0asHUKfE4y7VDZkpLHM= k8s.io/kubectl v0.21.0 h1:WZXlnG/yjcE4LWO2g6ULjFxtzK6H1TKzsfaBFuVIhNg= k8s.io/kubectl v0.21.0/go.mod h1:EU37NukZRXn1TpAkMUoy8Z/B2u6wjHDS4aInsDzVvks= -k8s.io/kubernetes v1.13.0/go.mod h1:ocZa8+6APFNC2tX1DZASIbocyYT5jHzqFVsY5aoB7Jk= -k8s.io/metrics v0.18.8/go.mod h1:j7JzZdiyhLP2BsJm/Fzjs+j5Lb1Y7TySjhPWqBPwRXA= k8s.io/metrics v0.21.0/go.mod h1:L3Ji9EGPP1YBbfm9sPfEXSpnj8i24bfQbAFAsW0NueQ= k8s.io/utils v0.0.0-20191114184206-e782cd3c129f/go.mod h1:sZAwmy6armz5eXlNoLmJcl4F1QuKu7sr+mFQ0byX7Ew= -k8s.io/utils v0.0.0-20200324210504-a9aa75ae1b89/go.mod h1:sZAwmy6armz5eXlNoLmJcl4F1QuKu7sr+mFQ0byX7Ew= k8s.io/utils v0.0.0-20201110183641-67b214c5f920 h1:CbnUZsM497iRC5QMVkHwyl8s2tB3g7yaSHkYPkpgelw= k8s.io/utils v0.0.0-20201110183641-67b214c5f920/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= modernc.org/cc v1.0.0/go.mod h1:1Sk4//wdnYJiUIxnW8ddKpaOJCF37yAdqYnkxUpaYxw= @@ -1598,13 +1532,10 @@ rsc.io/letsencrypt v0.0.3 h1:H7xDfhkaFFSYEJlKeq38RwX2jYcnTeHuDQyT+mMNMwM= rsc.io/letsencrypt v0.0.3/go.mod h1:buyQKZ6IXrRnB7TdkHP0RyEybLx18HHyOSoTyoOLqNY= rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= -sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.7/go.mod h1:PHgbrJT7lCHcxMU+mDHEm+nx46H4zuuHZkDP6icnhu0= sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.15/go.mod h1:LEScyzhFmoF5pso/YSeBstl57mOzx9xlU9n85RGrDQg= sigs.k8s.io/controller-runtime v0.5.1/go.mod h1:Uojny7gvg55YLQnEGnPzRE3dC4ik2tRlZJgOUCWXAV4= sigs.k8s.io/controller-tools v0.2.6/go.mod h1:9VKHPszmf2DHz/QmHkcfZoewO6BL7pPs9uAiBVsaJSE= sigs.k8s.io/kind v0.7.0/go.mod h1:An/AbWHT6pA/Lm0Og8j3ukGhfJP3RiVN/IBU6Lo3zl8= -sigs.k8s.io/kustomize v2.0.3+incompatible h1:JUufWFNlI44MdtnjUqVnvh29rR37PQFzPbLXqhyOyX0= -sigs.k8s.io/kustomize v2.0.3+incompatible/go.mod h1:MkjgH3RdOWrievjo6c9T245dYlB5QeXV4WCbnt/PEpU= sigs.k8s.io/kustomize/api v0.8.5 h1:bfCXGXDAbFbb/Jv5AhMj2BB8a5VAJuuQ5/KU69WtDjQ= sigs.k8s.io/kustomize/api v0.8.5/go.mod h1:M377apnKT5ZHJS++6H4rQoCHmWtt6qTpp3mbe7p6OLY= sigs.k8s.io/kustomize/cmd/config v0.9.7/go.mod h1:MvXCpHs77cfyxRmCNUQjIqCmZyYsbn5PyQpWiq44nW0= @@ -1614,8 +1545,6 @@ sigs.k8s.io/kustomize/kyaml v0.10.15/go.mod h1:mlQFagmkm1P+W4lZJbJ/yaxMd8PqMRSC4 sigs.k8s.io/structured-merge-diff v0.0.0-20190525122527-15d366b2352e/go.mod h1:wWxsB5ozmmv/SG7nM11ayaAW51xMvak/t1r0CSlcokI= sigs.k8s.io/structured-merge-diff v1.0.1-0.20191108220359-b1b620dd3f06 h1:zD2IemQ4LmOcAumeiyDWXKUI2SO0NYDe3H6QGvPOVgU= sigs.k8s.io/structured-merge-diff v1.0.1-0.20191108220359-b1b620dd3f06/go.mod h1:/ULNhyfzRopfcjskuui0cTITekDduZ7ycKN3oUT9R18= -sigs.k8s.io/structured-merge-diff/v3 v3.0.0-20200116222232-67a7b8c61874/go.mod h1:PlARxl6Hbt/+BC80dRLi1qAmnMqwqDg62YvvVkZjemw= -sigs.k8s.io/structured-merge-diff/v3 v3.0.0/go.mod h1:PlARxl6Hbt/+BC80dRLi1qAmnMqwqDg62YvvVkZjemw= sigs.k8s.io/structured-merge-diff/v4 v4.0.2/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= sigs.k8s.io/structured-merge-diff/v4 v4.1.0 h1:C4r9BgJ98vrKnnVCjwCSXcWjWe0NKcUQkmzDXZXGwH8= sigs.k8s.io/structured-merge-diff/v4 v4.1.0/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= @@ -1623,4 +1552,3 @@ sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= sigs.k8s.io/yaml v1.2.0 h1:kr/MCeFWJWTwyaHoR9c8EjH9OumOmoF9YGiZd7lFm/Q= sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc= sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0/go.mod h1:hI742Nqp5OhwiqlzhgfbWU4mW4yO10fP+LoT9WOswdU= -vbom.ml/util v0.0.0-20160121211510-db5cfe13f5cc/go.mod h1:so/NYdZXCz+E3ZpW0uAoCj6uzU2+8OWDFv/HxUSs7kI= diff --git a/main.go b/main.go index 32ea5e37..a64399f6 100644 --- a/main.go +++ b/main.go @@ -18,20 +18,19 @@ import ( "fmt" "os" "path" + "path/filepath" "strings" "time" "github.com/layer5io/meshery-adapter-library/adapter" "github.com/layer5io/meshery-adapter-library/api/grpc" - "github.com/layer5io/meshery-osm/internal/config" + "github.com/layer5io/meshery-osm/build" internalconfig "github.com/layer5io/meshery-osm/internal/config" "github.com/layer5io/meshery-osm/osm" "github.com/layer5io/meshery-osm/osm/oam" configprovider "github.com/layer5io/meshkit/config/provider" "github.com/layer5io/meshkit/logger" "github.com/layer5io/meshkit/utils" - "github.com/layer5io/meshkit/utils/manifests" - smp "github.com/layer5io/service-mesh-performance/spec" ) var ( @@ -154,48 +153,55 @@ func registerDynamicCapabilities(port string, log logger.Handler) { } func registerWorkloads(port string, log logger.Handler) { - log.Info("Fetching crd names for registering oam components...") - crds, err := config.GetFileNames("openservicemesh", "osm", "/cmd/osm-bootstrap/crds/**") - if err != nil { - log.Error(err) + + //First we create and store any new components if available + version := build.LatestVersion + gm := build.DefaultGenerationMethod + // Prechecking to skip comp gen + if os.Getenv("FORCE_DYNAMIC_REG") != "true" && oam.AvailableVersions[version] { + log.Info("Components available statically for version ", version, ". Skipping dynamic component registeration") return } - log.Info("CRD names fetched successfully") - appVersions, err := utils.GetLatestReleaseTagsSorted("openservicemesh", "osm") - if err != nil { - log.Info("Could not get latest version ", err.Error()) - return + //If a URL is passed from env variable, it will be used for component generation with default method being "using manifests" + // In case a helm chart URL is passed, COMP_GEN_METHOD env variable should be set to Helm otherwise the component generation fails + if os.Getenv("COMP_GEN_URL") != "" && (os.Getenv("COMP_GEN_METHOD") == "Helm" || os.Getenv("COMP_GEN_METHOD") == "Manifest") { + build.OverrideURL = os.Getenv("COMP_GEN_URL") + gm = os.Getenv("COMP_GEN_METHOD") + log.Info("Registering workload components from url ", build.OverrideURL, " using ", gm, " method...") + build.CRDnames = []string{"user passed configuration"} } - appVersion := appVersions[len(appVersions)-1] - log.Info("Registering latest workload components for version ", appVersion) + log.Info("Registering latest workload components for version ", version) // Register workloads - for _, manifest := range crds { - log.Info("Registering for ", manifest) - if err := adapter.RegisterWorkLoadsDynamically(mesheryServerAddress(), serviceAddress()+":"+port, &adapter.DynamicComponentsConfig{ - TimeoutInMinutes: 60, - URL: "https://raw.githubusercontent.com/openservicemesh/osm/main/cmd/osm-bootstrap/crds/" + manifest, - GenerationMethod: adapter.Manifests, - Config: manifests.Config{ - Name: smp.ServiceMesh_Type_name[int32(smp.ServiceMesh_OPEN_SERVICE_MESH)], - MeshVersion: appVersion, - Filter: manifests.CrdFilter{ - RootFilter: []string{"$[?(@.kind==\"CustomResourceDefinition\")]"}, - NameFilter: []string{"$..[\"spec\"][\"names\"][\"kind\"]"}, - VersionFilter: []string{"$[0]..spec.versions[0]"}, - GroupFilter: []string{"$[0]..spec"}, - SpecFilter: []string{"$[0]..openAPIV3Schema.properties.spec"}, - ItrFilter: []string{"$[?(@.spec.names.kind"}, - ItrSpecFilter: []string{"$[?(@.spec.names.kind"}, - VField: "name", - GField: "group", - }, - }, - Operation: config.OSMOperation, + for _, crd := range build.CRDnames { + log.Info("Generating components for ", crd) + if err := adapter.CreateComponents(adapter.StaticCompConfig{ + URL: build.GetDefaultURL(crd), + Method: gm, + Path: build.WorkloadPath, + DirName: version, + Config: build.NewConfig(version), }); err != nil { log.Error(err) return } - log.Info(manifest, " registered") + log.Info(crd, " created") } + + //*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) + + //Now we will register in case + log.Info("Registering workloads with Meshery Server for version ", version) + originalPath := oam.WorkloadPath + oam.WorkloadPath = filepath.Join(originalPath, version) + defer resetWorkloadPath(originalPath) + if err := oam.RegisterWorkloads(mesheryServerAddress(), serviceAddress()+":"+port); err != nil { + log.Info(err.Error()) + return + } + log.Info("Latest workload components successfully registered.") } +func resetWorkloadPath(orig string) { + oam.WorkloadPath = orig +} diff --git a/osm/oam/register.go b/osm/oam/register.go index 0a421223..1798f03a 100644 --- a/osm/oam/register.go +++ b/osm/oam/register.go @@ -11,11 +11,15 @@ import ( ) var ( - basePath, _ = os.Getwd() - workloadPath = filepath.Join(basePath, "templates", "oam", "workloads") + basePath, _ = os.Getwd() + //WorkloadPath will be used by both static and component generation + WorkloadPath = filepath.Join(basePath, "templates", "oam", "workloads") traitPath = filepath.Join(basePath, "templates", "oam", "traits") ) +// AvailableVersions denote the component versions available statically +var AvailableVersions = map[string]bool{} + type schemaDefinitionPathSet struct { oamDefinitionPath string jsonSchemaPath string @@ -29,7 +33,7 @@ type schemaDefinitionPathSet struct { func RegisterWorkloads(runtime, host string) error { oamRDP := []adapter.OAMRegistrantDefinitionPath{} - pathSets, err := load(workloadPath) + pathSets, err := load(WorkloadPath) if err != nil { return err } @@ -108,6 +112,7 @@ func load(basePath string) ([]schemaDefinitionPathSet, error) { jsonSchemaPath: fmt.Sprintf("%s.meshery.layer5io.schema.json", nameWithPath), name: filepath.Base(nameWithPath), }) + AvailableVersions[filepath.Base(filepath.Dir(path))] = true } return nil diff --git a/templates/oam/workloads/v0.0.1/egress.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.0.1/egress.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..c77de28d --- /dev/null +++ b/templates/oam/workloads/v0.0.1/egress.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,103 @@ +{ + "properties": { + "hosts": { + "description": "Hosts that the sources are allowed to direct external traffic to.", + "items": { + "type": "string" + }, + "type": "array" + }, + "ipAddresses": { + "description": "IP address ranges that the sources are allowed to direct external traffic to.", + "items": { + "pattern": "((?:\\d{1,3}\\.){3}\\d{1,3})\\/(\\d{1,2})$", + "type": "string" + }, + "type": "array" + }, + "matches": { + "description": "The resource references an Egress policy should match on.", + "items": { + "properties": { + "apiGroup": { + "description": "API group for the resource being referenced.", + "type": "string" + }, + "kind": { + "description": "Type of resource being referenced.", + "type": "string" + }, + "name": { + "description": "Name of resource being referenced.", + "type": "string" + } + }, + "required": [ + "apiGroup", + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "ports": { + "description": "Ports that the sources are allowed to direct external traffic to.", + "items": { + "properties": { + "number": { + "description": "Port number of this port.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "description": "Protocol served by this port.", + "type": "string" + } + }, + "required": [ + "number", + "protocol" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources the egress policy is applicable to.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "enum": [ + "ServiceAccount" + ], + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "kind", + "name", + "namespace" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "sources", + "ports" + ], + "title": "Egress", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.0.1/egress.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.0.1/egress.meshery.layer5.io_definition.json new file mode 100755 index 00000000..d6fe3a20 --- /dev/null +++ b/templates/oam/workloads/v0.0.1/egress.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Egress", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "egress.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "policy.openservicemesh.io/v1alpha1", + "k8sKind": "Egress", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.0.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.0.1/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.0.1/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..6951d46c --- /dev/null +++ b/templates/oam/workloads/v0.0.1/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,60 @@ +{ + "properties": { + "matches": { + "description": "Match conditions of this route group.", + "items": { + "properties": { + "headers": { + "description": "Header match conditions of this route.", + "items": { + "additionalProperties": { + "type": "string" + }, + "description": "Header match condition of this route.", + "type": "object" + }, + "type": "array" + }, + "methods": { + "description": "The HTTP methods of this HTTP route.", + "items": { + "description": "The HTTP method of this HTTP route.", + "enum": [ + "*", + "GET", + "HEAD", + "PUT", + "POST", + "DELETE", + "CONNECT", + "OPTIONS", + "TRACE", + "PATCH" + ], + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "Name of the HTTP route.", + "type": "string" + }, + "pathRegex": { + "description": "URI path regex of the HTTP route.", + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "matches" + ], + "title": "HTTP Route Group", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.0.1/httproutegroup.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.0.1/httproutegroup.meshery.layer5.io_definition.json new file mode 100755 index 00000000..aae5cd5c --- /dev/null +++ b/templates/oam/workloads/v0.0.1/httproutegroup.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPRouteGroup", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httproutegroup.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "specs.smi-spec.io/v1alpha4", + "k8sKind": "HTTPRouteGroup", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.0.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.0.1/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.0.1/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..f5535897 --- /dev/null +++ b/templates/oam/workloads/v0.0.1/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,118 @@ +{ + "properties": { + "backends": { + "description": "Backends the IngressBackend policy is applicable to.", + "items": { + "properties": { + "name": { + "description": "Name of the backend.", + "type": "string" + }, + "port": { + "description": "Port of the backend.", + "properties": { + "number": { + "description": "Port number of this port.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "description": "Protocol served by this port.", + "type": "string" + } + }, + "required": [ + "number", + "protocol" + ], + "type": "object" + }, + "tls": { + "description": "TLS configuration for the backend.", + "properties": { + "skipClientCertValidation": { + "description": "Skip client certificate validation.", + "type": "boolean" + }, + "sniHosts": { + "description": "SNI hosts allowed by the backend.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "skipClientCertValidation" + ], + "type": "object" + } + }, + "required": [ + "name", + "port" + ], + "type": "object" + }, + "type": "array" + }, + "matches": { + "description": "The resource references an IngressBackend policy should match on.", + "items": { + "properties": { + "apiGroup": { + "description": "API group for the resource being referenced.", + "type": "string" + }, + "kind": { + "description": "Type of resource being referenced.", + "type": "string" + }, + "name": { + "description": "Name of resource being referenced.", + "type": "string" + } + }, + "required": [ + "apiGroup", + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources the IngressBackend policy is applicable to.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "backends", + "sources" + ], + "title": "Ingress Backend", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.0.1/ingressbackend.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.0.1/ingressbackend.meshery.layer5.io_definition.json new file mode 100755 index 00000000..cb4bcd79 --- /dev/null +++ b/templates/oam/workloads/v0.0.1/ingressbackend.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "IngressBackend", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "ingressbackend.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "policy.openservicemesh.io/v1alpha1", + "k8sKind": "IngressBackend", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.0.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.0.1/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.0.1/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..b607634a --- /dev/null +++ b/templates/oam/workloads/v0.0.1/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,264 @@ +{ + "properties": { + "certificate": { + "description": "Configuration for certificate management", + "properties": { + "certKeyBitSize": { + "description": "Sets the certificate key bit size for data plane certificates.", + "type": "integer" + }, + "ingressGateway": { + "description": "Configuration for the ingress gateway's certificate", + "properties": { + "secret": { + "description": "Secret reference to store the certificate in", + "properties": { + "name": { + "description": "Name of the secret", + "type": "string" + }, + "namespace": { + "description": "Namespace of the secret", + "type": "string" + } + }, + "required": [ + "name", + "namespace" + ], + "type": "object" + }, + "subjectAltNames": { + "description": "Subject Alternative Names secured by the certificate", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "validityDuration": { + "description": "Certificate validity duration, represented as a sequence of decimal numbers each with optional fraction and a unit suffix", + "type": "string" + } + }, + "required": [ + "subjectAltNames", + "validityDuration", + "secret" + ], + "type": "object" + }, + "serviceCertValidityDuration": { + "description": "Sets the service certificate validity duration, represented as a sequence of decimal numbers each with optional fraction and a unit suffix.", + "type": "string" + } + }, + "required": [ + "serviceCertValidityDuration", + "certKeyBitSize" + ], + "type": "object" + }, + "featureFlags": { + "description": "OSM feature flags", + "properties": { + "enableAsyncProxyServiceMapping": { + "type": "boolean" + }, + "enableEgressPolicy": { + "type": "boolean" + }, + "enableEnvoyActiveHealthChecks": { + "type": "boolean" + }, + "enableIngressBackendPolicy": { + "type": "boolean" + }, + "enableMulticlusterMode": { + "type": "boolean" + }, + "enableRetryPolicy": { + "type": "boolean" + }, + "enableSnapshotCacheMode": { + "type": "boolean" + }, + "enableWASMStats": { + "type": "boolean" + } + }, + "type": "object" + }, + "observability": { + "description": "Configuration for observing the service mesh, including metrics, logs, tracing etc,.", + "properties": { + "enableDebugServer": { + "description": "Enables a debug endpoint on the osm-controller pod to list information regarding the mesh such as proxy connections, certificates, and SMI policies.", + "type": "boolean" + }, + "osmLogLevel": { + "description": "Allows setting OSM control plane log level at runtime", + "type": "string" + }, + "tracing": { + "description": "Configuration for distributed tracing", + "properties": { + "address": { + "description": "Address of Jaeger tracing deployment, if tracing is enabled.", + "type": "string" + }, + "enable": { + "description": "Enables Jaeger tracing for the mesh.", + "type": "boolean" + }, + "endpoint": { + "description": "Endpoint for tracing data, if tracing is enabled.", + "type": "string" + }, + "port": { + "description": "Port on which tracing is enabled.", + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "sidecar": { + "description": "Configuration for Envoy sidecar", + "properties": { + "configResyncInterval": { + "description": "Resync interval for regular proxy broadcast updates", + "type": "string" + }, + "enablePrivilegedInitContainer": { + "description": "Enables privileged init containers for pods in mesh. When false, init containers only have NET_ADMIN.", + "type": "boolean" + }, + "envoyImage": { + "description": "Image for the Envoy sidecar", + "type": "string" + }, + "envoyWindowsImage": { + "description": "Image for the Envoy sidecar on Windows workers", + "type": "string" + }, + "initContainerImage": { + "description": "Image for the init container", + "type": "string" + }, + "logLevel": { + "description": "Sets the logging verbosity of Envoy proxy sidecar, only applicable to newly created pods joining the mesh.", + "enum": [ + "trace", + "debug", + "info", + "warning", + "warn", + "error", + "critical", + "off" + ], + "type": "string" + }, + "maxDataPlaneConnections": { + "description": "Max allowed data plane sidecar connections", + "type": "integer" + }, + "resources": { + "properties": { + "limits": { + "additionalProperties": true, + "description": "Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/", + "type": "object" + }, + "requests": { + "additionalProperties": true, + "description": "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/", + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "traffic": { + "description": "Configuration for traffic management", + "properties": { + "enableEgress": { + "description": "Enables egress in the mesh", + "type": "boolean" + }, + "enablePermissiveTrafficPolicyMode": { + "description": "True for allowing traffic to flow between client and service pods within the mesh without SMI traffic policies, i.e. no traffic policy enforcement in the mesh. If set to false, enables deny-all traffic policy in mesh i.e. an SMI Traffic Target is necessary for services to communicate.", + "type": "boolean" + }, + "inboundExternalAuthorization": { + "description": "Configures external authorization for inbound and ingress connections.", + "properties": { + "address": { + "description": "Target destination endpoint that will handle external authorization.", + "type": "string" + }, + "enable": { + "description": "Enables/disables the inbound external authorization policy if present.", + "type": "boolean" + }, + "failureModeAllow": { + "description": "Allows specifying if traffic should succeed or fail if the external authorization endpoint fails to respond.", + "type": "boolean" + }, + "port": { + "description": "Remote destination port for the external authorization endpoint.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "statPrefix": { + "default": "inboundExtAuthz", + "description": "String prefix for inbound external authorization related metrics.", + "type": "string" + }, + "timeout": { + "default": "1s", + "description": "Defines the timeout to consider for the remote endpoint to reply in time.", + "type": "string" + } + }, + "type": "object" + }, + "inboundPortExclusionList": { + "description": "Global list of ports to exclude from inbound traffic interception by the sidecar proxy.", + "items": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "type": "array" + }, + "outboundIPRangeExclusionList": { + "description": "Global list of IP address ranges to exclude from outbound traffic interception by the sidecar proxy.", + "items": { + "pattern": "((?:\\d{1,3}\\.){3}\\d{1,3})\\/(\\d{1,2})$", + "type": "string" + }, + "type": "array" + }, + "outboundPortExclusionList": { + "description": "Global list of ports to exclude from outbound traffic interception by the sidecar proxy.", + "items": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "title": "Mesh Config", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.0.1/meshconfig.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.0.1/meshconfig.meshery.layer5.io_definition.json new file mode 100755 index 00000000..adf8a339 --- /dev/null +++ b/templates/oam/workloads/v0.0.1/meshconfig.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "MeshConfig", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "meshconfig.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.openservicemesh.io/v1alpha1", + "k8sKind": "MeshConfig", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.0.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.0.1/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.0.1/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..60d4f7dd --- /dev/null +++ b/templates/oam/workloads/v0.0.1/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "properties": { + "clusters": { + "description": "The clusters the service accounts are hosted on.", + "items": { + "properties": { + "address": { + "description": "a routable IP + port", + "pattern": "^(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3}):[0-9]+$", + "type": "string" + }, + "certificate": { + "description": "mTLS certificates (optional)", + "type": "string" + }, + "name": { + "description": "Name of the remote cluster", + "type": "string" + }, + "priority": { + "description": "Priority of the remote cluster in locality based load balancing", + "minimum": 0, + "type": "integer" + }, + "weight": { + "default": 0, + "description": "Load balancing weight of the remote cluster", + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "address", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "ports": { + "description": "The list of ports that are exposed by this service.", + "items": { + "properties": { + "port": { + "description": "The port that will be exposed by this service.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "default": "TCP", + "description": "The IP protocol for this port. Supports \"TCP\", \"UDP\", and \"SCTP\". Default is TCP.", + "enum": [ + "TCP", + "UDP", + "SCTP" + ], + "type": "string" + } + }, + "required": [ + "port", + "protocol" + ], + "type": "object" + }, + "type": "array" + }, + "serviceAccount": { + "type": "string" + } + }, + "required": [ + "serviceAccount", + "clusters" + ], + "title": "Multi Cluster Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.0.1/multiclusterservice.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.0.1/multiclusterservice.meshery.layer5.io_definition.json new file mode 100755 index 00000000..327bd2f0 --- /dev/null +++ b/templates/oam/workloads/v0.0.1/multiclusterservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "MultiClusterService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "multiclusterservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.openservicemesh.io/v1alpha1", + "k8sKind": "MultiClusterService", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.0.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.0.1/tcproute.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.0.1/tcproute.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..d0cc9bfe --- /dev/null +++ b/templates/oam/workloads/v0.0.1/tcproute.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,25 @@ +{ + "properties": { + "matches": { + "description": "Match conditions of this route.", + "properties": { + "ports": { + "description": "Port numbers to match TCP traffic.", + "items": { + "type": "integer" + }, + "type": "array" + } + }, + "required": [ + "ports" + ], + "type": "object" + } + }, + "required": [ + "matches" + ], + "title": "TCP Route", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.0.1/tcproute.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.0.1/tcproute.meshery.layer5.io_definition.json new file mode 100755 index 00000000..fa1e7bd8 --- /dev/null +++ b/templates/oam/workloads/v0.0.1/tcproute.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TCPRoute", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "tcproute.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "specs.smi-spec.io/v1alpha4", + "k8sKind": "TCPRoute", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.0.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.0.1/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.0.1/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..13f0a9a2 --- /dev/null +++ b/templates/oam/workloads/v0.0.1/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,59 @@ +{ + "properties": { + "backends": { + "description": "The backend services of this split.", + "items": { + "properties": { + "service": { + "description": "Name of the Kubernetes service.", + "type": "string" + }, + "weight": { + "description": "Traffic weight value of this backend.", + "type": "number" + } + }, + "required": [ + "service", + "weight" + ], + "type": "object" + }, + "type": "array" + }, + "matches": { + "description": "The HTTP route groups that this traffic split should match.", + "items": { + "properties": { + "kind": { + "description": "Kind of the matching group.", + "enum": [ + "HTTPRouteGroup" + ], + "type": "string" + }, + "name": { + "description": "Name of the matching group.", + "type": "string" + } + }, + "required": [ + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "service": { + "description": "The apex service of this split.", + "type": "string" + } + }, + "required": [ + "service", + "backends" + ], + "title": "Traffic Split", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.0.1/trafficsplit.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.0.1/trafficsplit.meshery.layer5.io_definition.json new file mode 100755 index 00000000..7e2882ee --- /dev/null +++ b/templates/oam/workloads/v0.0.1/trafficsplit.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TrafficSplit", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "trafficsplit.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "split.smi-spec.io/v1alpha4", + "k8sKind": "TrafficSplit", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.0.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.0.1/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.0.1/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..83a24559 --- /dev/null +++ b/templates/oam/workloads/v0.0.1/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,91 @@ +{ + "properties": { + "destination": { + "description": "The destination of this traffic target.", + "properties": { + "kind": { + "description": "Kind of the destination.", + "type": "string" + }, + "name": { + "description": "Name of the destination.", + "type": "string" + }, + "namespace": { + "description": "Namespace of the destination.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "rules": { + "description": "Specifications of this traffic target.", + "items": { + "properties": { + "kind": { + "description": "Kind of this spec.", + "enum": [ + "HTTPRouteGroup", + "TCPRoute", + "UDPRoute" + ], + "type": "string" + }, + "matches": { + "description": "Match conditions of this spec.", + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "Name of this spec.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources of this traffic target.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "destination", + "rules", + "sources" + ], + "title": "Traffic Target", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.0.1/traffictarget.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.0.1/traffictarget.meshery.layer5.io_definition.json new file mode 100755 index 00000000..c74e3709 --- /dev/null +++ b/templates/oam/workloads/v0.0.1/traffictarget.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TrafficTarget", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "traffictarget.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "access.smi-spec.io/v1alpha3", + "k8sKind": "TrafficTarget", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.0.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.0.10/egress.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.0.10/egress.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..c77de28d --- /dev/null +++ b/templates/oam/workloads/v0.0.10/egress.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,103 @@ +{ + "properties": { + "hosts": { + "description": "Hosts that the sources are allowed to direct external traffic to.", + "items": { + "type": "string" + }, + "type": "array" + }, + "ipAddresses": { + "description": "IP address ranges that the sources are allowed to direct external traffic to.", + "items": { + "pattern": "((?:\\d{1,3}\\.){3}\\d{1,3})\\/(\\d{1,2})$", + "type": "string" + }, + "type": "array" + }, + "matches": { + "description": "The resource references an Egress policy should match on.", + "items": { + "properties": { + "apiGroup": { + "description": "API group for the resource being referenced.", + "type": "string" + }, + "kind": { + "description": "Type of resource being referenced.", + "type": "string" + }, + "name": { + "description": "Name of resource being referenced.", + "type": "string" + } + }, + "required": [ + "apiGroup", + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "ports": { + "description": "Ports that the sources are allowed to direct external traffic to.", + "items": { + "properties": { + "number": { + "description": "Port number of this port.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "description": "Protocol served by this port.", + "type": "string" + } + }, + "required": [ + "number", + "protocol" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources the egress policy is applicable to.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "enum": [ + "ServiceAccount" + ], + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "kind", + "name", + "namespace" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "sources", + "ports" + ], + "title": "Egress", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.0.10/egress.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.0.10/egress.meshery.layer5.io_definition.json new file mode 100755 index 00000000..75bb3ad2 --- /dev/null +++ b/templates/oam/workloads/v0.0.10/egress.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Egress", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "egress.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "policy.openservicemesh.io/v1alpha1", + "k8sKind": "Egress", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.0.10" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.0.10/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.0.10/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..6951d46c --- /dev/null +++ b/templates/oam/workloads/v0.0.10/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,60 @@ +{ + "properties": { + "matches": { + "description": "Match conditions of this route group.", + "items": { + "properties": { + "headers": { + "description": "Header match conditions of this route.", + "items": { + "additionalProperties": { + "type": "string" + }, + "description": "Header match condition of this route.", + "type": "object" + }, + "type": "array" + }, + "methods": { + "description": "The HTTP methods of this HTTP route.", + "items": { + "description": "The HTTP method of this HTTP route.", + "enum": [ + "*", + "GET", + "HEAD", + "PUT", + "POST", + "DELETE", + "CONNECT", + "OPTIONS", + "TRACE", + "PATCH" + ], + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "Name of the HTTP route.", + "type": "string" + }, + "pathRegex": { + "description": "URI path regex of the HTTP route.", + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "matches" + ], + "title": "HTTP Route Group", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.0.10/httproutegroup.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.0.10/httproutegroup.meshery.layer5.io_definition.json new file mode 100755 index 00000000..f1f8f4c4 --- /dev/null +++ b/templates/oam/workloads/v0.0.10/httproutegroup.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPRouteGroup", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httproutegroup.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "specs.smi-spec.io/v1alpha4", + "k8sKind": "HTTPRouteGroup", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.0.10" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.0.10/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.0.10/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..f5535897 --- /dev/null +++ b/templates/oam/workloads/v0.0.10/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,118 @@ +{ + "properties": { + "backends": { + "description": "Backends the IngressBackend policy is applicable to.", + "items": { + "properties": { + "name": { + "description": "Name of the backend.", + "type": "string" + }, + "port": { + "description": "Port of the backend.", + "properties": { + "number": { + "description": "Port number of this port.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "description": "Protocol served by this port.", + "type": "string" + } + }, + "required": [ + "number", + "protocol" + ], + "type": "object" + }, + "tls": { + "description": "TLS configuration for the backend.", + "properties": { + "skipClientCertValidation": { + "description": "Skip client certificate validation.", + "type": "boolean" + }, + "sniHosts": { + "description": "SNI hosts allowed by the backend.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "skipClientCertValidation" + ], + "type": "object" + } + }, + "required": [ + "name", + "port" + ], + "type": "object" + }, + "type": "array" + }, + "matches": { + "description": "The resource references an IngressBackend policy should match on.", + "items": { + "properties": { + "apiGroup": { + "description": "API group for the resource being referenced.", + "type": "string" + }, + "kind": { + "description": "Type of resource being referenced.", + "type": "string" + }, + "name": { + "description": "Name of resource being referenced.", + "type": "string" + } + }, + "required": [ + "apiGroup", + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources the IngressBackend policy is applicable to.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "backends", + "sources" + ], + "title": "Ingress Backend", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.0.10/ingressbackend.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.0.10/ingressbackend.meshery.layer5.io_definition.json new file mode 100755 index 00000000..df08a50a --- /dev/null +++ b/templates/oam/workloads/v0.0.10/ingressbackend.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "IngressBackend", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "ingressbackend.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "policy.openservicemesh.io/v1alpha1", + "k8sKind": "IngressBackend", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.0.10" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.0.10/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.0.10/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..b607634a --- /dev/null +++ b/templates/oam/workloads/v0.0.10/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,264 @@ +{ + "properties": { + "certificate": { + "description": "Configuration for certificate management", + "properties": { + "certKeyBitSize": { + "description": "Sets the certificate key bit size for data plane certificates.", + "type": "integer" + }, + "ingressGateway": { + "description": "Configuration for the ingress gateway's certificate", + "properties": { + "secret": { + "description": "Secret reference to store the certificate in", + "properties": { + "name": { + "description": "Name of the secret", + "type": "string" + }, + "namespace": { + "description": "Namespace of the secret", + "type": "string" + } + }, + "required": [ + "name", + "namespace" + ], + "type": "object" + }, + "subjectAltNames": { + "description": "Subject Alternative Names secured by the certificate", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "validityDuration": { + "description": "Certificate validity duration, represented as a sequence of decimal numbers each with optional fraction and a unit suffix", + "type": "string" + } + }, + "required": [ + "subjectAltNames", + "validityDuration", + "secret" + ], + "type": "object" + }, + "serviceCertValidityDuration": { + "description": "Sets the service certificate validity duration, represented as a sequence of decimal numbers each with optional fraction and a unit suffix.", + "type": "string" + } + }, + "required": [ + "serviceCertValidityDuration", + "certKeyBitSize" + ], + "type": "object" + }, + "featureFlags": { + "description": "OSM feature flags", + "properties": { + "enableAsyncProxyServiceMapping": { + "type": "boolean" + }, + "enableEgressPolicy": { + "type": "boolean" + }, + "enableEnvoyActiveHealthChecks": { + "type": "boolean" + }, + "enableIngressBackendPolicy": { + "type": "boolean" + }, + "enableMulticlusterMode": { + "type": "boolean" + }, + "enableRetryPolicy": { + "type": "boolean" + }, + "enableSnapshotCacheMode": { + "type": "boolean" + }, + "enableWASMStats": { + "type": "boolean" + } + }, + "type": "object" + }, + "observability": { + "description": "Configuration for observing the service mesh, including metrics, logs, tracing etc,.", + "properties": { + "enableDebugServer": { + "description": "Enables a debug endpoint on the osm-controller pod to list information regarding the mesh such as proxy connections, certificates, and SMI policies.", + "type": "boolean" + }, + "osmLogLevel": { + "description": "Allows setting OSM control plane log level at runtime", + "type": "string" + }, + "tracing": { + "description": "Configuration for distributed tracing", + "properties": { + "address": { + "description": "Address of Jaeger tracing deployment, if tracing is enabled.", + "type": "string" + }, + "enable": { + "description": "Enables Jaeger tracing for the mesh.", + "type": "boolean" + }, + "endpoint": { + "description": "Endpoint for tracing data, if tracing is enabled.", + "type": "string" + }, + "port": { + "description": "Port on which tracing is enabled.", + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "sidecar": { + "description": "Configuration for Envoy sidecar", + "properties": { + "configResyncInterval": { + "description": "Resync interval for regular proxy broadcast updates", + "type": "string" + }, + "enablePrivilegedInitContainer": { + "description": "Enables privileged init containers for pods in mesh. When false, init containers only have NET_ADMIN.", + "type": "boolean" + }, + "envoyImage": { + "description": "Image for the Envoy sidecar", + "type": "string" + }, + "envoyWindowsImage": { + "description": "Image for the Envoy sidecar on Windows workers", + "type": "string" + }, + "initContainerImage": { + "description": "Image for the init container", + "type": "string" + }, + "logLevel": { + "description": "Sets the logging verbosity of Envoy proxy sidecar, only applicable to newly created pods joining the mesh.", + "enum": [ + "trace", + "debug", + "info", + "warning", + "warn", + "error", + "critical", + "off" + ], + "type": "string" + }, + "maxDataPlaneConnections": { + "description": "Max allowed data plane sidecar connections", + "type": "integer" + }, + "resources": { + "properties": { + "limits": { + "additionalProperties": true, + "description": "Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/", + "type": "object" + }, + "requests": { + "additionalProperties": true, + "description": "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/", + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "traffic": { + "description": "Configuration for traffic management", + "properties": { + "enableEgress": { + "description": "Enables egress in the mesh", + "type": "boolean" + }, + "enablePermissiveTrafficPolicyMode": { + "description": "True for allowing traffic to flow between client and service pods within the mesh without SMI traffic policies, i.e. no traffic policy enforcement in the mesh. If set to false, enables deny-all traffic policy in mesh i.e. an SMI Traffic Target is necessary for services to communicate.", + "type": "boolean" + }, + "inboundExternalAuthorization": { + "description": "Configures external authorization for inbound and ingress connections.", + "properties": { + "address": { + "description": "Target destination endpoint that will handle external authorization.", + "type": "string" + }, + "enable": { + "description": "Enables/disables the inbound external authorization policy if present.", + "type": "boolean" + }, + "failureModeAllow": { + "description": "Allows specifying if traffic should succeed or fail if the external authorization endpoint fails to respond.", + "type": "boolean" + }, + "port": { + "description": "Remote destination port for the external authorization endpoint.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "statPrefix": { + "default": "inboundExtAuthz", + "description": "String prefix for inbound external authorization related metrics.", + "type": "string" + }, + "timeout": { + "default": "1s", + "description": "Defines the timeout to consider for the remote endpoint to reply in time.", + "type": "string" + } + }, + "type": "object" + }, + "inboundPortExclusionList": { + "description": "Global list of ports to exclude from inbound traffic interception by the sidecar proxy.", + "items": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "type": "array" + }, + "outboundIPRangeExclusionList": { + "description": "Global list of IP address ranges to exclude from outbound traffic interception by the sidecar proxy.", + "items": { + "pattern": "((?:\\d{1,3}\\.){3}\\d{1,3})\\/(\\d{1,2})$", + "type": "string" + }, + "type": "array" + }, + "outboundPortExclusionList": { + "description": "Global list of ports to exclude from outbound traffic interception by the sidecar proxy.", + "items": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "title": "Mesh Config", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.0.10/meshconfig.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.0.10/meshconfig.meshery.layer5.io_definition.json new file mode 100755 index 00000000..f786d705 --- /dev/null +++ b/templates/oam/workloads/v0.0.10/meshconfig.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "MeshConfig", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "meshconfig.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.openservicemesh.io/v1alpha1", + "k8sKind": "MeshConfig", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.0.10" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.0.10/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.0.10/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..60d4f7dd --- /dev/null +++ b/templates/oam/workloads/v0.0.10/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "properties": { + "clusters": { + "description": "The clusters the service accounts are hosted on.", + "items": { + "properties": { + "address": { + "description": "a routable IP + port", + "pattern": "^(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3}):[0-9]+$", + "type": "string" + }, + "certificate": { + "description": "mTLS certificates (optional)", + "type": "string" + }, + "name": { + "description": "Name of the remote cluster", + "type": "string" + }, + "priority": { + "description": "Priority of the remote cluster in locality based load balancing", + "minimum": 0, + "type": "integer" + }, + "weight": { + "default": 0, + "description": "Load balancing weight of the remote cluster", + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "address", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "ports": { + "description": "The list of ports that are exposed by this service.", + "items": { + "properties": { + "port": { + "description": "The port that will be exposed by this service.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "default": "TCP", + "description": "The IP protocol for this port. Supports \"TCP\", \"UDP\", and \"SCTP\". Default is TCP.", + "enum": [ + "TCP", + "UDP", + "SCTP" + ], + "type": "string" + } + }, + "required": [ + "port", + "protocol" + ], + "type": "object" + }, + "type": "array" + }, + "serviceAccount": { + "type": "string" + } + }, + "required": [ + "serviceAccount", + "clusters" + ], + "title": "Multi Cluster Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.0.10/multiclusterservice.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.0.10/multiclusterservice.meshery.layer5.io_definition.json new file mode 100755 index 00000000..77e57c97 --- /dev/null +++ b/templates/oam/workloads/v0.0.10/multiclusterservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "MultiClusterService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "multiclusterservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.openservicemesh.io/v1alpha1", + "k8sKind": "MultiClusterService", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.0.10" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.0.10/tcproute.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.0.10/tcproute.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..d0cc9bfe --- /dev/null +++ b/templates/oam/workloads/v0.0.10/tcproute.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,25 @@ +{ + "properties": { + "matches": { + "description": "Match conditions of this route.", + "properties": { + "ports": { + "description": "Port numbers to match TCP traffic.", + "items": { + "type": "integer" + }, + "type": "array" + } + }, + "required": [ + "ports" + ], + "type": "object" + } + }, + "required": [ + "matches" + ], + "title": "TCP Route", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.0.10/tcproute.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.0.10/tcproute.meshery.layer5.io_definition.json new file mode 100755 index 00000000..b460e436 --- /dev/null +++ b/templates/oam/workloads/v0.0.10/tcproute.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TCPRoute", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "tcproute.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "specs.smi-spec.io/v1alpha4", + "k8sKind": "TCPRoute", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.0.10" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.0.10/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.0.10/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..13f0a9a2 --- /dev/null +++ b/templates/oam/workloads/v0.0.10/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,59 @@ +{ + "properties": { + "backends": { + "description": "The backend services of this split.", + "items": { + "properties": { + "service": { + "description": "Name of the Kubernetes service.", + "type": "string" + }, + "weight": { + "description": "Traffic weight value of this backend.", + "type": "number" + } + }, + "required": [ + "service", + "weight" + ], + "type": "object" + }, + "type": "array" + }, + "matches": { + "description": "The HTTP route groups that this traffic split should match.", + "items": { + "properties": { + "kind": { + "description": "Kind of the matching group.", + "enum": [ + "HTTPRouteGroup" + ], + "type": "string" + }, + "name": { + "description": "Name of the matching group.", + "type": "string" + } + }, + "required": [ + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "service": { + "description": "The apex service of this split.", + "type": "string" + } + }, + "required": [ + "service", + "backends" + ], + "title": "Traffic Split", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.0.10/trafficsplit.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.0.10/trafficsplit.meshery.layer5.io_definition.json new file mode 100755 index 00000000..3da2edcb --- /dev/null +++ b/templates/oam/workloads/v0.0.10/trafficsplit.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TrafficSplit", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "trafficsplit.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "split.smi-spec.io/v1alpha4", + "k8sKind": "TrafficSplit", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.0.10" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.0.10/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.0.10/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..83a24559 --- /dev/null +++ b/templates/oam/workloads/v0.0.10/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,91 @@ +{ + "properties": { + "destination": { + "description": "The destination of this traffic target.", + "properties": { + "kind": { + "description": "Kind of the destination.", + "type": "string" + }, + "name": { + "description": "Name of the destination.", + "type": "string" + }, + "namespace": { + "description": "Namespace of the destination.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "rules": { + "description": "Specifications of this traffic target.", + "items": { + "properties": { + "kind": { + "description": "Kind of this spec.", + "enum": [ + "HTTPRouteGroup", + "TCPRoute", + "UDPRoute" + ], + "type": "string" + }, + "matches": { + "description": "Match conditions of this spec.", + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "Name of this spec.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources of this traffic target.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "destination", + "rules", + "sources" + ], + "title": "Traffic Target", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.0.10/traffictarget.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.0.10/traffictarget.meshery.layer5.io_definition.json new file mode 100755 index 00000000..72a84dab --- /dev/null +++ b/templates/oam/workloads/v0.0.10/traffictarget.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TrafficTarget", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "traffictarget.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "access.smi-spec.io/v1alpha3", + "k8sKind": "TrafficTarget", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.0.10" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.0.9/egress.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.0.9/egress.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..c77de28d --- /dev/null +++ b/templates/oam/workloads/v0.0.9/egress.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,103 @@ +{ + "properties": { + "hosts": { + "description": "Hosts that the sources are allowed to direct external traffic to.", + "items": { + "type": "string" + }, + "type": "array" + }, + "ipAddresses": { + "description": "IP address ranges that the sources are allowed to direct external traffic to.", + "items": { + "pattern": "((?:\\d{1,3}\\.){3}\\d{1,3})\\/(\\d{1,2})$", + "type": "string" + }, + "type": "array" + }, + "matches": { + "description": "The resource references an Egress policy should match on.", + "items": { + "properties": { + "apiGroup": { + "description": "API group for the resource being referenced.", + "type": "string" + }, + "kind": { + "description": "Type of resource being referenced.", + "type": "string" + }, + "name": { + "description": "Name of resource being referenced.", + "type": "string" + } + }, + "required": [ + "apiGroup", + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "ports": { + "description": "Ports that the sources are allowed to direct external traffic to.", + "items": { + "properties": { + "number": { + "description": "Port number of this port.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "description": "Protocol served by this port.", + "type": "string" + } + }, + "required": [ + "number", + "protocol" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources the egress policy is applicable to.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "enum": [ + "ServiceAccount" + ], + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "kind", + "name", + "namespace" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "sources", + "ports" + ], + "title": "Egress", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.0.9/egress.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.0.9/egress.meshery.layer5.io_definition.json new file mode 100755 index 00000000..a31c60a4 --- /dev/null +++ b/templates/oam/workloads/v0.0.9/egress.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Egress", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "egress.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "policy.openservicemesh.io/v1alpha1", + "k8sKind": "Egress", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.0.9" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.0.9/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.0.9/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..6951d46c --- /dev/null +++ b/templates/oam/workloads/v0.0.9/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,60 @@ +{ + "properties": { + "matches": { + "description": "Match conditions of this route group.", + "items": { + "properties": { + "headers": { + "description": "Header match conditions of this route.", + "items": { + "additionalProperties": { + "type": "string" + }, + "description": "Header match condition of this route.", + "type": "object" + }, + "type": "array" + }, + "methods": { + "description": "The HTTP methods of this HTTP route.", + "items": { + "description": "The HTTP method of this HTTP route.", + "enum": [ + "*", + "GET", + "HEAD", + "PUT", + "POST", + "DELETE", + "CONNECT", + "OPTIONS", + "TRACE", + "PATCH" + ], + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "Name of the HTTP route.", + "type": "string" + }, + "pathRegex": { + "description": "URI path regex of the HTTP route.", + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "matches" + ], + "title": "HTTP Route Group", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.0.9/httproutegroup.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.0.9/httproutegroup.meshery.layer5.io_definition.json new file mode 100755 index 00000000..d4b457d9 --- /dev/null +++ b/templates/oam/workloads/v0.0.9/httproutegroup.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPRouteGroup", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httproutegroup.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "specs.smi-spec.io/v1alpha4", + "k8sKind": "HTTPRouteGroup", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.0.9" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.0.9/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.0.9/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..f5535897 --- /dev/null +++ b/templates/oam/workloads/v0.0.9/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,118 @@ +{ + "properties": { + "backends": { + "description": "Backends the IngressBackend policy is applicable to.", + "items": { + "properties": { + "name": { + "description": "Name of the backend.", + "type": "string" + }, + "port": { + "description": "Port of the backend.", + "properties": { + "number": { + "description": "Port number of this port.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "description": "Protocol served by this port.", + "type": "string" + } + }, + "required": [ + "number", + "protocol" + ], + "type": "object" + }, + "tls": { + "description": "TLS configuration for the backend.", + "properties": { + "skipClientCertValidation": { + "description": "Skip client certificate validation.", + "type": "boolean" + }, + "sniHosts": { + "description": "SNI hosts allowed by the backend.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "skipClientCertValidation" + ], + "type": "object" + } + }, + "required": [ + "name", + "port" + ], + "type": "object" + }, + "type": "array" + }, + "matches": { + "description": "The resource references an IngressBackend policy should match on.", + "items": { + "properties": { + "apiGroup": { + "description": "API group for the resource being referenced.", + "type": "string" + }, + "kind": { + "description": "Type of resource being referenced.", + "type": "string" + }, + "name": { + "description": "Name of resource being referenced.", + "type": "string" + } + }, + "required": [ + "apiGroup", + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources the IngressBackend policy is applicable to.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "backends", + "sources" + ], + "title": "Ingress Backend", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.0.9/ingressbackend.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.0.9/ingressbackend.meshery.layer5.io_definition.json new file mode 100755 index 00000000..707cf823 --- /dev/null +++ b/templates/oam/workloads/v0.0.9/ingressbackend.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "IngressBackend", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "ingressbackend.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "policy.openservicemesh.io/v1alpha1", + "k8sKind": "IngressBackend", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.0.9" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.0.9/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.0.9/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..b607634a --- /dev/null +++ b/templates/oam/workloads/v0.0.9/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,264 @@ +{ + "properties": { + "certificate": { + "description": "Configuration for certificate management", + "properties": { + "certKeyBitSize": { + "description": "Sets the certificate key bit size for data plane certificates.", + "type": "integer" + }, + "ingressGateway": { + "description": "Configuration for the ingress gateway's certificate", + "properties": { + "secret": { + "description": "Secret reference to store the certificate in", + "properties": { + "name": { + "description": "Name of the secret", + "type": "string" + }, + "namespace": { + "description": "Namespace of the secret", + "type": "string" + } + }, + "required": [ + "name", + "namespace" + ], + "type": "object" + }, + "subjectAltNames": { + "description": "Subject Alternative Names secured by the certificate", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "validityDuration": { + "description": "Certificate validity duration, represented as a sequence of decimal numbers each with optional fraction and a unit suffix", + "type": "string" + } + }, + "required": [ + "subjectAltNames", + "validityDuration", + "secret" + ], + "type": "object" + }, + "serviceCertValidityDuration": { + "description": "Sets the service certificate validity duration, represented as a sequence of decimal numbers each with optional fraction and a unit suffix.", + "type": "string" + } + }, + "required": [ + "serviceCertValidityDuration", + "certKeyBitSize" + ], + "type": "object" + }, + "featureFlags": { + "description": "OSM feature flags", + "properties": { + "enableAsyncProxyServiceMapping": { + "type": "boolean" + }, + "enableEgressPolicy": { + "type": "boolean" + }, + "enableEnvoyActiveHealthChecks": { + "type": "boolean" + }, + "enableIngressBackendPolicy": { + "type": "boolean" + }, + "enableMulticlusterMode": { + "type": "boolean" + }, + "enableRetryPolicy": { + "type": "boolean" + }, + "enableSnapshotCacheMode": { + "type": "boolean" + }, + "enableWASMStats": { + "type": "boolean" + } + }, + "type": "object" + }, + "observability": { + "description": "Configuration for observing the service mesh, including metrics, logs, tracing etc,.", + "properties": { + "enableDebugServer": { + "description": "Enables a debug endpoint on the osm-controller pod to list information regarding the mesh such as proxy connections, certificates, and SMI policies.", + "type": "boolean" + }, + "osmLogLevel": { + "description": "Allows setting OSM control plane log level at runtime", + "type": "string" + }, + "tracing": { + "description": "Configuration for distributed tracing", + "properties": { + "address": { + "description": "Address of Jaeger tracing deployment, if tracing is enabled.", + "type": "string" + }, + "enable": { + "description": "Enables Jaeger tracing for the mesh.", + "type": "boolean" + }, + "endpoint": { + "description": "Endpoint for tracing data, if tracing is enabled.", + "type": "string" + }, + "port": { + "description": "Port on which tracing is enabled.", + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "sidecar": { + "description": "Configuration for Envoy sidecar", + "properties": { + "configResyncInterval": { + "description": "Resync interval for regular proxy broadcast updates", + "type": "string" + }, + "enablePrivilegedInitContainer": { + "description": "Enables privileged init containers for pods in mesh. When false, init containers only have NET_ADMIN.", + "type": "boolean" + }, + "envoyImage": { + "description": "Image for the Envoy sidecar", + "type": "string" + }, + "envoyWindowsImage": { + "description": "Image for the Envoy sidecar on Windows workers", + "type": "string" + }, + "initContainerImage": { + "description": "Image for the init container", + "type": "string" + }, + "logLevel": { + "description": "Sets the logging verbosity of Envoy proxy sidecar, only applicable to newly created pods joining the mesh.", + "enum": [ + "trace", + "debug", + "info", + "warning", + "warn", + "error", + "critical", + "off" + ], + "type": "string" + }, + "maxDataPlaneConnections": { + "description": "Max allowed data plane sidecar connections", + "type": "integer" + }, + "resources": { + "properties": { + "limits": { + "additionalProperties": true, + "description": "Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/", + "type": "object" + }, + "requests": { + "additionalProperties": true, + "description": "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/", + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "traffic": { + "description": "Configuration for traffic management", + "properties": { + "enableEgress": { + "description": "Enables egress in the mesh", + "type": "boolean" + }, + "enablePermissiveTrafficPolicyMode": { + "description": "True for allowing traffic to flow between client and service pods within the mesh without SMI traffic policies, i.e. no traffic policy enforcement in the mesh. If set to false, enables deny-all traffic policy in mesh i.e. an SMI Traffic Target is necessary for services to communicate.", + "type": "boolean" + }, + "inboundExternalAuthorization": { + "description": "Configures external authorization for inbound and ingress connections.", + "properties": { + "address": { + "description": "Target destination endpoint that will handle external authorization.", + "type": "string" + }, + "enable": { + "description": "Enables/disables the inbound external authorization policy if present.", + "type": "boolean" + }, + "failureModeAllow": { + "description": "Allows specifying if traffic should succeed or fail if the external authorization endpoint fails to respond.", + "type": "boolean" + }, + "port": { + "description": "Remote destination port for the external authorization endpoint.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "statPrefix": { + "default": "inboundExtAuthz", + "description": "String prefix for inbound external authorization related metrics.", + "type": "string" + }, + "timeout": { + "default": "1s", + "description": "Defines the timeout to consider for the remote endpoint to reply in time.", + "type": "string" + } + }, + "type": "object" + }, + "inboundPortExclusionList": { + "description": "Global list of ports to exclude from inbound traffic interception by the sidecar proxy.", + "items": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "type": "array" + }, + "outboundIPRangeExclusionList": { + "description": "Global list of IP address ranges to exclude from outbound traffic interception by the sidecar proxy.", + "items": { + "pattern": "((?:\\d{1,3}\\.){3}\\d{1,3})\\/(\\d{1,2})$", + "type": "string" + }, + "type": "array" + }, + "outboundPortExclusionList": { + "description": "Global list of ports to exclude from outbound traffic interception by the sidecar proxy.", + "items": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "title": "Mesh Config", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.0.9/meshconfig.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.0.9/meshconfig.meshery.layer5.io_definition.json new file mode 100755 index 00000000..2175867e --- /dev/null +++ b/templates/oam/workloads/v0.0.9/meshconfig.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "MeshConfig", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "meshconfig.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.openservicemesh.io/v1alpha1", + "k8sKind": "MeshConfig", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.0.9" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.0.9/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.0.9/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..60d4f7dd --- /dev/null +++ b/templates/oam/workloads/v0.0.9/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "properties": { + "clusters": { + "description": "The clusters the service accounts are hosted on.", + "items": { + "properties": { + "address": { + "description": "a routable IP + port", + "pattern": "^(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3}):[0-9]+$", + "type": "string" + }, + "certificate": { + "description": "mTLS certificates (optional)", + "type": "string" + }, + "name": { + "description": "Name of the remote cluster", + "type": "string" + }, + "priority": { + "description": "Priority of the remote cluster in locality based load balancing", + "minimum": 0, + "type": "integer" + }, + "weight": { + "default": 0, + "description": "Load balancing weight of the remote cluster", + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "address", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "ports": { + "description": "The list of ports that are exposed by this service.", + "items": { + "properties": { + "port": { + "description": "The port that will be exposed by this service.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "default": "TCP", + "description": "The IP protocol for this port. Supports \"TCP\", \"UDP\", and \"SCTP\". Default is TCP.", + "enum": [ + "TCP", + "UDP", + "SCTP" + ], + "type": "string" + } + }, + "required": [ + "port", + "protocol" + ], + "type": "object" + }, + "type": "array" + }, + "serviceAccount": { + "type": "string" + } + }, + "required": [ + "serviceAccount", + "clusters" + ], + "title": "Multi Cluster Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.0.9/multiclusterservice.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.0.9/multiclusterservice.meshery.layer5.io_definition.json new file mode 100755 index 00000000..daa669c5 --- /dev/null +++ b/templates/oam/workloads/v0.0.9/multiclusterservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "MultiClusterService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "multiclusterservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.openservicemesh.io/v1alpha1", + "k8sKind": "MultiClusterService", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.0.9" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.0.9/tcproute.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.0.9/tcproute.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..d0cc9bfe --- /dev/null +++ b/templates/oam/workloads/v0.0.9/tcproute.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,25 @@ +{ + "properties": { + "matches": { + "description": "Match conditions of this route.", + "properties": { + "ports": { + "description": "Port numbers to match TCP traffic.", + "items": { + "type": "integer" + }, + "type": "array" + } + }, + "required": [ + "ports" + ], + "type": "object" + } + }, + "required": [ + "matches" + ], + "title": "TCP Route", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.0.9/tcproute.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.0.9/tcproute.meshery.layer5.io_definition.json new file mode 100755 index 00000000..a05785f2 --- /dev/null +++ b/templates/oam/workloads/v0.0.9/tcproute.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TCPRoute", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "tcproute.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "specs.smi-spec.io/v1alpha4", + "k8sKind": "TCPRoute", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.0.9" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.0.9/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.0.9/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..13f0a9a2 --- /dev/null +++ b/templates/oam/workloads/v0.0.9/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,59 @@ +{ + "properties": { + "backends": { + "description": "The backend services of this split.", + "items": { + "properties": { + "service": { + "description": "Name of the Kubernetes service.", + "type": "string" + }, + "weight": { + "description": "Traffic weight value of this backend.", + "type": "number" + } + }, + "required": [ + "service", + "weight" + ], + "type": "object" + }, + "type": "array" + }, + "matches": { + "description": "The HTTP route groups that this traffic split should match.", + "items": { + "properties": { + "kind": { + "description": "Kind of the matching group.", + "enum": [ + "HTTPRouteGroup" + ], + "type": "string" + }, + "name": { + "description": "Name of the matching group.", + "type": "string" + } + }, + "required": [ + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "service": { + "description": "The apex service of this split.", + "type": "string" + } + }, + "required": [ + "service", + "backends" + ], + "title": "Traffic Split", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.0.9/trafficsplit.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.0.9/trafficsplit.meshery.layer5.io_definition.json new file mode 100755 index 00000000..3eee0bce --- /dev/null +++ b/templates/oam/workloads/v0.0.9/trafficsplit.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TrafficSplit", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "trafficsplit.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "split.smi-spec.io/v1alpha4", + "k8sKind": "TrafficSplit", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.0.9" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.0.9/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.0.9/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..83a24559 --- /dev/null +++ b/templates/oam/workloads/v0.0.9/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,91 @@ +{ + "properties": { + "destination": { + "description": "The destination of this traffic target.", + "properties": { + "kind": { + "description": "Kind of the destination.", + "type": "string" + }, + "name": { + "description": "Name of the destination.", + "type": "string" + }, + "namespace": { + "description": "Namespace of the destination.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "rules": { + "description": "Specifications of this traffic target.", + "items": { + "properties": { + "kind": { + "description": "Kind of this spec.", + "enum": [ + "HTTPRouteGroup", + "TCPRoute", + "UDPRoute" + ], + "type": "string" + }, + "matches": { + "description": "Match conditions of this spec.", + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "Name of this spec.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources of this traffic target.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "destination", + "rules", + "sources" + ], + "title": "Traffic Target", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.0.9/traffictarget.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.0.9/traffictarget.meshery.layer5.io_definition.json new file mode 100755 index 00000000..9b6bd0be --- /dev/null +++ b/templates/oam/workloads/v0.0.9/traffictarget.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TrafficTarget", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "traffictarget.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "access.smi-spec.io/v1alpha3", + "k8sKind": "TrafficTarget", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.0.9" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.1.0-rc.1/egress.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.1.0-rc.1/egress.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..c77de28d --- /dev/null +++ b/templates/oam/workloads/v0.1.0-rc.1/egress.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,103 @@ +{ + "properties": { + "hosts": { + "description": "Hosts that the sources are allowed to direct external traffic to.", + "items": { + "type": "string" + }, + "type": "array" + }, + "ipAddresses": { + "description": "IP address ranges that the sources are allowed to direct external traffic to.", + "items": { + "pattern": "((?:\\d{1,3}\\.){3}\\d{1,3})\\/(\\d{1,2})$", + "type": "string" + }, + "type": "array" + }, + "matches": { + "description": "The resource references an Egress policy should match on.", + "items": { + "properties": { + "apiGroup": { + "description": "API group for the resource being referenced.", + "type": "string" + }, + "kind": { + "description": "Type of resource being referenced.", + "type": "string" + }, + "name": { + "description": "Name of resource being referenced.", + "type": "string" + } + }, + "required": [ + "apiGroup", + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "ports": { + "description": "Ports that the sources are allowed to direct external traffic to.", + "items": { + "properties": { + "number": { + "description": "Port number of this port.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "description": "Protocol served by this port.", + "type": "string" + } + }, + "required": [ + "number", + "protocol" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources the egress policy is applicable to.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "enum": [ + "ServiceAccount" + ], + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "kind", + "name", + "namespace" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "sources", + "ports" + ], + "title": "Egress", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.1.0-rc.1/egress.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.1.0-rc.1/egress.meshery.layer5.io_definition.json new file mode 100755 index 00000000..1ffd6d15 --- /dev/null +++ b/templates/oam/workloads/v0.1.0-rc.1/egress.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Egress", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "egress.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "policy.openservicemesh.io/v1alpha1", + "k8sKind": "Egress", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.1.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.1.0-rc.1/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.1.0-rc.1/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..6951d46c --- /dev/null +++ b/templates/oam/workloads/v0.1.0-rc.1/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,60 @@ +{ + "properties": { + "matches": { + "description": "Match conditions of this route group.", + "items": { + "properties": { + "headers": { + "description": "Header match conditions of this route.", + "items": { + "additionalProperties": { + "type": "string" + }, + "description": "Header match condition of this route.", + "type": "object" + }, + "type": "array" + }, + "methods": { + "description": "The HTTP methods of this HTTP route.", + "items": { + "description": "The HTTP method of this HTTP route.", + "enum": [ + "*", + "GET", + "HEAD", + "PUT", + "POST", + "DELETE", + "CONNECT", + "OPTIONS", + "TRACE", + "PATCH" + ], + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "Name of the HTTP route.", + "type": "string" + }, + "pathRegex": { + "description": "URI path regex of the HTTP route.", + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "matches" + ], + "title": "HTTP Route Group", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.1.0-rc.1/httproutegroup.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.1.0-rc.1/httproutegroup.meshery.layer5.io_definition.json new file mode 100755 index 00000000..79e6d27b --- /dev/null +++ b/templates/oam/workloads/v0.1.0-rc.1/httproutegroup.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPRouteGroup", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httproutegroup.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "specs.smi-spec.io/v1alpha4", + "k8sKind": "HTTPRouteGroup", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.1.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.1.0-rc.1/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.1.0-rc.1/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..f5535897 --- /dev/null +++ b/templates/oam/workloads/v0.1.0-rc.1/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,118 @@ +{ + "properties": { + "backends": { + "description": "Backends the IngressBackend policy is applicable to.", + "items": { + "properties": { + "name": { + "description": "Name of the backend.", + "type": "string" + }, + "port": { + "description": "Port of the backend.", + "properties": { + "number": { + "description": "Port number of this port.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "description": "Protocol served by this port.", + "type": "string" + } + }, + "required": [ + "number", + "protocol" + ], + "type": "object" + }, + "tls": { + "description": "TLS configuration for the backend.", + "properties": { + "skipClientCertValidation": { + "description": "Skip client certificate validation.", + "type": "boolean" + }, + "sniHosts": { + "description": "SNI hosts allowed by the backend.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "skipClientCertValidation" + ], + "type": "object" + } + }, + "required": [ + "name", + "port" + ], + "type": "object" + }, + "type": "array" + }, + "matches": { + "description": "The resource references an IngressBackend policy should match on.", + "items": { + "properties": { + "apiGroup": { + "description": "API group for the resource being referenced.", + "type": "string" + }, + "kind": { + "description": "Type of resource being referenced.", + "type": "string" + }, + "name": { + "description": "Name of resource being referenced.", + "type": "string" + } + }, + "required": [ + "apiGroup", + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources the IngressBackend policy is applicable to.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "backends", + "sources" + ], + "title": "Ingress Backend", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.1.0-rc.1/ingressbackend.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.1.0-rc.1/ingressbackend.meshery.layer5.io_definition.json new file mode 100755 index 00000000..df893eb2 --- /dev/null +++ b/templates/oam/workloads/v0.1.0-rc.1/ingressbackend.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "IngressBackend", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "ingressbackend.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "policy.openservicemesh.io/v1alpha1", + "k8sKind": "IngressBackend", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.1.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.1.0-rc.1/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.1.0-rc.1/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..b607634a --- /dev/null +++ b/templates/oam/workloads/v0.1.0-rc.1/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,264 @@ +{ + "properties": { + "certificate": { + "description": "Configuration for certificate management", + "properties": { + "certKeyBitSize": { + "description": "Sets the certificate key bit size for data plane certificates.", + "type": "integer" + }, + "ingressGateway": { + "description": "Configuration for the ingress gateway's certificate", + "properties": { + "secret": { + "description": "Secret reference to store the certificate in", + "properties": { + "name": { + "description": "Name of the secret", + "type": "string" + }, + "namespace": { + "description": "Namespace of the secret", + "type": "string" + } + }, + "required": [ + "name", + "namespace" + ], + "type": "object" + }, + "subjectAltNames": { + "description": "Subject Alternative Names secured by the certificate", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "validityDuration": { + "description": "Certificate validity duration, represented as a sequence of decimal numbers each with optional fraction and a unit suffix", + "type": "string" + } + }, + "required": [ + "subjectAltNames", + "validityDuration", + "secret" + ], + "type": "object" + }, + "serviceCertValidityDuration": { + "description": "Sets the service certificate validity duration, represented as a sequence of decimal numbers each with optional fraction and a unit suffix.", + "type": "string" + } + }, + "required": [ + "serviceCertValidityDuration", + "certKeyBitSize" + ], + "type": "object" + }, + "featureFlags": { + "description": "OSM feature flags", + "properties": { + "enableAsyncProxyServiceMapping": { + "type": "boolean" + }, + "enableEgressPolicy": { + "type": "boolean" + }, + "enableEnvoyActiveHealthChecks": { + "type": "boolean" + }, + "enableIngressBackendPolicy": { + "type": "boolean" + }, + "enableMulticlusterMode": { + "type": "boolean" + }, + "enableRetryPolicy": { + "type": "boolean" + }, + "enableSnapshotCacheMode": { + "type": "boolean" + }, + "enableWASMStats": { + "type": "boolean" + } + }, + "type": "object" + }, + "observability": { + "description": "Configuration for observing the service mesh, including metrics, logs, tracing etc,.", + "properties": { + "enableDebugServer": { + "description": "Enables a debug endpoint on the osm-controller pod to list information regarding the mesh such as proxy connections, certificates, and SMI policies.", + "type": "boolean" + }, + "osmLogLevel": { + "description": "Allows setting OSM control plane log level at runtime", + "type": "string" + }, + "tracing": { + "description": "Configuration for distributed tracing", + "properties": { + "address": { + "description": "Address of Jaeger tracing deployment, if tracing is enabled.", + "type": "string" + }, + "enable": { + "description": "Enables Jaeger tracing for the mesh.", + "type": "boolean" + }, + "endpoint": { + "description": "Endpoint for tracing data, if tracing is enabled.", + "type": "string" + }, + "port": { + "description": "Port on which tracing is enabled.", + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "sidecar": { + "description": "Configuration for Envoy sidecar", + "properties": { + "configResyncInterval": { + "description": "Resync interval for regular proxy broadcast updates", + "type": "string" + }, + "enablePrivilegedInitContainer": { + "description": "Enables privileged init containers for pods in mesh. When false, init containers only have NET_ADMIN.", + "type": "boolean" + }, + "envoyImage": { + "description": "Image for the Envoy sidecar", + "type": "string" + }, + "envoyWindowsImage": { + "description": "Image for the Envoy sidecar on Windows workers", + "type": "string" + }, + "initContainerImage": { + "description": "Image for the init container", + "type": "string" + }, + "logLevel": { + "description": "Sets the logging verbosity of Envoy proxy sidecar, only applicable to newly created pods joining the mesh.", + "enum": [ + "trace", + "debug", + "info", + "warning", + "warn", + "error", + "critical", + "off" + ], + "type": "string" + }, + "maxDataPlaneConnections": { + "description": "Max allowed data plane sidecar connections", + "type": "integer" + }, + "resources": { + "properties": { + "limits": { + "additionalProperties": true, + "description": "Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/", + "type": "object" + }, + "requests": { + "additionalProperties": true, + "description": "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/", + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "traffic": { + "description": "Configuration for traffic management", + "properties": { + "enableEgress": { + "description": "Enables egress in the mesh", + "type": "boolean" + }, + "enablePermissiveTrafficPolicyMode": { + "description": "True for allowing traffic to flow between client and service pods within the mesh without SMI traffic policies, i.e. no traffic policy enforcement in the mesh. If set to false, enables deny-all traffic policy in mesh i.e. an SMI Traffic Target is necessary for services to communicate.", + "type": "boolean" + }, + "inboundExternalAuthorization": { + "description": "Configures external authorization for inbound and ingress connections.", + "properties": { + "address": { + "description": "Target destination endpoint that will handle external authorization.", + "type": "string" + }, + "enable": { + "description": "Enables/disables the inbound external authorization policy if present.", + "type": "boolean" + }, + "failureModeAllow": { + "description": "Allows specifying if traffic should succeed or fail if the external authorization endpoint fails to respond.", + "type": "boolean" + }, + "port": { + "description": "Remote destination port for the external authorization endpoint.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "statPrefix": { + "default": "inboundExtAuthz", + "description": "String prefix for inbound external authorization related metrics.", + "type": "string" + }, + "timeout": { + "default": "1s", + "description": "Defines the timeout to consider for the remote endpoint to reply in time.", + "type": "string" + } + }, + "type": "object" + }, + "inboundPortExclusionList": { + "description": "Global list of ports to exclude from inbound traffic interception by the sidecar proxy.", + "items": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "type": "array" + }, + "outboundIPRangeExclusionList": { + "description": "Global list of IP address ranges to exclude from outbound traffic interception by the sidecar proxy.", + "items": { + "pattern": "((?:\\d{1,3}\\.){3}\\d{1,3})\\/(\\d{1,2})$", + "type": "string" + }, + "type": "array" + }, + "outboundPortExclusionList": { + "description": "Global list of ports to exclude from outbound traffic interception by the sidecar proxy.", + "items": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "title": "Mesh Config", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.1.0-rc.1/meshconfig.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.1.0-rc.1/meshconfig.meshery.layer5.io_definition.json new file mode 100755 index 00000000..bcec0482 --- /dev/null +++ b/templates/oam/workloads/v0.1.0-rc.1/meshconfig.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "MeshConfig", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "meshconfig.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.openservicemesh.io/v1alpha1", + "k8sKind": "MeshConfig", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.1.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.1.0-rc.1/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.1.0-rc.1/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..60d4f7dd --- /dev/null +++ b/templates/oam/workloads/v0.1.0-rc.1/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "properties": { + "clusters": { + "description": "The clusters the service accounts are hosted on.", + "items": { + "properties": { + "address": { + "description": "a routable IP + port", + "pattern": "^(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3}):[0-9]+$", + "type": "string" + }, + "certificate": { + "description": "mTLS certificates (optional)", + "type": "string" + }, + "name": { + "description": "Name of the remote cluster", + "type": "string" + }, + "priority": { + "description": "Priority of the remote cluster in locality based load balancing", + "minimum": 0, + "type": "integer" + }, + "weight": { + "default": 0, + "description": "Load balancing weight of the remote cluster", + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "address", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "ports": { + "description": "The list of ports that are exposed by this service.", + "items": { + "properties": { + "port": { + "description": "The port that will be exposed by this service.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "default": "TCP", + "description": "The IP protocol for this port. Supports \"TCP\", \"UDP\", and \"SCTP\". Default is TCP.", + "enum": [ + "TCP", + "UDP", + "SCTP" + ], + "type": "string" + } + }, + "required": [ + "port", + "protocol" + ], + "type": "object" + }, + "type": "array" + }, + "serviceAccount": { + "type": "string" + } + }, + "required": [ + "serviceAccount", + "clusters" + ], + "title": "Multi Cluster Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.1.0-rc.1/multiclusterservice.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.1.0-rc.1/multiclusterservice.meshery.layer5.io_definition.json new file mode 100755 index 00000000..5143a40d --- /dev/null +++ b/templates/oam/workloads/v0.1.0-rc.1/multiclusterservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "MultiClusterService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "multiclusterservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.openservicemesh.io/v1alpha1", + "k8sKind": "MultiClusterService", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.1.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.1.0-rc.1/tcproute.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.1.0-rc.1/tcproute.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..d0cc9bfe --- /dev/null +++ b/templates/oam/workloads/v0.1.0-rc.1/tcproute.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,25 @@ +{ + "properties": { + "matches": { + "description": "Match conditions of this route.", + "properties": { + "ports": { + "description": "Port numbers to match TCP traffic.", + "items": { + "type": "integer" + }, + "type": "array" + } + }, + "required": [ + "ports" + ], + "type": "object" + } + }, + "required": [ + "matches" + ], + "title": "TCP Route", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.1.0-rc.1/tcproute.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.1.0-rc.1/tcproute.meshery.layer5.io_definition.json new file mode 100755 index 00000000..77607ae9 --- /dev/null +++ b/templates/oam/workloads/v0.1.0-rc.1/tcproute.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TCPRoute", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "tcproute.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "specs.smi-spec.io/v1alpha4", + "k8sKind": "TCPRoute", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.1.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.1.0-rc.1/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.1.0-rc.1/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..13f0a9a2 --- /dev/null +++ b/templates/oam/workloads/v0.1.0-rc.1/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,59 @@ +{ + "properties": { + "backends": { + "description": "The backend services of this split.", + "items": { + "properties": { + "service": { + "description": "Name of the Kubernetes service.", + "type": "string" + }, + "weight": { + "description": "Traffic weight value of this backend.", + "type": "number" + } + }, + "required": [ + "service", + "weight" + ], + "type": "object" + }, + "type": "array" + }, + "matches": { + "description": "The HTTP route groups that this traffic split should match.", + "items": { + "properties": { + "kind": { + "description": "Kind of the matching group.", + "enum": [ + "HTTPRouteGroup" + ], + "type": "string" + }, + "name": { + "description": "Name of the matching group.", + "type": "string" + } + }, + "required": [ + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "service": { + "description": "The apex service of this split.", + "type": "string" + } + }, + "required": [ + "service", + "backends" + ], + "title": "Traffic Split", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.1.0-rc.1/trafficsplit.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.1.0-rc.1/trafficsplit.meshery.layer5.io_definition.json new file mode 100755 index 00000000..14386bb4 --- /dev/null +++ b/templates/oam/workloads/v0.1.0-rc.1/trafficsplit.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TrafficSplit", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "trafficsplit.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "split.smi-spec.io/v1alpha4", + "k8sKind": "TrafficSplit", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.1.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.1.0-rc.1/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.1.0-rc.1/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..83a24559 --- /dev/null +++ b/templates/oam/workloads/v0.1.0-rc.1/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,91 @@ +{ + "properties": { + "destination": { + "description": "The destination of this traffic target.", + "properties": { + "kind": { + "description": "Kind of the destination.", + "type": "string" + }, + "name": { + "description": "Name of the destination.", + "type": "string" + }, + "namespace": { + "description": "Namespace of the destination.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "rules": { + "description": "Specifications of this traffic target.", + "items": { + "properties": { + "kind": { + "description": "Kind of this spec.", + "enum": [ + "HTTPRouteGroup", + "TCPRoute", + "UDPRoute" + ], + "type": "string" + }, + "matches": { + "description": "Match conditions of this spec.", + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "Name of this spec.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources of this traffic target.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "destination", + "rules", + "sources" + ], + "title": "Traffic Target", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.1.0-rc.1/traffictarget.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.1.0-rc.1/traffictarget.meshery.layer5.io_definition.json new file mode 100755 index 00000000..46a8483f --- /dev/null +++ b/templates/oam/workloads/v0.1.0-rc.1/traffictarget.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TrafficTarget", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "traffictarget.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "access.smi-spec.io/v1alpha3", + "k8sKind": "TrafficTarget", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.1.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.1.0/egress.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.1.0/egress.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..c77de28d --- /dev/null +++ b/templates/oam/workloads/v0.1.0/egress.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,103 @@ +{ + "properties": { + "hosts": { + "description": "Hosts that the sources are allowed to direct external traffic to.", + "items": { + "type": "string" + }, + "type": "array" + }, + "ipAddresses": { + "description": "IP address ranges that the sources are allowed to direct external traffic to.", + "items": { + "pattern": "((?:\\d{1,3}\\.){3}\\d{1,3})\\/(\\d{1,2})$", + "type": "string" + }, + "type": "array" + }, + "matches": { + "description": "The resource references an Egress policy should match on.", + "items": { + "properties": { + "apiGroup": { + "description": "API group for the resource being referenced.", + "type": "string" + }, + "kind": { + "description": "Type of resource being referenced.", + "type": "string" + }, + "name": { + "description": "Name of resource being referenced.", + "type": "string" + } + }, + "required": [ + "apiGroup", + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "ports": { + "description": "Ports that the sources are allowed to direct external traffic to.", + "items": { + "properties": { + "number": { + "description": "Port number of this port.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "description": "Protocol served by this port.", + "type": "string" + } + }, + "required": [ + "number", + "protocol" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources the egress policy is applicable to.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "enum": [ + "ServiceAccount" + ], + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "kind", + "name", + "namespace" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "sources", + "ports" + ], + "title": "Egress", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.1.0/egress.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.1.0/egress.meshery.layer5.io_definition.json new file mode 100755 index 00000000..416709f5 --- /dev/null +++ b/templates/oam/workloads/v0.1.0/egress.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Egress", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "egress.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "policy.openservicemesh.io/v1alpha1", + "k8sKind": "Egress", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.1.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.1.0/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.1.0/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..6951d46c --- /dev/null +++ b/templates/oam/workloads/v0.1.0/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,60 @@ +{ + "properties": { + "matches": { + "description": "Match conditions of this route group.", + "items": { + "properties": { + "headers": { + "description": "Header match conditions of this route.", + "items": { + "additionalProperties": { + "type": "string" + }, + "description": "Header match condition of this route.", + "type": "object" + }, + "type": "array" + }, + "methods": { + "description": "The HTTP methods of this HTTP route.", + "items": { + "description": "The HTTP method of this HTTP route.", + "enum": [ + "*", + "GET", + "HEAD", + "PUT", + "POST", + "DELETE", + "CONNECT", + "OPTIONS", + "TRACE", + "PATCH" + ], + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "Name of the HTTP route.", + "type": "string" + }, + "pathRegex": { + "description": "URI path regex of the HTTP route.", + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "matches" + ], + "title": "HTTP Route Group", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.1.0/httproutegroup.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.1.0/httproutegroup.meshery.layer5.io_definition.json new file mode 100755 index 00000000..00b78b28 --- /dev/null +++ b/templates/oam/workloads/v0.1.0/httproutegroup.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPRouteGroup", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httproutegroup.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "specs.smi-spec.io/v1alpha4", + "k8sKind": "HTTPRouteGroup", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.1.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.1.0/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.1.0/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..f5535897 --- /dev/null +++ b/templates/oam/workloads/v0.1.0/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,118 @@ +{ + "properties": { + "backends": { + "description": "Backends the IngressBackend policy is applicable to.", + "items": { + "properties": { + "name": { + "description": "Name of the backend.", + "type": "string" + }, + "port": { + "description": "Port of the backend.", + "properties": { + "number": { + "description": "Port number of this port.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "description": "Protocol served by this port.", + "type": "string" + } + }, + "required": [ + "number", + "protocol" + ], + "type": "object" + }, + "tls": { + "description": "TLS configuration for the backend.", + "properties": { + "skipClientCertValidation": { + "description": "Skip client certificate validation.", + "type": "boolean" + }, + "sniHosts": { + "description": "SNI hosts allowed by the backend.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "skipClientCertValidation" + ], + "type": "object" + } + }, + "required": [ + "name", + "port" + ], + "type": "object" + }, + "type": "array" + }, + "matches": { + "description": "The resource references an IngressBackend policy should match on.", + "items": { + "properties": { + "apiGroup": { + "description": "API group for the resource being referenced.", + "type": "string" + }, + "kind": { + "description": "Type of resource being referenced.", + "type": "string" + }, + "name": { + "description": "Name of resource being referenced.", + "type": "string" + } + }, + "required": [ + "apiGroup", + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources the IngressBackend policy is applicable to.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "backends", + "sources" + ], + "title": "Ingress Backend", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.1.0/ingressbackend.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.1.0/ingressbackend.meshery.layer5.io_definition.json new file mode 100755 index 00000000..e9b2dfa6 --- /dev/null +++ b/templates/oam/workloads/v0.1.0/ingressbackend.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "IngressBackend", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "ingressbackend.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "policy.openservicemesh.io/v1alpha1", + "k8sKind": "IngressBackend", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.1.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.1.0/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.1.0/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..b607634a --- /dev/null +++ b/templates/oam/workloads/v0.1.0/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,264 @@ +{ + "properties": { + "certificate": { + "description": "Configuration for certificate management", + "properties": { + "certKeyBitSize": { + "description": "Sets the certificate key bit size for data plane certificates.", + "type": "integer" + }, + "ingressGateway": { + "description": "Configuration for the ingress gateway's certificate", + "properties": { + "secret": { + "description": "Secret reference to store the certificate in", + "properties": { + "name": { + "description": "Name of the secret", + "type": "string" + }, + "namespace": { + "description": "Namespace of the secret", + "type": "string" + } + }, + "required": [ + "name", + "namespace" + ], + "type": "object" + }, + "subjectAltNames": { + "description": "Subject Alternative Names secured by the certificate", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "validityDuration": { + "description": "Certificate validity duration, represented as a sequence of decimal numbers each with optional fraction and a unit suffix", + "type": "string" + } + }, + "required": [ + "subjectAltNames", + "validityDuration", + "secret" + ], + "type": "object" + }, + "serviceCertValidityDuration": { + "description": "Sets the service certificate validity duration, represented as a sequence of decimal numbers each with optional fraction and a unit suffix.", + "type": "string" + } + }, + "required": [ + "serviceCertValidityDuration", + "certKeyBitSize" + ], + "type": "object" + }, + "featureFlags": { + "description": "OSM feature flags", + "properties": { + "enableAsyncProxyServiceMapping": { + "type": "boolean" + }, + "enableEgressPolicy": { + "type": "boolean" + }, + "enableEnvoyActiveHealthChecks": { + "type": "boolean" + }, + "enableIngressBackendPolicy": { + "type": "boolean" + }, + "enableMulticlusterMode": { + "type": "boolean" + }, + "enableRetryPolicy": { + "type": "boolean" + }, + "enableSnapshotCacheMode": { + "type": "boolean" + }, + "enableWASMStats": { + "type": "boolean" + } + }, + "type": "object" + }, + "observability": { + "description": "Configuration for observing the service mesh, including metrics, logs, tracing etc,.", + "properties": { + "enableDebugServer": { + "description": "Enables a debug endpoint on the osm-controller pod to list information regarding the mesh such as proxy connections, certificates, and SMI policies.", + "type": "boolean" + }, + "osmLogLevel": { + "description": "Allows setting OSM control plane log level at runtime", + "type": "string" + }, + "tracing": { + "description": "Configuration for distributed tracing", + "properties": { + "address": { + "description": "Address of Jaeger tracing deployment, if tracing is enabled.", + "type": "string" + }, + "enable": { + "description": "Enables Jaeger tracing for the mesh.", + "type": "boolean" + }, + "endpoint": { + "description": "Endpoint for tracing data, if tracing is enabled.", + "type": "string" + }, + "port": { + "description": "Port on which tracing is enabled.", + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "sidecar": { + "description": "Configuration for Envoy sidecar", + "properties": { + "configResyncInterval": { + "description": "Resync interval for regular proxy broadcast updates", + "type": "string" + }, + "enablePrivilegedInitContainer": { + "description": "Enables privileged init containers for pods in mesh. When false, init containers only have NET_ADMIN.", + "type": "boolean" + }, + "envoyImage": { + "description": "Image for the Envoy sidecar", + "type": "string" + }, + "envoyWindowsImage": { + "description": "Image for the Envoy sidecar on Windows workers", + "type": "string" + }, + "initContainerImage": { + "description": "Image for the init container", + "type": "string" + }, + "logLevel": { + "description": "Sets the logging verbosity of Envoy proxy sidecar, only applicable to newly created pods joining the mesh.", + "enum": [ + "trace", + "debug", + "info", + "warning", + "warn", + "error", + "critical", + "off" + ], + "type": "string" + }, + "maxDataPlaneConnections": { + "description": "Max allowed data plane sidecar connections", + "type": "integer" + }, + "resources": { + "properties": { + "limits": { + "additionalProperties": true, + "description": "Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/", + "type": "object" + }, + "requests": { + "additionalProperties": true, + "description": "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/", + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "traffic": { + "description": "Configuration for traffic management", + "properties": { + "enableEgress": { + "description": "Enables egress in the mesh", + "type": "boolean" + }, + "enablePermissiveTrafficPolicyMode": { + "description": "True for allowing traffic to flow between client and service pods within the mesh without SMI traffic policies, i.e. no traffic policy enforcement in the mesh. If set to false, enables deny-all traffic policy in mesh i.e. an SMI Traffic Target is necessary for services to communicate.", + "type": "boolean" + }, + "inboundExternalAuthorization": { + "description": "Configures external authorization for inbound and ingress connections.", + "properties": { + "address": { + "description": "Target destination endpoint that will handle external authorization.", + "type": "string" + }, + "enable": { + "description": "Enables/disables the inbound external authorization policy if present.", + "type": "boolean" + }, + "failureModeAllow": { + "description": "Allows specifying if traffic should succeed or fail if the external authorization endpoint fails to respond.", + "type": "boolean" + }, + "port": { + "description": "Remote destination port for the external authorization endpoint.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "statPrefix": { + "default": "inboundExtAuthz", + "description": "String prefix for inbound external authorization related metrics.", + "type": "string" + }, + "timeout": { + "default": "1s", + "description": "Defines the timeout to consider for the remote endpoint to reply in time.", + "type": "string" + } + }, + "type": "object" + }, + "inboundPortExclusionList": { + "description": "Global list of ports to exclude from inbound traffic interception by the sidecar proxy.", + "items": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "type": "array" + }, + "outboundIPRangeExclusionList": { + "description": "Global list of IP address ranges to exclude from outbound traffic interception by the sidecar proxy.", + "items": { + "pattern": "((?:\\d{1,3}\\.){3}\\d{1,3})\\/(\\d{1,2})$", + "type": "string" + }, + "type": "array" + }, + "outboundPortExclusionList": { + "description": "Global list of ports to exclude from outbound traffic interception by the sidecar proxy.", + "items": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "title": "Mesh Config", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.1.0/meshconfig.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.1.0/meshconfig.meshery.layer5.io_definition.json new file mode 100755 index 00000000..5b7e2ce3 --- /dev/null +++ b/templates/oam/workloads/v0.1.0/meshconfig.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "MeshConfig", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "meshconfig.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.openservicemesh.io/v1alpha1", + "k8sKind": "MeshConfig", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.1.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.1.0/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.1.0/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..60d4f7dd --- /dev/null +++ b/templates/oam/workloads/v0.1.0/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "properties": { + "clusters": { + "description": "The clusters the service accounts are hosted on.", + "items": { + "properties": { + "address": { + "description": "a routable IP + port", + "pattern": "^(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3}):[0-9]+$", + "type": "string" + }, + "certificate": { + "description": "mTLS certificates (optional)", + "type": "string" + }, + "name": { + "description": "Name of the remote cluster", + "type": "string" + }, + "priority": { + "description": "Priority of the remote cluster in locality based load balancing", + "minimum": 0, + "type": "integer" + }, + "weight": { + "default": 0, + "description": "Load balancing weight of the remote cluster", + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "address", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "ports": { + "description": "The list of ports that are exposed by this service.", + "items": { + "properties": { + "port": { + "description": "The port that will be exposed by this service.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "default": "TCP", + "description": "The IP protocol for this port. Supports \"TCP\", \"UDP\", and \"SCTP\". Default is TCP.", + "enum": [ + "TCP", + "UDP", + "SCTP" + ], + "type": "string" + } + }, + "required": [ + "port", + "protocol" + ], + "type": "object" + }, + "type": "array" + }, + "serviceAccount": { + "type": "string" + } + }, + "required": [ + "serviceAccount", + "clusters" + ], + "title": "Multi Cluster Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.1.0/multiclusterservice.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.1.0/multiclusterservice.meshery.layer5.io_definition.json new file mode 100755 index 00000000..848397ee --- /dev/null +++ b/templates/oam/workloads/v0.1.0/multiclusterservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "MultiClusterService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "multiclusterservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.openservicemesh.io/v1alpha1", + "k8sKind": "MultiClusterService", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.1.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.1.0/tcproute.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.1.0/tcproute.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..d0cc9bfe --- /dev/null +++ b/templates/oam/workloads/v0.1.0/tcproute.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,25 @@ +{ + "properties": { + "matches": { + "description": "Match conditions of this route.", + "properties": { + "ports": { + "description": "Port numbers to match TCP traffic.", + "items": { + "type": "integer" + }, + "type": "array" + } + }, + "required": [ + "ports" + ], + "type": "object" + } + }, + "required": [ + "matches" + ], + "title": "TCP Route", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.1.0/tcproute.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.1.0/tcproute.meshery.layer5.io_definition.json new file mode 100755 index 00000000..5508ba22 --- /dev/null +++ b/templates/oam/workloads/v0.1.0/tcproute.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TCPRoute", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "tcproute.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "specs.smi-spec.io/v1alpha4", + "k8sKind": "TCPRoute", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.1.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.1.0/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.1.0/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..13f0a9a2 --- /dev/null +++ b/templates/oam/workloads/v0.1.0/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,59 @@ +{ + "properties": { + "backends": { + "description": "The backend services of this split.", + "items": { + "properties": { + "service": { + "description": "Name of the Kubernetes service.", + "type": "string" + }, + "weight": { + "description": "Traffic weight value of this backend.", + "type": "number" + } + }, + "required": [ + "service", + "weight" + ], + "type": "object" + }, + "type": "array" + }, + "matches": { + "description": "The HTTP route groups that this traffic split should match.", + "items": { + "properties": { + "kind": { + "description": "Kind of the matching group.", + "enum": [ + "HTTPRouteGroup" + ], + "type": "string" + }, + "name": { + "description": "Name of the matching group.", + "type": "string" + } + }, + "required": [ + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "service": { + "description": "The apex service of this split.", + "type": "string" + } + }, + "required": [ + "service", + "backends" + ], + "title": "Traffic Split", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.1.0/trafficsplit.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.1.0/trafficsplit.meshery.layer5.io_definition.json new file mode 100755 index 00000000..11616121 --- /dev/null +++ b/templates/oam/workloads/v0.1.0/trafficsplit.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TrafficSplit", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "trafficsplit.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "split.smi-spec.io/v1alpha4", + "k8sKind": "TrafficSplit", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.1.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.1.0/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.1.0/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..83a24559 --- /dev/null +++ b/templates/oam/workloads/v0.1.0/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,91 @@ +{ + "properties": { + "destination": { + "description": "The destination of this traffic target.", + "properties": { + "kind": { + "description": "Kind of the destination.", + "type": "string" + }, + "name": { + "description": "Name of the destination.", + "type": "string" + }, + "namespace": { + "description": "Namespace of the destination.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "rules": { + "description": "Specifications of this traffic target.", + "items": { + "properties": { + "kind": { + "description": "Kind of this spec.", + "enum": [ + "HTTPRouteGroup", + "TCPRoute", + "UDPRoute" + ], + "type": "string" + }, + "matches": { + "description": "Match conditions of this spec.", + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "Name of this spec.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources of this traffic target.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "destination", + "rules", + "sources" + ], + "title": "Traffic Target", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.1.0/traffictarget.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.1.0/traffictarget.meshery.layer5.io_definition.json new file mode 100755 index 00000000..ccf8121d --- /dev/null +++ b/templates/oam/workloads/v0.1.0/traffictarget.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TrafficTarget", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "traffictarget.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "access.smi-spec.io/v1alpha3", + "k8sKind": "TrafficTarget", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.1.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.10.0-rc.1/egress.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.10.0-rc.1/egress.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..c77de28d --- /dev/null +++ b/templates/oam/workloads/v0.10.0-rc.1/egress.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,103 @@ +{ + "properties": { + "hosts": { + "description": "Hosts that the sources are allowed to direct external traffic to.", + "items": { + "type": "string" + }, + "type": "array" + }, + "ipAddresses": { + "description": "IP address ranges that the sources are allowed to direct external traffic to.", + "items": { + "pattern": "((?:\\d{1,3}\\.){3}\\d{1,3})\\/(\\d{1,2})$", + "type": "string" + }, + "type": "array" + }, + "matches": { + "description": "The resource references an Egress policy should match on.", + "items": { + "properties": { + "apiGroup": { + "description": "API group for the resource being referenced.", + "type": "string" + }, + "kind": { + "description": "Type of resource being referenced.", + "type": "string" + }, + "name": { + "description": "Name of resource being referenced.", + "type": "string" + } + }, + "required": [ + "apiGroup", + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "ports": { + "description": "Ports that the sources are allowed to direct external traffic to.", + "items": { + "properties": { + "number": { + "description": "Port number of this port.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "description": "Protocol served by this port.", + "type": "string" + } + }, + "required": [ + "number", + "protocol" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources the egress policy is applicable to.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "enum": [ + "ServiceAccount" + ], + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "kind", + "name", + "namespace" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "sources", + "ports" + ], + "title": "Egress", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.10.0-rc.1/egress.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.10.0-rc.1/egress.meshery.layer5.io_definition.json new file mode 100755 index 00000000..d530f7ea --- /dev/null +++ b/templates/oam/workloads/v0.10.0-rc.1/egress.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Egress", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "egress.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "policy.openservicemesh.io/v1alpha1", + "k8sKind": "Egress", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.10.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.10.0-rc.1/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.10.0-rc.1/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..6951d46c --- /dev/null +++ b/templates/oam/workloads/v0.10.0-rc.1/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,60 @@ +{ + "properties": { + "matches": { + "description": "Match conditions of this route group.", + "items": { + "properties": { + "headers": { + "description": "Header match conditions of this route.", + "items": { + "additionalProperties": { + "type": "string" + }, + "description": "Header match condition of this route.", + "type": "object" + }, + "type": "array" + }, + "methods": { + "description": "The HTTP methods of this HTTP route.", + "items": { + "description": "The HTTP method of this HTTP route.", + "enum": [ + "*", + "GET", + "HEAD", + "PUT", + "POST", + "DELETE", + "CONNECT", + "OPTIONS", + "TRACE", + "PATCH" + ], + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "Name of the HTTP route.", + "type": "string" + }, + "pathRegex": { + "description": "URI path regex of the HTTP route.", + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "matches" + ], + "title": "HTTP Route Group", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.10.0-rc.1/httproutegroup.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.10.0-rc.1/httproutegroup.meshery.layer5.io_definition.json new file mode 100755 index 00000000..254e4c13 --- /dev/null +++ b/templates/oam/workloads/v0.10.0-rc.1/httproutegroup.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPRouteGroup", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httproutegroup.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "specs.smi-spec.io/v1alpha4", + "k8sKind": "HTTPRouteGroup", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.10.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.10.0-rc.1/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.10.0-rc.1/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..f5535897 --- /dev/null +++ b/templates/oam/workloads/v0.10.0-rc.1/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,118 @@ +{ + "properties": { + "backends": { + "description": "Backends the IngressBackend policy is applicable to.", + "items": { + "properties": { + "name": { + "description": "Name of the backend.", + "type": "string" + }, + "port": { + "description": "Port of the backend.", + "properties": { + "number": { + "description": "Port number of this port.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "description": "Protocol served by this port.", + "type": "string" + } + }, + "required": [ + "number", + "protocol" + ], + "type": "object" + }, + "tls": { + "description": "TLS configuration for the backend.", + "properties": { + "skipClientCertValidation": { + "description": "Skip client certificate validation.", + "type": "boolean" + }, + "sniHosts": { + "description": "SNI hosts allowed by the backend.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "skipClientCertValidation" + ], + "type": "object" + } + }, + "required": [ + "name", + "port" + ], + "type": "object" + }, + "type": "array" + }, + "matches": { + "description": "The resource references an IngressBackend policy should match on.", + "items": { + "properties": { + "apiGroup": { + "description": "API group for the resource being referenced.", + "type": "string" + }, + "kind": { + "description": "Type of resource being referenced.", + "type": "string" + }, + "name": { + "description": "Name of resource being referenced.", + "type": "string" + } + }, + "required": [ + "apiGroup", + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources the IngressBackend policy is applicable to.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "backends", + "sources" + ], + "title": "Ingress Backend", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.10.0-rc.1/ingressbackend.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.10.0-rc.1/ingressbackend.meshery.layer5.io_definition.json new file mode 100755 index 00000000..883f368a --- /dev/null +++ b/templates/oam/workloads/v0.10.0-rc.1/ingressbackend.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "IngressBackend", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "ingressbackend.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "policy.openservicemesh.io/v1alpha1", + "k8sKind": "IngressBackend", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.10.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.10.0-rc.1/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.10.0-rc.1/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..b607634a --- /dev/null +++ b/templates/oam/workloads/v0.10.0-rc.1/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,264 @@ +{ + "properties": { + "certificate": { + "description": "Configuration for certificate management", + "properties": { + "certKeyBitSize": { + "description": "Sets the certificate key bit size for data plane certificates.", + "type": "integer" + }, + "ingressGateway": { + "description": "Configuration for the ingress gateway's certificate", + "properties": { + "secret": { + "description": "Secret reference to store the certificate in", + "properties": { + "name": { + "description": "Name of the secret", + "type": "string" + }, + "namespace": { + "description": "Namespace of the secret", + "type": "string" + } + }, + "required": [ + "name", + "namespace" + ], + "type": "object" + }, + "subjectAltNames": { + "description": "Subject Alternative Names secured by the certificate", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "validityDuration": { + "description": "Certificate validity duration, represented as a sequence of decimal numbers each with optional fraction and a unit suffix", + "type": "string" + } + }, + "required": [ + "subjectAltNames", + "validityDuration", + "secret" + ], + "type": "object" + }, + "serviceCertValidityDuration": { + "description": "Sets the service certificate validity duration, represented as a sequence of decimal numbers each with optional fraction and a unit suffix.", + "type": "string" + } + }, + "required": [ + "serviceCertValidityDuration", + "certKeyBitSize" + ], + "type": "object" + }, + "featureFlags": { + "description": "OSM feature flags", + "properties": { + "enableAsyncProxyServiceMapping": { + "type": "boolean" + }, + "enableEgressPolicy": { + "type": "boolean" + }, + "enableEnvoyActiveHealthChecks": { + "type": "boolean" + }, + "enableIngressBackendPolicy": { + "type": "boolean" + }, + "enableMulticlusterMode": { + "type": "boolean" + }, + "enableRetryPolicy": { + "type": "boolean" + }, + "enableSnapshotCacheMode": { + "type": "boolean" + }, + "enableWASMStats": { + "type": "boolean" + } + }, + "type": "object" + }, + "observability": { + "description": "Configuration for observing the service mesh, including metrics, logs, tracing etc,.", + "properties": { + "enableDebugServer": { + "description": "Enables a debug endpoint on the osm-controller pod to list information regarding the mesh such as proxy connections, certificates, and SMI policies.", + "type": "boolean" + }, + "osmLogLevel": { + "description": "Allows setting OSM control plane log level at runtime", + "type": "string" + }, + "tracing": { + "description": "Configuration for distributed tracing", + "properties": { + "address": { + "description": "Address of Jaeger tracing deployment, if tracing is enabled.", + "type": "string" + }, + "enable": { + "description": "Enables Jaeger tracing for the mesh.", + "type": "boolean" + }, + "endpoint": { + "description": "Endpoint for tracing data, if tracing is enabled.", + "type": "string" + }, + "port": { + "description": "Port on which tracing is enabled.", + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "sidecar": { + "description": "Configuration for Envoy sidecar", + "properties": { + "configResyncInterval": { + "description": "Resync interval for regular proxy broadcast updates", + "type": "string" + }, + "enablePrivilegedInitContainer": { + "description": "Enables privileged init containers for pods in mesh. When false, init containers only have NET_ADMIN.", + "type": "boolean" + }, + "envoyImage": { + "description": "Image for the Envoy sidecar", + "type": "string" + }, + "envoyWindowsImage": { + "description": "Image for the Envoy sidecar on Windows workers", + "type": "string" + }, + "initContainerImage": { + "description": "Image for the init container", + "type": "string" + }, + "logLevel": { + "description": "Sets the logging verbosity of Envoy proxy sidecar, only applicable to newly created pods joining the mesh.", + "enum": [ + "trace", + "debug", + "info", + "warning", + "warn", + "error", + "critical", + "off" + ], + "type": "string" + }, + "maxDataPlaneConnections": { + "description": "Max allowed data plane sidecar connections", + "type": "integer" + }, + "resources": { + "properties": { + "limits": { + "additionalProperties": true, + "description": "Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/", + "type": "object" + }, + "requests": { + "additionalProperties": true, + "description": "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/", + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "traffic": { + "description": "Configuration for traffic management", + "properties": { + "enableEgress": { + "description": "Enables egress in the mesh", + "type": "boolean" + }, + "enablePermissiveTrafficPolicyMode": { + "description": "True for allowing traffic to flow between client and service pods within the mesh without SMI traffic policies, i.e. no traffic policy enforcement in the mesh. If set to false, enables deny-all traffic policy in mesh i.e. an SMI Traffic Target is necessary for services to communicate.", + "type": "boolean" + }, + "inboundExternalAuthorization": { + "description": "Configures external authorization for inbound and ingress connections.", + "properties": { + "address": { + "description": "Target destination endpoint that will handle external authorization.", + "type": "string" + }, + "enable": { + "description": "Enables/disables the inbound external authorization policy if present.", + "type": "boolean" + }, + "failureModeAllow": { + "description": "Allows specifying if traffic should succeed or fail if the external authorization endpoint fails to respond.", + "type": "boolean" + }, + "port": { + "description": "Remote destination port for the external authorization endpoint.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "statPrefix": { + "default": "inboundExtAuthz", + "description": "String prefix for inbound external authorization related metrics.", + "type": "string" + }, + "timeout": { + "default": "1s", + "description": "Defines the timeout to consider for the remote endpoint to reply in time.", + "type": "string" + } + }, + "type": "object" + }, + "inboundPortExclusionList": { + "description": "Global list of ports to exclude from inbound traffic interception by the sidecar proxy.", + "items": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "type": "array" + }, + "outboundIPRangeExclusionList": { + "description": "Global list of IP address ranges to exclude from outbound traffic interception by the sidecar proxy.", + "items": { + "pattern": "((?:\\d{1,3}\\.){3}\\d{1,3})\\/(\\d{1,2})$", + "type": "string" + }, + "type": "array" + }, + "outboundPortExclusionList": { + "description": "Global list of ports to exclude from outbound traffic interception by the sidecar proxy.", + "items": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "title": "Mesh Config", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.10.0-rc.1/meshconfig.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.10.0-rc.1/meshconfig.meshery.layer5.io_definition.json new file mode 100755 index 00000000..f4851e0c --- /dev/null +++ b/templates/oam/workloads/v0.10.0-rc.1/meshconfig.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "MeshConfig", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "meshconfig.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.openservicemesh.io/v1alpha1", + "k8sKind": "MeshConfig", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.10.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.10.0-rc.1/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.10.0-rc.1/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..60d4f7dd --- /dev/null +++ b/templates/oam/workloads/v0.10.0-rc.1/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "properties": { + "clusters": { + "description": "The clusters the service accounts are hosted on.", + "items": { + "properties": { + "address": { + "description": "a routable IP + port", + "pattern": "^(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3}):[0-9]+$", + "type": "string" + }, + "certificate": { + "description": "mTLS certificates (optional)", + "type": "string" + }, + "name": { + "description": "Name of the remote cluster", + "type": "string" + }, + "priority": { + "description": "Priority of the remote cluster in locality based load balancing", + "minimum": 0, + "type": "integer" + }, + "weight": { + "default": 0, + "description": "Load balancing weight of the remote cluster", + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "address", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "ports": { + "description": "The list of ports that are exposed by this service.", + "items": { + "properties": { + "port": { + "description": "The port that will be exposed by this service.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "default": "TCP", + "description": "The IP protocol for this port. Supports \"TCP\", \"UDP\", and \"SCTP\". Default is TCP.", + "enum": [ + "TCP", + "UDP", + "SCTP" + ], + "type": "string" + } + }, + "required": [ + "port", + "protocol" + ], + "type": "object" + }, + "type": "array" + }, + "serviceAccount": { + "type": "string" + } + }, + "required": [ + "serviceAccount", + "clusters" + ], + "title": "Multi Cluster Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.10.0-rc.1/multiclusterservice.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.10.0-rc.1/multiclusterservice.meshery.layer5.io_definition.json new file mode 100755 index 00000000..4ab56d8e --- /dev/null +++ b/templates/oam/workloads/v0.10.0-rc.1/multiclusterservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "MultiClusterService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "multiclusterservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.openservicemesh.io/v1alpha1", + "k8sKind": "MultiClusterService", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.10.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.10.0-rc.1/tcproute.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.10.0-rc.1/tcproute.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..d0cc9bfe --- /dev/null +++ b/templates/oam/workloads/v0.10.0-rc.1/tcproute.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,25 @@ +{ + "properties": { + "matches": { + "description": "Match conditions of this route.", + "properties": { + "ports": { + "description": "Port numbers to match TCP traffic.", + "items": { + "type": "integer" + }, + "type": "array" + } + }, + "required": [ + "ports" + ], + "type": "object" + } + }, + "required": [ + "matches" + ], + "title": "TCP Route", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.10.0-rc.1/tcproute.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.10.0-rc.1/tcproute.meshery.layer5.io_definition.json new file mode 100755 index 00000000..a62a6b24 --- /dev/null +++ b/templates/oam/workloads/v0.10.0-rc.1/tcproute.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TCPRoute", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "tcproute.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "specs.smi-spec.io/v1alpha4", + "k8sKind": "TCPRoute", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.10.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.10.0-rc.1/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.10.0-rc.1/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..13f0a9a2 --- /dev/null +++ b/templates/oam/workloads/v0.10.0-rc.1/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,59 @@ +{ + "properties": { + "backends": { + "description": "The backend services of this split.", + "items": { + "properties": { + "service": { + "description": "Name of the Kubernetes service.", + "type": "string" + }, + "weight": { + "description": "Traffic weight value of this backend.", + "type": "number" + } + }, + "required": [ + "service", + "weight" + ], + "type": "object" + }, + "type": "array" + }, + "matches": { + "description": "The HTTP route groups that this traffic split should match.", + "items": { + "properties": { + "kind": { + "description": "Kind of the matching group.", + "enum": [ + "HTTPRouteGroup" + ], + "type": "string" + }, + "name": { + "description": "Name of the matching group.", + "type": "string" + } + }, + "required": [ + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "service": { + "description": "The apex service of this split.", + "type": "string" + } + }, + "required": [ + "service", + "backends" + ], + "title": "Traffic Split", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.10.0-rc.1/trafficsplit.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.10.0-rc.1/trafficsplit.meshery.layer5.io_definition.json new file mode 100755 index 00000000..cccd016c --- /dev/null +++ b/templates/oam/workloads/v0.10.0-rc.1/trafficsplit.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TrafficSplit", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "trafficsplit.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "split.smi-spec.io/v1alpha4", + "k8sKind": "TrafficSplit", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.10.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.10.0-rc.1/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.10.0-rc.1/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..83a24559 --- /dev/null +++ b/templates/oam/workloads/v0.10.0-rc.1/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,91 @@ +{ + "properties": { + "destination": { + "description": "The destination of this traffic target.", + "properties": { + "kind": { + "description": "Kind of the destination.", + "type": "string" + }, + "name": { + "description": "Name of the destination.", + "type": "string" + }, + "namespace": { + "description": "Namespace of the destination.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "rules": { + "description": "Specifications of this traffic target.", + "items": { + "properties": { + "kind": { + "description": "Kind of this spec.", + "enum": [ + "HTTPRouteGroup", + "TCPRoute", + "UDPRoute" + ], + "type": "string" + }, + "matches": { + "description": "Match conditions of this spec.", + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "Name of this spec.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources of this traffic target.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "destination", + "rules", + "sources" + ], + "title": "Traffic Target", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.10.0-rc.1/traffictarget.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.10.0-rc.1/traffictarget.meshery.layer5.io_definition.json new file mode 100755 index 00000000..bd214a6c --- /dev/null +++ b/templates/oam/workloads/v0.10.0-rc.1/traffictarget.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TrafficTarget", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "traffictarget.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "access.smi-spec.io/v1alpha3", + "k8sKind": "TrafficTarget", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.10.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.10.0-rc.2/egress.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.10.0-rc.2/egress.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..c77de28d --- /dev/null +++ b/templates/oam/workloads/v0.10.0-rc.2/egress.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,103 @@ +{ + "properties": { + "hosts": { + "description": "Hosts that the sources are allowed to direct external traffic to.", + "items": { + "type": "string" + }, + "type": "array" + }, + "ipAddresses": { + "description": "IP address ranges that the sources are allowed to direct external traffic to.", + "items": { + "pattern": "((?:\\d{1,3}\\.){3}\\d{1,3})\\/(\\d{1,2})$", + "type": "string" + }, + "type": "array" + }, + "matches": { + "description": "The resource references an Egress policy should match on.", + "items": { + "properties": { + "apiGroup": { + "description": "API group for the resource being referenced.", + "type": "string" + }, + "kind": { + "description": "Type of resource being referenced.", + "type": "string" + }, + "name": { + "description": "Name of resource being referenced.", + "type": "string" + } + }, + "required": [ + "apiGroup", + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "ports": { + "description": "Ports that the sources are allowed to direct external traffic to.", + "items": { + "properties": { + "number": { + "description": "Port number of this port.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "description": "Protocol served by this port.", + "type": "string" + } + }, + "required": [ + "number", + "protocol" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources the egress policy is applicable to.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "enum": [ + "ServiceAccount" + ], + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "kind", + "name", + "namespace" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "sources", + "ports" + ], + "title": "Egress", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.10.0-rc.2/egress.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.10.0-rc.2/egress.meshery.layer5.io_definition.json new file mode 100755 index 00000000..c4f10900 --- /dev/null +++ b/templates/oam/workloads/v0.10.0-rc.2/egress.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Egress", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "egress.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "policy.openservicemesh.io/v1alpha1", + "k8sKind": "Egress", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.10.0-rc.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.10.0-rc.2/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.10.0-rc.2/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..6951d46c --- /dev/null +++ b/templates/oam/workloads/v0.10.0-rc.2/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,60 @@ +{ + "properties": { + "matches": { + "description": "Match conditions of this route group.", + "items": { + "properties": { + "headers": { + "description": "Header match conditions of this route.", + "items": { + "additionalProperties": { + "type": "string" + }, + "description": "Header match condition of this route.", + "type": "object" + }, + "type": "array" + }, + "methods": { + "description": "The HTTP methods of this HTTP route.", + "items": { + "description": "The HTTP method of this HTTP route.", + "enum": [ + "*", + "GET", + "HEAD", + "PUT", + "POST", + "DELETE", + "CONNECT", + "OPTIONS", + "TRACE", + "PATCH" + ], + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "Name of the HTTP route.", + "type": "string" + }, + "pathRegex": { + "description": "URI path regex of the HTTP route.", + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "matches" + ], + "title": "HTTP Route Group", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.10.0-rc.2/httproutegroup.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.10.0-rc.2/httproutegroup.meshery.layer5.io_definition.json new file mode 100755 index 00000000..113f7081 --- /dev/null +++ b/templates/oam/workloads/v0.10.0-rc.2/httproutegroup.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPRouteGroup", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httproutegroup.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "specs.smi-spec.io/v1alpha4", + "k8sKind": "HTTPRouteGroup", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.10.0-rc.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.10.0-rc.2/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.10.0-rc.2/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..f5535897 --- /dev/null +++ b/templates/oam/workloads/v0.10.0-rc.2/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,118 @@ +{ + "properties": { + "backends": { + "description": "Backends the IngressBackend policy is applicable to.", + "items": { + "properties": { + "name": { + "description": "Name of the backend.", + "type": "string" + }, + "port": { + "description": "Port of the backend.", + "properties": { + "number": { + "description": "Port number of this port.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "description": "Protocol served by this port.", + "type": "string" + } + }, + "required": [ + "number", + "protocol" + ], + "type": "object" + }, + "tls": { + "description": "TLS configuration for the backend.", + "properties": { + "skipClientCertValidation": { + "description": "Skip client certificate validation.", + "type": "boolean" + }, + "sniHosts": { + "description": "SNI hosts allowed by the backend.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "skipClientCertValidation" + ], + "type": "object" + } + }, + "required": [ + "name", + "port" + ], + "type": "object" + }, + "type": "array" + }, + "matches": { + "description": "The resource references an IngressBackend policy should match on.", + "items": { + "properties": { + "apiGroup": { + "description": "API group for the resource being referenced.", + "type": "string" + }, + "kind": { + "description": "Type of resource being referenced.", + "type": "string" + }, + "name": { + "description": "Name of resource being referenced.", + "type": "string" + } + }, + "required": [ + "apiGroup", + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources the IngressBackend policy is applicable to.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "backends", + "sources" + ], + "title": "Ingress Backend", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.10.0-rc.2/ingressbackend.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.10.0-rc.2/ingressbackend.meshery.layer5.io_definition.json new file mode 100755 index 00000000..d758523c --- /dev/null +++ b/templates/oam/workloads/v0.10.0-rc.2/ingressbackend.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "IngressBackend", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "ingressbackend.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "policy.openservicemesh.io/v1alpha1", + "k8sKind": "IngressBackend", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.10.0-rc.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.10.0-rc.2/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.10.0-rc.2/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..b607634a --- /dev/null +++ b/templates/oam/workloads/v0.10.0-rc.2/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,264 @@ +{ + "properties": { + "certificate": { + "description": "Configuration for certificate management", + "properties": { + "certKeyBitSize": { + "description": "Sets the certificate key bit size for data plane certificates.", + "type": "integer" + }, + "ingressGateway": { + "description": "Configuration for the ingress gateway's certificate", + "properties": { + "secret": { + "description": "Secret reference to store the certificate in", + "properties": { + "name": { + "description": "Name of the secret", + "type": "string" + }, + "namespace": { + "description": "Namespace of the secret", + "type": "string" + } + }, + "required": [ + "name", + "namespace" + ], + "type": "object" + }, + "subjectAltNames": { + "description": "Subject Alternative Names secured by the certificate", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "validityDuration": { + "description": "Certificate validity duration, represented as a sequence of decimal numbers each with optional fraction and a unit suffix", + "type": "string" + } + }, + "required": [ + "subjectAltNames", + "validityDuration", + "secret" + ], + "type": "object" + }, + "serviceCertValidityDuration": { + "description": "Sets the service certificate validity duration, represented as a sequence of decimal numbers each with optional fraction and a unit suffix.", + "type": "string" + } + }, + "required": [ + "serviceCertValidityDuration", + "certKeyBitSize" + ], + "type": "object" + }, + "featureFlags": { + "description": "OSM feature flags", + "properties": { + "enableAsyncProxyServiceMapping": { + "type": "boolean" + }, + "enableEgressPolicy": { + "type": "boolean" + }, + "enableEnvoyActiveHealthChecks": { + "type": "boolean" + }, + "enableIngressBackendPolicy": { + "type": "boolean" + }, + "enableMulticlusterMode": { + "type": "boolean" + }, + "enableRetryPolicy": { + "type": "boolean" + }, + "enableSnapshotCacheMode": { + "type": "boolean" + }, + "enableWASMStats": { + "type": "boolean" + } + }, + "type": "object" + }, + "observability": { + "description": "Configuration for observing the service mesh, including metrics, logs, tracing etc,.", + "properties": { + "enableDebugServer": { + "description": "Enables a debug endpoint on the osm-controller pod to list information regarding the mesh such as proxy connections, certificates, and SMI policies.", + "type": "boolean" + }, + "osmLogLevel": { + "description": "Allows setting OSM control plane log level at runtime", + "type": "string" + }, + "tracing": { + "description": "Configuration for distributed tracing", + "properties": { + "address": { + "description": "Address of Jaeger tracing deployment, if tracing is enabled.", + "type": "string" + }, + "enable": { + "description": "Enables Jaeger tracing for the mesh.", + "type": "boolean" + }, + "endpoint": { + "description": "Endpoint for tracing data, if tracing is enabled.", + "type": "string" + }, + "port": { + "description": "Port on which tracing is enabled.", + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "sidecar": { + "description": "Configuration for Envoy sidecar", + "properties": { + "configResyncInterval": { + "description": "Resync interval for regular proxy broadcast updates", + "type": "string" + }, + "enablePrivilegedInitContainer": { + "description": "Enables privileged init containers for pods in mesh. When false, init containers only have NET_ADMIN.", + "type": "boolean" + }, + "envoyImage": { + "description": "Image for the Envoy sidecar", + "type": "string" + }, + "envoyWindowsImage": { + "description": "Image for the Envoy sidecar on Windows workers", + "type": "string" + }, + "initContainerImage": { + "description": "Image for the init container", + "type": "string" + }, + "logLevel": { + "description": "Sets the logging verbosity of Envoy proxy sidecar, only applicable to newly created pods joining the mesh.", + "enum": [ + "trace", + "debug", + "info", + "warning", + "warn", + "error", + "critical", + "off" + ], + "type": "string" + }, + "maxDataPlaneConnections": { + "description": "Max allowed data plane sidecar connections", + "type": "integer" + }, + "resources": { + "properties": { + "limits": { + "additionalProperties": true, + "description": "Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/", + "type": "object" + }, + "requests": { + "additionalProperties": true, + "description": "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/", + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "traffic": { + "description": "Configuration for traffic management", + "properties": { + "enableEgress": { + "description": "Enables egress in the mesh", + "type": "boolean" + }, + "enablePermissiveTrafficPolicyMode": { + "description": "True for allowing traffic to flow between client and service pods within the mesh without SMI traffic policies, i.e. no traffic policy enforcement in the mesh. If set to false, enables deny-all traffic policy in mesh i.e. an SMI Traffic Target is necessary for services to communicate.", + "type": "boolean" + }, + "inboundExternalAuthorization": { + "description": "Configures external authorization for inbound and ingress connections.", + "properties": { + "address": { + "description": "Target destination endpoint that will handle external authorization.", + "type": "string" + }, + "enable": { + "description": "Enables/disables the inbound external authorization policy if present.", + "type": "boolean" + }, + "failureModeAllow": { + "description": "Allows specifying if traffic should succeed or fail if the external authorization endpoint fails to respond.", + "type": "boolean" + }, + "port": { + "description": "Remote destination port for the external authorization endpoint.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "statPrefix": { + "default": "inboundExtAuthz", + "description": "String prefix for inbound external authorization related metrics.", + "type": "string" + }, + "timeout": { + "default": "1s", + "description": "Defines the timeout to consider for the remote endpoint to reply in time.", + "type": "string" + } + }, + "type": "object" + }, + "inboundPortExclusionList": { + "description": "Global list of ports to exclude from inbound traffic interception by the sidecar proxy.", + "items": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "type": "array" + }, + "outboundIPRangeExclusionList": { + "description": "Global list of IP address ranges to exclude from outbound traffic interception by the sidecar proxy.", + "items": { + "pattern": "((?:\\d{1,3}\\.){3}\\d{1,3})\\/(\\d{1,2})$", + "type": "string" + }, + "type": "array" + }, + "outboundPortExclusionList": { + "description": "Global list of ports to exclude from outbound traffic interception by the sidecar proxy.", + "items": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "title": "Mesh Config", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.10.0-rc.2/meshconfig.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.10.0-rc.2/meshconfig.meshery.layer5.io_definition.json new file mode 100755 index 00000000..a24d574e --- /dev/null +++ b/templates/oam/workloads/v0.10.0-rc.2/meshconfig.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "MeshConfig", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "meshconfig.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.openservicemesh.io/v1alpha1", + "k8sKind": "MeshConfig", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.10.0-rc.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.10.0-rc.2/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.10.0-rc.2/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..60d4f7dd --- /dev/null +++ b/templates/oam/workloads/v0.10.0-rc.2/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "properties": { + "clusters": { + "description": "The clusters the service accounts are hosted on.", + "items": { + "properties": { + "address": { + "description": "a routable IP + port", + "pattern": "^(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3}):[0-9]+$", + "type": "string" + }, + "certificate": { + "description": "mTLS certificates (optional)", + "type": "string" + }, + "name": { + "description": "Name of the remote cluster", + "type": "string" + }, + "priority": { + "description": "Priority of the remote cluster in locality based load balancing", + "minimum": 0, + "type": "integer" + }, + "weight": { + "default": 0, + "description": "Load balancing weight of the remote cluster", + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "address", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "ports": { + "description": "The list of ports that are exposed by this service.", + "items": { + "properties": { + "port": { + "description": "The port that will be exposed by this service.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "default": "TCP", + "description": "The IP protocol for this port. Supports \"TCP\", \"UDP\", and \"SCTP\". Default is TCP.", + "enum": [ + "TCP", + "UDP", + "SCTP" + ], + "type": "string" + } + }, + "required": [ + "port", + "protocol" + ], + "type": "object" + }, + "type": "array" + }, + "serviceAccount": { + "type": "string" + } + }, + "required": [ + "serviceAccount", + "clusters" + ], + "title": "Multi Cluster Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.10.0-rc.2/multiclusterservice.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.10.0-rc.2/multiclusterservice.meshery.layer5.io_definition.json new file mode 100755 index 00000000..65c2479e --- /dev/null +++ b/templates/oam/workloads/v0.10.0-rc.2/multiclusterservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "MultiClusterService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "multiclusterservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.openservicemesh.io/v1alpha1", + "k8sKind": "MultiClusterService", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.10.0-rc.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.10.0-rc.2/tcproute.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.10.0-rc.2/tcproute.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..d0cc9bfe --- /dev/null +++ b/templates/oam/workloads/v0.10.0-rc.2/tcproute.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,25 @@ +{ + "properties": { + "matches": { + "description": "Match conditions of this route.", + "properties": { + "ports": { + "description": "Port numbers to match TCP traffic.", + "items": { + "type": "integer" + }, + "type": "array" + } + }, + "required": [ + "ports" + ], + "type": "object" + } + }, + "required": [ + "matches" + ], + "title": "TCP Route", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.10.0-rc.2/tcproute.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.10.0-rc.2/tcproute.meshery.layer5.io_definition.json new file mode 100755 index 00000000..2ac0c60e --- /dev/null +++ b/templates/oam/workloads/v0.10.0-rc.2/tcproute.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TCPRoute", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "tcproute.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "specs.smi-spec.io/v1alpha4", + "k8sKind": "TCPRoute", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.10.0-rc.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.10.0-rc.2/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.10.0-rc.2/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..13f0a9a2 --- /dev/null +++ b/templates/oam/workloads/v0.10.0-rc.2/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,59 @@ +{ + "properties": { + "backends": { + "description": "The backend services of this split.", + "items": { + "properties": { + "service": { + "description": "Name of the Kubernetes service.", + "type": "string" + }, + "weight": { + "description": "Traffic weight value of this backend.", + "type": "number" + } + }, + "required": [ + "service", + "weight" + ], + "type": "object" + }, + "type": "array" + }, + "matches": { + "description": "The HTTP route groups that this traffic split should match.", + "items": { + "properties": { + "kind": { + "description": "Kind of the matching group.", + "enum": [ + "HTTPRouteGroup" + ], + "type": "string" + }, + "name": { + "description": "Name of the matching group.", + "type": "string" + } + }, + "required": [ + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "service": { + "description": "The apex service of this split.", + "type": "string" + } + }, + "required": [ + "service", + "backends" + ], + "title": "Traffic Split", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.10.0-rc.2/trafficsplit.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.10.0-rc.2/trafficsplit.meshery.layer5.io_definition.json new file mode 100755 index 00000000..dd5b57c3 --- /dev/null +++ b/templates/oam/workloads/v0.10.0-rc.2/trafficsplit.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TrafficSplit", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "trafficsplit.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "split.smi-spec.io/v1alpha4", + "k8sKind": "TrafficSplit", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.10.0-rc.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.10.0-rc.2/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.10.0-rc.2/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..83a24559 --- /dev/null +++ b/templates/oam/workloads/v0.10.0-rc.2/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,91 @@ +{ + "properties": { + "destination": { + "description": "The destination of this traffic target.", + "properties": { + "kind": { + "description": "Kind of the destination.", + "type": "string" + }, + "name": { + "description": "Name of the destination.", + "type": "string" + }, + "namespace": { + "description": "Namespace of the destination.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "rules": { + "description": "Specifications of this traffic target.", + "items": { + "properties": { + "kind": { + "description": "Kind of this spec.", + "enum": [ + "HTTPRouteGroup", + "TCPRoute", + "UDPRoute" + ], + "type": "string" + }, + "matches": { + "description": "Match conditions of this spec.", + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "Name of this spec.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources of this traffic target.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "destination", + "rules", + "sources" + ], + "title": "Traffic Target", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.10.0-rc.2/traffictarget.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.10.0-rc.2/traffictarget.meshery.layer5.io_definition.json new file mode 100755 index 00000000..4456042b --- /dev/null +++ b/templates/oam/workloads/v0.10.0-rc.2/traffictarget.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TrafficTarget", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "traffictarget.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "access.smi-spec.io/v1alpha3", + "k8sKind": "TrafficTarget", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.10.0-rc.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.10.0/egress.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.10.0/egress.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..c77de28d --- /dev/null +++ b/templates/oam/workloads/v0.10.0/egress.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,103 @@ +{ + "properties": { + "hosts": { + "description": "Hosts that the sources are allowed to direct external traffic to.", + "items": { + "type": "string" + }, + "type": "array" + }, + "ipAddresses": { + "description": "IP address ranges that the sources are allowed to direct external traffic to.", + "items": { + "pattern": "((?:\\d{1,3}\\.){3}\\d{1,3})\\/(\\d{1,2})$", + "type": "string" + }, + "type": "array" + }, + "matches": { + "description": "The resource references an Egress policy should match on.", + "items": { + "properties": { + "apiGroup": { + "description": "API group for the resource being referenced.", + "type": "string" + }, + "kind": { + "description": "Type of resource being referenced.", + "type": "string" + }, + "name": { + "description": "Name of resource being referenced.", + "type": "string" + } + }, + "required": [ + "apiGroup", + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "ports": { + "description": "Ports that the sources are allowed to direct external traffic to.", + "items": { + "properties": { + "number": { + "description": "Port number of this port.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "description": "Protocol served by this port.", + "type": "string" + } + }, + "required": [ + "number", + "protocol" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources the egress policy is applicable to.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "enum": [ + "ServiceAccount" + ], + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "kind", + "name", + "namespace" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "sources", + "ports" + ], + "title": "Egress", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.10.0/egress.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.10.0/egress.meshery.layer5.io_definition.json new file mode 100755 index 00000000..be38a199 --- /dev/null +++ b/templates/oam/workloads/v0.10.0/egress.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Egress", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "egress.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "policy.openservicemesh.io/v1alpha1", + "k8sKind": "Egress", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.10.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/workloads-v0.10.0/egress.osm.meshery.layer5io.schema.json b/templates/oam/workloads/v0.10.0/egress.osm.meshery.layer5io.schema.json similarity index 100% rename from templates/oam/workloads/workloads-v0.10.0/egress.osm.meshery.layer5io.schema.json rename to templates/oam/workloads/v0.10.0/egress.osm.meshery.layer5io.schema.json diff --git a/templates/oam/workloads/workloads-v0.10.0/egress.osm_definition.json b/templates/oam/workloads/v0.10.0/egress.osm_definition.json similarity index 100% rename from templates/oam/workloads/workloads-v0.10.0/egress.osm_definition.json rename to templates/oam/workloads/v0.10.0/egress.osm_definition.json diff --git a/templates/oam/workloads/v0.10.0/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.10.0/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..6951d46c --- /dev/null +++ b/templates/oam/workloads/v0.10.0/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,60 @@ +{ + "properties": { + "matches": { + "description": "Match conditions of this route group.", + "items": { + "properties": { + "headers": { + "description": "Header match conditions of this route.", + "items": { + "additionalProperties": { + "type": "string" + }, + "description": "Header match condition of this route.", + "type": "object" + }, + "type": "array" + }, + "methods": { + "description": "The HTTP methods of this HTTP route.", + "items": { + "description": "The HTTP method of this HTTP route.", + "enum": [ + "*", + "GET", + "HEAD", + "PUT", + "POST", + "DELETE", + "CONNECT", + "OPTIONS", + "TRACE", + "PATCH" + ], + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "Name of the HTTP route.", + "type": "string" + }, + "pathRegex": { + "description": "URI path regex of the HTTP route.", + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "matches" + ], + "title": "HTTP Route Group", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.10.0/httproutegroup.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.10.0/httproutegroup.meshery.layer5.io_definition.json new file mode 100755 index 00000000..199b256e --- /dev/null +++ b/templates/oam/workloads/v0.10.0/httproutegroup.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPRouteGroup", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httproutegroup.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "specs.smi-spec.io/v1alpha4", + "k8sKind": "HTTPRouteGroup", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.10.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/workloads-v0.10.0/httproutegroup.osm.meshery.layer5io.schema.json b/templates/oam/workloads/v0.10.0/httproutegroup.osm.meshery.layer5io.schema.json similarity index 100% rename from templates/oam/workloads/workloads-v0.10.0/httproutegroup.osm.meshery.layer5io.schema.json rename to templates/oam/workloads/v0.10.0/httproutegroup.osm.meshery.layer5io.schema.json diff --git a/templates/oam/workloads/workloads-v0.10.0/httproutegroup.osm_definition.json b/templates/oam/workloads/v0.10.0/httproutegroup.osm_definition.json similarity index 100% rename from templates/oam/workloads/workloads-v0.10.0/httproutegroup.osm_definition.json rename to templates/oam/workloads/v0.10.0/httproutegroup.osm_definition.json diff --git a/templates/oam/workloads/v0.10.0/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.10.0/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..f5535897 --- /dev/null +++ b/templates/oam/workloads/v0.10.0/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,118 @@ +{ + "properties": { + "backends": { + "description": "Backends the IngressBackend policy is applicable to.", + "items": { + "properties": { + "name": { + "description": "Name of the backend.", + "type": "string" + }, + "port": { + "description": "Port of the backend.", + "properties": { + "number": { + "description": "Port number of this port.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "description": "Protocol served by this port.", + "type": "string" + } + }, + "required": [ + "number", + "protocol" + ], + "type": "object" + }, + "tls": { + "description": "TLS configuration for the backend.", + "properties": { + "skipClientCertValidation": { + "description": "Skip client certificate validation.", + "type": "boolean" + }, + "sniHosts": { + "description": "SNI hosts allowed by the backend.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "skipClientCertValidation" + ], + "type": "object" + } + }, + "required": [ + "name", + "port" + ], + "type": "object" + }, + "type": "array" + }, + "matches": { + "description": "The resource references an IngressBackend policy should match on.", + "items": { + "properties": { + "apiGroup": { + "description": "API group for the resource being referenced.", + "type": "string" + }, + "kind": { + "description": "Type of resource being referenced.", + "type": "string" + }, + "name": { + "description": "Name of resource being referenced.", + "type": "string" + } + }, + "required": [ + "apiGroup", + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources the IngressBackend policy is applicable to.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "backends", + "sources" + ], + "title": "Ingress Backend", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.10.0/ingressbackend.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.10.0/ingressbackend.meshery.layer5.io_definition.json new file mode 100755 index 00000000..a2427299 --- /dev/null +++ b/templates/oam/workloads/v0.10.0/ingressbackend.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "IngressBackend", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "ingressbackend.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "policy.openservicemesh.io/v1alpha1", + "k8sKind": "IngressBackend", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.10.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/workloads-v0.10.0/ingressbackend.osm.meshery.layer5io.schema.json b/templates/oam/workloads/v0.10.0/ingressbackend.osm.meshery.layer5io.schema.json similarity index 100% rename from templates/oam/workloads/workloads-v0.10.0/ingressbackend.osm.meshery.layer5io.schema.json rename to templates/oam/workloads/v0.10.0/ingressbackend.osm.meshery.layer5io.schema.json diff --git a/templates/oam/workloads/workloads-v0.10.0/ingressbackend.osm_definition.json b/templates/oam/workloads/v0.10.0/ingressbackend.osm_definition.json similarity index 100% rename from templates/oam/workloads/workloads-v0.10.0/ingressbackend.osm_definition.json rename to templates/oam/workloads/v0.10.0/ingressbackend.osm_definition.json diff --git a/templates/oam/workloads/v0.10.0/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.10.0/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..b607634a --- /dev/null +++ b/templates/oam/workloads/v0.10.0/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,264 @@ +{ + "properties": { + "certificate": { + "description": "Configuration for certificate management", + "properties": { + "certKeyBitSize": { + "description": "Sets the certificate key bit size for data plane certificates.", + "type": "integer" + }, + "ingressGateway": { + "description": "Configuration for the ingress gateway's certificate", + "properties": { + "secret": { + "description": "Secret reference to store the certificate in", + "properties": { + "name": { + "description": "Name of the secret", + "type": "string" + }, + "namespace": { + "description": "Namespace of the secret", + "type": "string" + } + }, + "required": [ + "name", + "namespace" + ], + "type": "object" + }, + "subjectAltNames": { + "description": "Subject Alternative Names secured by the certificate", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "validityDuration": { + "description": "Certificate validity duration, represented as a sequence of decimal numbers each with optional fraction and a unit suffix", + "type": "string" + } + }, + "required": [ + "subjectAltNames", + "validityDuration", + "secret" + ], + "type": "object" + }, + "serviceCertValidityDuration": { + "description": "Sets the service certificate validity duration, represented as a sequence of decimal numbers each with optional fraction and a unit suffix.", + "type": "string" + } + }, + "required": [ + "serviceCertValidityDuration", + "certKeyBitSize" + ], + "type": "object" + }, + "featureFlags": { + "description": "OSM feature flags", + "properties": { + "enableAsyncProxyServiceMapping": { + "type": "boolean" + }, + "enableEgressPolicy": { + "type": "boolean" + }, + "enableEnvoyActiveHealthChecks": { + "type": "boolean" + }, + "enableIngressBackendPolicy": { + "type": "boolean" + }, + "enableMulticlusterMode": { + "type": "boolean" + }, + "enableRetryPolicy": { + "type": "boolean" + }, + "enableSnapshotCacheMode": { + "type": "boolean" + }, + "enableWASMStats": { + "type": "boolean" + } + }, + "type": "object" + }, + "observability": { + "description": "Configuration for observing the service mesh, including metrics, logs, tracing etc,.", + "properties": { + "enableDebugServer": { + "description": "Enables a debug endpoint on the osm-controller pod to list information regarding the mesh such as proxy connections, certificates, and SMI policies.", + "type": "boolean" + }, + "osmLogLevel": { + "description": "Allows setting OSM control plane log level at runtime", + "type": "string" + }, + "tracing": { + "description": "Configuration for distributed tracing", + "properties": { + "address": { + "description": "Address of Jaeger tracing deployment, if tracing is enabled.", + "type": "string" + }, + "enable": { + "description": "Enables Jaeger tracing for the mesh.", + "type": "boolean" + }, + "endpoint": { + "description": "Endpoint for tracing data, if tracing is enabled.", + "type": "string" + }, + "port": { + "description": "Port on which tracing is enabled.", + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "sidecar": { + "description": "Configuration for Envoy sidecar", + "properties": { + "configResyncInterval": { + "description": "Resync interval for regular proxy broadcast updates", + "type": "string" + }, + "enablePrivilegedInitContainer": { + "description": "Enables privileged init containers for pods in mesh. When false, init containers only have NET_ADMIN.", + "type": "boolean" + }, + "envoyImage": { + "description": "Image for the Envoy sidecar", + "type": "string" + }, + "envoyWindowsImage": { + "description": "Image for the Envoy sidecar on Windows workers", + "type": "string" + }, + "initContainerImage": { + "description": "Image for the init container", + "type": "string" + }, + "logLevel": { + "description": "Sets the logging verbosity of Envoy proxy sidecar, only applicable to newly created pods joining the mesh.", + "enum": [ + "trace", + "debug", + "info", + "warning", + "warn", + "error", + "critical", + "off" + ], + "type": "string" + }, + "maxDataPlaneConnections": { + "description": "Max allowed data plane sidecar connections", + "type": "integer" + }, + "resources": { + "properties": { + "limits": { + "additionalProperties": true, + "description": "Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/", + "type": "object" + }, + "requests": { + "additionalProperties": true, + "description": "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/", + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "traffic": { + "description": "Configuration for traffic management", + "properties": { + "enableEgress": { + "description": "Enables egress in the mesh", + "type": "boolean" + }, + "enablePermissiveTrafficPolicyMode": { + "description": "True for allowing traffic to flow between client and service pods within the mesh without SMI traffic policies, i.e. no traffic policy enforcement in the mesh. If set to false, enables deny-all traffic policy in mesh i.e. an SMI Traffic Target is necessary for services to communicate.", + "type": "boolean" + }, + "inboundExternalAuthorization": { + "description": "Configures external authorization for inbound and ingress connections.", + "properties": { + "address": { + "description": "Target destination endpoint that will handle external authorization.", + "type": "string" + }, + "enable": { + "description": "Enables/disables the inbound external authorization policy if present.", + "type": "boolean" + }, + "failureModeAllow": { + "description": "Allows specifying if traffic should succeed or fail if the external authorization endpoint fails to respond.", + "type": "boolean" + }, + "port": { + "description": "Remote destination port for the external authorization endpoint.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "statPrefix": { + "default": "inboundExtAuthz", + "description": "String prefix for inbound external authorization related metrics.", + "type": "string" + }, + "timeout": { + "default": "1s", + "description": "Defines the timeout to consider for the remote endpoint to reply in time.", + "type": "string" + } + }, + "type": "object" + }, + "inboundPortExclusionList": { + "description": "Global list of ports to exclude from inbound traffic interception by the sidecar proxy.", + "items": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "type": "array" + }, + "outboundIPRangeExclusionList": { + "description": "Global list of IP address ranges to exclude from outbound traffic interception by the sidecar proxy.", + "items": { + "pattern": "((?:\\d{1,3}\\.){3}\\d{1,3})\\/(\\d{1,2})$", + "type": "string" + }, + "type": "array" + }, + "outboundPortExclusionList": { + "description": "Global list of ports to exclude from outbound traffic interception by the sidecar proxy.", + "items": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "title": "Mesh Config", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.10.0/meshconfig.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.10.0/meshconfig.meshery.layer5.io_definition.json new file mode 100755 index 00000000..db8bcdba --- /dev/null +++ b/templates/oam/workloads/v0.10.0/meshconfig.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "MeshConfig", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "meshconfig.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.openservicemesh.io/v1alpha1", + "k8sKind": "MeshConfig", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.10.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/workloads-v0.10.0/meshconfig.osm.meshery.layer5io.schema.json b/templates/oam/workloads/v0.10.0/meshconfig.osm.meshery.layer5io.schema.json similarity index 100% rename from templates/oam/workloads/workloads-v0.10.0/meshconfig.osm.meshery.layer5io.schema.json rename to templates/oam/workloads/v0.10.0/meshconfig.osm.meshery.layer5io.schema.json diff --git a/templates/oam/workloads/workloads-v0.10.0/meshconfig.osm_definition.json b/templates/oam/workloads/v0.10.0/meshconfig.osm_definition.json similarity index 100% rename from templates/oam/workloads/workloads-v0.10.0/meshconfig.osm_definition.json rename to templates/oam/workloads/v0.10.0/meshconfig.osm_definition.json diff --git a/templates/oam/workloads/v0.10.0/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.10.0/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..60d4f7dd --- /dev/null +++ b/templates/oam/workloads/v0.10.0/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "properties": { + "clusters": { + "description": "The clusters the service accounts are hosted on.", + "items": { + "properties": { + "address": { + "description": "a routable IP + port", + "pattern": "^(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3}):[0-9]+$", + "type": "string" + }, + "certificate": { + "description": "mTLS certificates (optional)", + "type": "string" + }, + "name": { + "description": "Name of the remote cluster", + "type": "string" + }, + "priority": { + "description": "Priority of the remote cluster in locality based load balancing", + "minimum": 0, + "type": "integer" + }, + "weight": { + "default": 0, + "description": "Load balancing weight of the remote cluster", + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "address", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "ports": { + "description": "The list of ports that are exposed by this service.", + "items": { + "properties": { + "port": { + "description": "The port that will be exposed by this service.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "default": "TCP", + "description": "The IP protocol for this port. Supports \"TCP\", \"UDP\", and \"SCTP\". Default is TCP.", + "enum": [ + "TCP", + "UDP", + "SCTP" + ], + "type": "string" + } + }, + "required": [ + "port", + "protocol" + ], + "type": "object" + }, + "type": "array" + }, + "serviceAccount": { + "type": "string" + } + }, + "required": [ + "serviceAccount", + "clusters" + ], + "title": "Multi Cluster Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.10.0/multiclusterservice.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.10.0/multiclusterservice.meshery.layer5.io_definition.json new file mode 100755 index 00000000..3cd60d8a --- /dev/null +++ b/templates/oam/workloads/v0.10.0/multiclusterservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "MultiClusterService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "multiclusterservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.openservicemesh.io/v1alpha1", + "k8sKind": "MultiClusterService", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.10.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/workloads-v0.10.0/multiclusterservice.osm.meshery.layer5io.schema.json b/templates/oam/workloads/v0.10.0/multiclusterservice.osm.meshery.layer5io.schema.json similarity index 100% rename from templates/oam/workloads/workloads-v0.10.0/multiclusterservice.osm.meshery.layer5io.schema.json rename to templates/oam/workloads/v0.10.0/multiclusterservice.osm.meshery.layer5io.schema.json diff --git a/templates/oam/workloads/workloads-v0.10.0/multiclusterservice.osm_definition.json b/templates/oam/workloads/v0.10.0/multiclusterservice.osm_definition.json similarity index 100% rename from templates/oam/workloads/workloads-v0.10.0/multiclusterservice.osm_definition.json rename to templates/oam/workloads/v0.10.0/multiclusterservice.osm_definition.json diff --git a/templates/oam/workloads/v0.10.0/tcproute.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.10.0/tcproute.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..d0cc9bfe --- /dev/null +++ b/templates/oam/workloads/v0.10.0/tcproute.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,25 @@ +{ + "properties": { + "matches": { + "description": "Match conditions of this route.", + "properties": { + "ports": { + "description": "Port numbers to match TCP traffic.", + "items": { + "type": "integer" + }, + "type": "array" + } + }, + "required": [ + "ports" + ], + "type": "object" + } + }, + "required": [ + "matches" + ], + "title": "TCP Route", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.10.0/tcproute.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.10.0/tcproute.meshery.layer5.io_definition.json new file mode 100755 index 00000000..b429b814 --- /dev/null +++ b/templates/oam/workloads/v0.10.0/tcproute.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TCPRoute", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "tcproute.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "specs.smi-spec.io/v1alpha4", + "k8sKind": "TCPRoute", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.10.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/workloads-v0.10.0/tcproute.osm.meshery.layer5io.schema.json b/templates/oam/workloads/v0.10.0/tcproute.osm.meshery.layer5io.schema.json similarity index 100% rename from templates/oam/workloads/workloads-v0.10.0/tcproute.osm.meshery.layer5io.schema.json rename to templates/oam/workloads/v0.10.0/tcproute.osm.meshery.layer5io.schema.json diff --git a/templates/oam/workloads/workloads-v0.10.0/tcproute.osm_definition.json b/templates/oam/workloads/v0.10.0/tcproute.osm_definition.json similarity index 100% rename from templates/oam/workloads/workloads-v0.10.0/tcproute.osm_definition.json rename to templates/oam/workloads/v0.10.0/tcproute.osm_definition.json diff --git a/templates/oam/workloads/v0.10.0/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.10.0/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..13f0a9a2 --- /dev/null +++ b/templates/oam/workloads/v0.10.0/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,59 @@ +{ + "properties": { + "backends": { + "description": "The backend services of this split.", + "items": { + "properties": { + "service": { + "description": "Name of the Kubernetes service.", + "type": "string" + }, + "weight": { + "description": "Traffic weight value of this backend.", + "type": "number" + } + }, + "required": [ + "service", + "weight" + ], + "type": "object" + }, + "type": "array" + }, + "matches": { + "description": "The HTTP route groups that this traffic split should match.", + "items": { + "properties": { + "kind": { + "description": "Kind of the matching group.", + "enum": [ + "HTTPRouteGroup" + ], + "type": "string" + }, + "name": { + "description": "Name of the matching group.", + "type": "string" + } + }, + "required": [ + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "service": { + "description": "The apex service of this split.", + "type": "string" + } + }, + "required": [ + "service", + "backends" + ], + "title": "Traffic Split", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.10.0/trafficsplit.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.10.0/trafficsplit.meshery.layer5.io_definition.json new file mode 100755 index 00000000..d187e0c1 --- /dev/null +++ b/templates/oam/workloads/v0.10.0/trafficsplit.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TrafficSplit", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "trafficsplit.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "split.smi-spec.io/v1alpha4", + "k8sKind": "TrafficSplit", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.10.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/workloads-v0.10.0/trafficsplit.osm.meshery.layer5io.schema.json b/templates/oam/workloads/v0.10.0/trafficsplit.osm.meshery.layer5io.schema.json similarity index 100% rename from templates/oam/workloads/workloads-v0.10.0/trafficsplit.osm.meshery.layer5io.schema.json rename to templates/oam/workloads/v0.10.0/trafficsplit.osm.meshery.layer5io.schema.json diff --git a/templates/oam/workloads/workloads-v0.10.0/trafficsplit.osm_definition.json b/templates/oam/workloads/v0.10.0/trafficsplit.osm_definition.json similarity index 100% rename from templates/oam/workloads/workloads-v0.10.0/trafficsplit.osm_definition.json rename to templates/oam/workloads/v0.10.0/trafficsplit.osm_definition.json diff --git a/templates/oam/workloads/v0.10.0/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.10.0/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..83a24559 --- /dev/null +++ b/templates/oam/workloads/v0.10.0/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,91 @@ +{ + "properties": { + "destination": { + "description": "The destination of this traffic target.", + "properties": { + "kind": { + "description": "Kind of the destination.", + "type": "string" + }, + "name": { + "description": "Name of the destination.", + "type": "string" + }, + "namespace": { + "description": "Namespace of the destination.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "rules": { + "description": "Specifications of this traffic target.", + "items": { + "properties": { + "kind": { + "description": "Kind of this spec.", + "enum": [ + "HTTPRouteGroup", + "TCPRoute", + "UDPRoute" + ], + "type": "string" + }, + "matches": { + "description": "Match conditions of this spec.", + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "Name of this spec.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources of this traffic target.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "destination", + "rules", + "sources" + ], + "title": "Traffic Target", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.10.0/traffictarget.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.10.0/traffictarget.meshery.layer5.io_definition.json new file mode 100755 index 00000000..5d10eec7 --- /dev/null +++ b/templates/oam/workloads/v0.10.0/traffictarget.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TrafficTarget", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "traffictarget.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "access.smi-spec.io/v1alpha3", + "k8sKind": "TrafficTarget", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.10.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/workloads-v0.10.0/traffictarget.osm.meshery.layer5io.schema.json b/templates/oam/workloads/v0.10.0/traffictarget.osm.meshery.layer5io.schema.json similarity index 100% rename from templates/oam/workloads/workloads-v0.10.0/traffictarget.osm.meshery.layer5io.schema.json rename to templates/oam/workloads/v0.10.0/traffictarget.osm.meshery.layer5io.schema.json diff --git a/templates/oam/workloads/workloads-v0.10.0/traffictarget.osm_definition.json b/templates/oam/workloads/v0.10.0/traffictarget.osm_definition.json similarity index 100% rename from templates/oam/workloads/workloads-v0.10.0/traffictarget.osm_definition.json rename to templates/oam/workloads/v0.10.0/traffictarget.osm_definition.json diff --git a/templates/oam/workloads/v0.11.0-rc.1/egress.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.11.0-rc.1/egress.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..c77de28d --- /dev/null +++ b/templates/oam/workloads/v0.11.0-rc.1/egress.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,103 @@ +{ + "properties": { + "hosts": { + "description": "Hosts that the sources are allowed to direct external traffic to.", + "items": { + "type": "string" + }, + "type": "array" + }, + "ipAddresses": { + "description": "IP address ranges that the sources are allowed to direct external traffic to.", + "items": { + "pattern": "((?:\\d{1,3}\\.){3}\\d{1,3})\\/(\\d{1,2})$", + "type": "string" + }, + "type": "array" + }, + "matches": { + "description": "The resource references an Egress policy should match on.", + "items": { + "properties": { + "apiGroup": { + "description": "API group for the resource being referenced.", + "type": "string" + }, + "kind": { + "description": "Type of resource being referenced.", + "type": "string" + }, + "name": { + "description": "Name of resource being referenced.", + "type": "string" + } + }, + "required": [ + "apiGroup", + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "ports": { + "description": "Ports that the sources are allowed to direct external traffic to.", + "items": { + "properties": { + "number": { + "description": "Port number of this port.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "description": "Protocol served by this port.", + "type": "string" + } + }, + "required": [ + "number", + "protocol" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources the egress policy is applicable to.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "enum": [ + "ServiceAccount" + ], + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "kind", + "name", + "namespace" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "sources", + "ports" + ], + "title": "Egress", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.11.0-rc.1/egress.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.11.0-rc.1/egress.meshery.layer5.io_definition.json new file mode 100755 index 00000000..d6269e1e --- /dev/null +++ b/templates/oam/workloads/v0.11.0-rc.1/egress.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Egress", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "egress.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "policy.openservicemesh.io/v1alpha1", + "k8sKind": "Egress", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.11.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.11.0-rc.1/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.11.0-rc.1/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..6951d46c --- /dev/null +++ b/templates/oam/workloads/v0.11.0-rc.1/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,60 @@ +{ + "properties": { + "matches": { + "description": "Match conditions of this route group.", + "items": { + "properties": { + "headers": { + "description": "Header match conditions of this route.", + "items": { + "additionalProperties": { + "type": "string" + }, + "description": "Header match condition of this route.", + "type": "object" + }, + "type": "array" + }, + "methods": { + "description": "The HTTP methods of this HTTP route.", + "items": { + "description": "The HTTP method of this HTTP route.", + "enum": [ + "*", + "GET", + "HEAD", + "PUT", + "POST", + "DELETE", + "CONNECT", + "OPTIONS", + "TRACE", + "PATCH" + ], + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "Name of the HTTP route.", + "type": "string" + }, + "pathRegex": { + "description": "URI path regex of the HTTP route.", + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "matches" + ], + "title": "HTTP Route Group", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.11.0-rc.1/httproutegroup.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.11.0-rc.1/httproutegroup.meshery.layer5.io_definition.json new file mode 100755 index 00000000..cb0ff458 --- /dev/null +++ b/templates/oam/workloads/v0.11.0-rc.1/httproutegroup.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPRouteGroup", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httproutegroup.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "specs.smi-spec.io/v1alpha4", + "k8sKind": "HTTPRouteGroup", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.11.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.11.0-rc.1/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.11.0-rc.1/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..f5535897 --- /dev/null +++ b/templates/oam/workloads/v0.11.0-rc.1/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,118 @@ +{ + "properties": { + "backends": { + "description": "Backends the IngressBackend policy is applicable to.", + "items": { + "properties": { + "name": { + "description": "Name of the backend.", + "type": "string" + }, + "port": { + "description": "Port of the backend.", + "properties": { + "number": { + "description": "Port number of this port.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "description": "Protocol served by this port.", + "type": "string" + } + }, + "required": [ + "number", + "protocol" + ], + "type": "object" + }, + "tls": { + "description": "TLS configuration for the backend.", + "properties": { + "skipClientCertValidation": { + "description": "Skip client certificate validation.", + "type": "boolean" + }, + "sniHosts": { + "description": "SNI hosts allowed by the backend.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "skipClientCertValidation" + ], + "type": "object" + } + }, + "required": [ + "name", + "port" + ], + "type": "object" + }, + "type": "array" + }, + "matches": { + "description": "The resource references an IngressBackend policy should match on.", + "items": { + "properties": { + "apiGroup": { + "description": "API group for the resource being referenced.", + "type": "string" + }, + "kind": { + "description": "Type of resource being referenced.", + "type": "string" + }, + "name": { + "description": "Name of resource being referenced.", + "type": "string" + } + }, + "required": [ + "apiGroup", + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources the IngressBackend policy is applicable to.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "backends", + "sources" + ], + "title": "Ingress Backend", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.11.0-rc.1/ingressbackend.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.11.0-rc.1/ingressbackend.meshery.layer5.io_definition.json new file mode 100755 index 00000000..f4f37488 --- /dev/null +++ b/templates/oam/workloads/v0.11.0-rc.1/ingressbackend.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "IngressBackend", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "ingressbackend.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "policy.openservicemesh.io/v1alpha1", + "k8sKind": "IngressBackend", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.11.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.11.0-rc.1/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.11.0-rc.1/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..b607634a --- /dev/null +++ b/templates/oam/workloads/v0.11.0-rc.1/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,264 @@ +{ + "properties": { + "certificate": { + "description": "Configuration for certificate management", + "properties": { + "certKeyBitSize": { + "description": "Sets the certificate key bit size for data plane certificates.", + "type": "integer" + }, + "ingressGateway": { + "description": "Configuration for the ingress gateway's certificate", + "properties": { + "secret": { + "description": "Secret reference to store the certificate in", + "properties": { + "name": { + "description": "Name of the secret", + "type": "string" + }, + "namespace": { + "description": "Namespace of the secret", + "type": "string" + } + }, + "required": [ + "name", + "namespace" + ], + "type": "object" + }, + "subjectAltNames": { + "description": "Subject Alternative Names secured by the certificate", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "validityDuration": { + "description": "Certificate validity duration, represented as a sequence of decimal numbers each with optional fraction and a unit suffix", + "type": "string" + } + }, + "required": [ + "subjectAltNames", + "validityDuration", + "secret" + ], + "type": "object" + }, + "serviceCertValidityDuration": { + "description": "Sets the service certificate validity duration, represented as a sequence of decimal numbers each with optional fraction and a unit suffix.", + "type": "string" + } + }, + "required": [ + "serviceCertValidityDuration", + "certKeyBitSize" + ], + "type": "object" + }, + "featureFlags": { + "description": "OSM feature flags", + "properties": { + "enableAsyncProxyServiceMapping": { + "type": "boolean" + }, + "enableEgressPolicy": { + "type": "boolean" + }, + "enableEnvoyActiveHealthChecks": { + "type": "boolean" + }, + "enableIngressBackendPolicy": { + "type": "boolean" + }, + "enableMulticlusterMode": { + "type": "boolean" + }, + "enableRetryPolicy": { + "type": "boolean" + }, + "enableSnapshotCacheMode": { + "type": "boolean" + }, + "enableWASMStats": { + "type": "boolean" + } + }, + "type": "object" + }, + "observability": { + "description": "Configuration for observing the service mesh, including metrics, logs, tracing etc,.", + "properties": { + "enableDebugServer": { + "description": "Enables a debug endpoint on the osm-controller pod to list information regarding the mesh such as proxy connections, certificates, and SMI policies.", + "type": "boolean" + }, + "osmLogLevel": { + "description": "Allows setting OSM control plane log level at runtime", + "type": "string" + }, + "tracing": { + "description": "Configuration for distributed tracing", + "properties": { + "address": { + "description": "Address of Jaeger tracing deployment, if tracing is enabled.", + "type": "string" + }, + "enable": { + "description": "Enables Jaeger tracing for the mesh.", + "type": "boolean" + }, + "endpoint": { + "description": "Endpoint for tracing data, if tracing is enabled.", + "type": "string" + }, + "port": { + "description": "Port on which tracing is enabled.", + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "sidecar": { + "description": "Configuration for Envoy sidecar", + "properties": { + "configResyncInterval": { + "description": "Resync interval for regular proxy broadcast updates", + "type": "string" + }, + "enablePrivilegedInitContainer": { + "description": "Enables privileged init containers for pods in mesh. When false, init containers only have NET_ADMIN.", + "type": "boolean" + }, + "envoyImage": { + "description": "Image for the Envoy sidecar", + "type": "string" + }, + "envoyWindowsImage": { + "description": "Image for the Envoy sidecar on Windows workers", + "type": "string" + }, + "initContainerImage": { + "description": "Image for the init container", + "type": "string" + }, + "logLevel": { + "description": "Sets the logging verbosity of Envoy proxy sidecar, only applicable to newly created pods joining the mesh.", + "enum": [ + "trace", + "debug", + "info", + "warning", + "warn", + "error", + "critical", + "off" + ], + "type": "string" + }, + "maxDataPlaneConnections": { + "description": "Max allowed data plane sidecar connections", + "type": "integer" + }, + "resources": { + "properties": { + "limits": { + "additionalProperties": true, + "description": "Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/", + "type": "object" + }, + "requests": { + "additionalProperties": true, + "description": "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/", + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "traffic": { + "description": "Configuration for traffic management", + "properties": { + "enableEgress": { + "description": "Enables egress in the mesh", + "type": "boolean" + }, + "enablePermissiveTrafficPolicyMode": { + "description": "True for allowing traffic to flow between client and service pods within the mesh without SMI traffic policies, i.e. no traffic policy enforcement in the mesh. If set to false, enables deny-all traffic policy in mesh i.e. an SMI Traffic Target is necessary for services to communicate.", + "type": "boolean" + }, + "inboundExternalAuthorization": { + "description": "Configures external authorization for inbound and ingress connections.", + "properties": { + "address": { + "description": "Target destination endpoint that will handle external authorization.", + "type": "string" + }, + "enable": { + "description": "Enables/disables the inbound external authorization policy if present.", + "type": "boolean" + }, + "failureModeAllow": { + "description": "Allows specifying if traffic should succeed or fail if the external authorization endpoint fails to respond.", + "type": "boolean" + }, + "port": { + "description": "Remote destination port for the external authorization endpoint.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "statPrefix": { + "default": "inboundExtAuthz", + "description": "String prefix for inbound external authorization related metrics.", + "type": "string" + }, + "timeout": { + "default": "1s", + "description": "Defines the timeout to consider for the remote endpoint to reply in time.", + "type": "string" + } + }, + "type": "object" + }, + "inboundPortExclusionList": { + "description": "Global list of ports to exclude from inbound traffic interception by the sidecar proxy.", + "items": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "type": "array" + }, + "outboundIPRangeExclusionList": { + "description": "Global list of IP address ranges to exclude from outbound traffic interception by the sidecar proxy.", + "items": { + "pattern": "((?:\\d{1,3}\\.){3}\\d{1,3})\\/(\\d{1,2})$", + "type": "string" + }, + "type": "array" + }, + "outboundPortExclusionList": { + "description": "Global list of ports to exclude from outbound traffic interception by the sidecar proxy.", + "items": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "title": "Mesh Config", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.11.0-rc.1/meshconfig.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.11.0-rc.1/meshconfig.meshery.layer5.io_definition.json new file mode 100755 index 00000000..32cd9c6c --- /dev/null +++ b/templates/oam/workloads/v0.11.0-rc.1/meshconfig.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "MeshConfig", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "meshconfig.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.openservicemesh.io/v1alpha1", + "k8sKind": "MeshConfig", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.11.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.11.0-rc.1/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.11.0-rc.1/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..60d4f7dd --- /dev/null +++ b/templates/oam/workloads/v0.11.0-rc.1/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "properties": { + "clusters": { + "description": "The clusters the service accounts are hosted on.", + "items": { + "properties": { + "address": { + "description": "a routable IP + port", + "pattern": "^(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3}):[0-9]+$", + "type": "string" + }, + "certificate": { + "description": "mTLS certificates (optional)", + "type": "string" + }, + "name": { + "description": "Name of the remote cluster", + "type": "string" + }, + "priority": { + "description": "Priority of the remote cluster in locality based load balancing", + "minimum": 0, + "type": "integer" + }, + "weight": { + "default": 0, + "description": "Load balancing weight of the remote cluster", + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "address", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "ports": { + "description": "The list of ports that are exposed by this service.", + "items": { + "properties": { + "port": { + "description": "The port that will be exposed by this service.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "default": "TCP", + "description": "The IP protocol for this port. Supports \"TCP\", \"UDP\", and \"SCTP\". Default is TCP.", + "enum": [ + "TCP", + "UDP", + "SCTP" + ], + "type": "string" + } + }, + "required": [ + "port", + "protocol" + ], + "type": "object" + }, + "type": "array" + }, + "serviceAccount": { + "type": "string" + } + }, + "required": [ + "serviceAccount", + "clusters" + ], + "title": "Multi Cluster Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.11.0-rc.1/multiclusterservice.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.11.0-rc.1/multiclusterservice.meshery.layer5.io_definition.json new file mode 100755 index 00000000..ca453b29 --- /dev/null +++ b/templates/oam/workloads/v0.11.0-rc.1/multiclusterservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "MultiClusterService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "multiclusterservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.openservicemesh.io/v1alpha1", + "k8sKind": "MultiClusterService", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.11.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.11.0-rc.1/tcproute.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.11.0-rc.1/tcproute.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..d0cc9bfe --- /dev/null +++ b/templates/oam/workloads/v0.11.0-rc.1/tcproute.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,25 @@ +{ + "properties": { + "matches": { + "description": "Match conditions of this route.", + "properties": { + "ports": { + "description": "Port numbers to match TCP traffic.", + "items": { + "type": "integer" + }, + "type": "array" + } + }, + "required": [ + "ports" + ], + "type": "object" + } + }, + "required": [ + "matches" + ], + "title": "TCP Route", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.11.0-rc.1/tcproute.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.11.0-rc.1/tcproute.meshery.layer5.io_definition.json new file mode 100755 index 00000000..2898e3d9 --- /dev/null +++ b/templates/oam/workloads/v0.11.0-rc.1/tcproute.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TCPRoute", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "tcproute.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "specs.smi-spec.io/v1alpha4", + "k8sKind": "TCPRoute", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.11.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.11.0-rc.1/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.11.0-rc.1/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..13f0a9a2 --- /dev/null +++ b/templates/oam/workloads/v0.11.0-rc.1/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,59 @@ +{ + "properties": { + "backends": { + "description": "The backend services of this split.", + "items": { + "properties": { + "service": { + "description": "Name of the Kubernetes service.", + "type": "string" + }, + "weight": { + "description": "Traffic weight value of this backend.", + "type": "number" + } + }, + "required": [ + "service", + "weight" + ], + "type": "object" + }, + "type": "array" + }, + "matches": { + "description": "The HTTP route groups that this traffic split should match.", + "items": { + "properties": { + "kind": { + "description": "Kind of the matching group.", + "enum": [ + "HTTPRouteGroup" + ], + "type": "string" + }, + "name": { + "description": "Name of the matching group.", + "type": "string" + } + }, + "required": [ + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "service": { + "description": "The apex service of this split.", + "type": "string" + } + }, + "required": [ + "service", + "backends" + ], + "title": "Traffic Split", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.11.0-rc.1/trafficsplit.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.11.0-rc.1/trafficsplit.meshery.layer5.io_definition.json new file mode 100755 index 00000000..8489c9f0 --- /dev/null +++ b/templates/oam/workloads/v0.11.0-rc.1/trafficsplit.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TrafficSplit", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "trafficsplit.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "split.smi-spec.io/v1alpha4", + "k8sKind": "TrafficSplit", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.11.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.11.0-rc.1/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.11.0-rc.1/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..83a24559 --- /dev/null +++ b/templates/oam/workloads/v0.11.0-rc.1/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,91 @@ +{ + "properties": { + "destination": { + "description": "The destination of this traffic target.", + "properties": { + "kind": { + "description": "Kind of the destination.", + "type": "string" + }, + "name": { + "description": "Name of the destination.", + "type": "string" + }, + "namespace": { + "description": "Namespace of the destination.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "rules": { + "description": "Specifications of this traffic target.", + "items": { + "properties": { + "kind": { + "description": "Kind of this spec.", + "enum": [ + "HTTPRouteGroup", + "TCPRoute", + "UDPRoute" + ], + "type": "string" + }, + "matches": { + "description": "Match conditions of this spec.", + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "Name of this spec.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources of this traffic target.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "destination", + "rules", + "sources" + ], + "title": "Traffic Target", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.11.0-rc.1/traffictarget.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.11.0-rc.1/traffictarget.meshery.layer5.io_definition.json new file mode 100755 index 00000000..98e19809 --- /dev/null +++ b/templates/oam/workloads/v0.11.0-rc.1/traffictarget.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TrafficTarget", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "traffictarget.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "access.smi-spec.io/v1alpha3", + "k8sKind": "TrafficTarget", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.11.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.11.0-rc.3/egress.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.11.0-rc.3/egress.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..c77de28d --- /dev/null +++ b/templates/oam/workloads/v0.11.0-rc.3/egress.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,103 @@ +{ + "properties": { + "hosts": { + "description": "Hosts that the sources are allowed to direct external traffic to.", + "items": { + "type": "string" + }, + "type": "array" + }, + "ipAddresses": { + "description": "IP address ranges that the sources are allowed to direct external traffic to.", + "items": { + "pattern": "((?:\\d{1,3}\\.){3}\\d{1,3})\\/(\\d{1,2})$", + "type": "string" + }, + "type": "array" + }, + "matches": { + "description": "The resource references an Egress policy should match on.", + "items": { + "properties": { + "apiGroup": { + "description": "API group for the resource being referenced.", + "type": "string" + }, + "kind": { + "description": "Type of resource being referenced.", + "type": "string" + }, + "name": { + "description": "Name of resource being referenced.", + "type": "string" + } + }, + "required": [ + "apiGroup", + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "ports": { + "description": "Ports that the sources are allowed to direct external traffic to.", + "items": { + "properties": { + "number": { + "description": "Port number of this port.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "description": "Protocol served by this port.", + "type": "string" + } + }, + "required": [ + "number", + "protocol" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources the egress policy is applicable to.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "enum": [ + "ServiceAccount" + ], + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "kind", + "name", + "namespace" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "sources", + "ports" + ], + "title": "Egress", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.11.0-rc.3/egress.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.11.0-rc.3/egress.meshery.layer5.io_definition.json new file mode 100755 index 00000000..893ccf6c --- /dev/null +++ b/templates/oam/workloads/v0.11.0-rc.3/egress.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Egress", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "egress.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "policy.openservicemesh.io/v1alpha1", + "k8sKind": "Egress", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.11.0-rc.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.11.0-rc.3/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.11.0-rc.3/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..6951d46c --- /dev/null +++ b/templates/oam/workloads/v0.11.0-rc.3/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,60 @@ +{ + "properties": { + "matches": { + "description": "Match conditions of this route group.", + "items": { + "properties": { + "headers": { + "description": "Header match conditions of this route.", + "items": { + "additionalProperties": { + "type": "string" + }, + "description": "Header match condition of this route.", + "type": "object" + }, + "type": "array" + }, + "methods": { + "description": "The HTTP methods of this HTTP route.", + "items": { + "description": "The HTTP method of this HTTP route.", + "enum": [ + "*", + "GET", + "HEAD", + "PUT", + "POST", + "DELETE", + "CONNECT", + "OPTIONS", + "TRACE", + "PATCH" + ], + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "Name of the HTTP route.", + "type": "string" + }, + "pathRegex": { + "description": "URI path regex of the HTTP route.", + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "matches" + ], + "title": "HTTP Route Group", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.11.0-rc.3/httproutegroup.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.11.0-rc.3/httproutegroup.meshery.layer5.io_definition.json new file mode 100755 index 00000000..48975de9 --- /dev/null +++ b/templates/oam/workloads/v0.11.0-rc.3/httproutegroup.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPRouteGroup", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httproutegroup.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "specs.smi-spec.io/v1alpha4", + "k8sKind": "HTTPRouteGroup", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.11.0-rc.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.11.0-rc.3/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.11.0-rc.3/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..f5535897 --- /dev/null +++ b/templates/oam/workloads/v0.11.0-rc.3/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,118 @@ +{ + "properties": { + "backends": { + "description": "Backends the IngressBackend policy is applicable to.", + "items": { + "properties": { + "name": { + "description": "Name of the backend.", + "type": "string" + }, + "port": { + "description": "Port of the backend.", + "properties": { + "number": { + "description": "Port number of this port.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "description": "Protocol served by this port.", + "type": "string" + } + }, + "required": [ + "number", + "protocol" + ], + "type": "object" + }, + "tls": { + "description": "TLS configuration for the backend.", + "properties": { + "skipClientCertValidation": { + "description": "Skip client certificate validation.", + "type": "boolean" + }, + "sniHosts": { + "description": "SNI hosts allowed by the backend.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "skipClientCertValidation" + ], + "type": "object" + } + }, + "required": [ + "name", + "port" + ], + "type": "object" + }, + "type": "array" + }, + "matches": { + "description": "The resource references an IngressBackend policy should match on.", + "items": { + "properties": { + "apiGroup": { + "description": "API group for the resource being referenced.", + "type": "string" + }, + "kind": { + "description": "Type of resource being referenced.", + "type": "string" + }, + "name": { + "description": "Name of resource being referenced.", + "type": "string" + } + }, + "required": [ + "apiGroup", + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources the IngressBackend policy is applicable to.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "backends", + "sources" + ], + "title": "Ingress Backend", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.11.0-rc.3/ingressbackend.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.11.0-rc.3/ingressbackend.meshery.layer5.io_definition.json new file mode 100755 index 00000000..729695da --- /dev/null +++ b/templates/oam/workloads/v0.11.0-rc.3/ingressbackend.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "IngressBackend", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "ingressbackend.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "policy.openservicemesh.io/v1alpha1", + "k8sKind": "IngressBackend", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.11.0-rc.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.11.0-rc.3/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.11.0-rc.3/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..b607634a --- /dev/null +++ b/templates/oam/workloads/v0.11.0-rc.3/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,264 @@ +{ + "properties": { + "certificate": { + "description": "Configuration for certificate management", + "properties": { + "certKeyBitSize": { + "description": "Sets the certificate key bit size for data plane certificates.", + "type": "integer" + }, + "ingressGateway": { + "description": "Configuration for the ingress gateway's certificate", + "properties": { + "secret": { + "description": "Secret reference to store the certificate in", + "properties": { + "name": { + "description": "Name of the secret", + "type": "string" + }, + "namespace": { + "description": "Namespace of the secret", + "type": "string" + } + }, + "required": [ + "name", + "namespace" + ], + "type": "object" + }, + "subjectAltNames": { + "description": "Subject Alternative Names secured by the certificate", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "validityDuration": { + "description": "Certificate validity duration, represented as a sequence of decimal numbers each with optional fraction and a unit suffix", + "type": "string" + } + }, + "required": [ + "subjectAltNames", + "validityDuration", + "secret" + ], + "type": "object" + }, + "serviceCertValidityDuration": { + "description": "Sets the service certificate validity duration, represented as a sequence of decimal numbers each with optional fraction and a unit suffix.", + "type": "string" + } + }, + "required": [ + "serviceCertValidityDuration", + "certKeyBitSize" + ], + "type": "object" + }, + "featureFlags": { + "description": "OSM feature flags", + "properties": { + "enableAsyncProxyServiceMapping": { + "type": "boolean" + }, + "enableEgressPolicy": { + "type": "boolean" + }, + "enableEnvoyActiveHealthChecks": { + "type": "boolean" + }, + "enableIngressBackendPolicy": { + "type": "boolean" + }, + "enableMulticlusterMode": { + "type": "boolean" + }, + "enableRetryPolicy": { + "type": "boolean" + }, + "enableSnapshotCacheMode": { + "type": "boolean" + }, + "enableWASMStats": { + "type": "boolean" + } + }, + "type": "object" + }, + "observability": { + "description": "Configuration for observing the service mesh, including metrics, logs, tracing etc,.", + "properties": { + "enableDebugServer": { + "description": "Enables a debug endpoint on the osm-controller pod to list information regarding the mesh such as proxy connections, certificates, and SMI policies.", + "type": "boolean" + }, + "osmLogLevel": { + "description": "Allows setting OSM control plane log level at runtime", + "type": "string" + }, + "tracing": { + "description": "Configuration for distributed tracing", + "properties": { + "address": { + "description": "Address of Jaeger tracing deployment, if tracing is enabled.", + "type": "string" + }, + "enable": { + "description": "Enables Jaeger tracing for the mesh.", + "type": "boolean" + }, + "endpoint": { + "description": "Endpoint for tracing data, if tracing is enabled.", + "type": "string" + }, + "port": { + "description": "Port on which tracing is enabled.", + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "sidecar": { + "description": "Configuration for Envoy sidecar", + "properties": { + "configResyncInterval": { + "description": "Resync interval for regular proxy broadcast updates", + "type": "string" + }, + "enablePrivilegedInitContainer": { + "description": "Enables privileged init containers for pods in mesh. When false, init containers only have NET_ADMIN.", + "type": "boolean" + }, + "envoyImage": { + "description": "Image for the Envoy sidecar", + "type": "string" + }, + "envoyWindowsImage": { + "description": "Image for the Envoy sidecar on Windows workers", + "type": "string" + }, + "initContainerImage": { + "description": "Image for the init container", + "type": "string" + }, + "logLevel": { + "description": "Sets the logging verbosity of Envoy proxy sidecar, only applicable to newly created pods joining the mesh.", + "enum": [ + "trace", + "debug", + "info", + "warning", + "warn", + "error", + "critical", + "off" + ], + "type": "string" + }, + "maxDataPlaneConnections": { + "description": "Max allowed data plane sidecar connections", + "type": "integer" + }, + "resources": { + "properties": { + "limits": { + "additionalProperties": true, + "description": "Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/", + "type": "object" + }, + "requests": { + "additionalProperties": true, + "description": "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/", + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "traffic": { + "description": "Configuration for traffic management", + "properties": { + "enableEgress": { + "description": "Enables egress in the mesh", + "type": "boolean" + }, + "enablePermissiveTrafficPolicyMode": { + "description": "True for allowing traffic to flow between client and service pods within the mesh without SMI traffic policies, i.e. no traffic policy enforcement in the mesh. If set to false, enables deny-all traffic policy in mesh i.e. an SMI Traffic Target is necessary for services to communicate.", + "type": "boolean" + }, + "inboundExternalAuthorization": { + "description": "Configures external authorization for inbound and ingress connections.", + "properties": { + "address": { + "description": "Target destination endpoint that will handle external authorization.", + "type": "string" + }, + "enable": { + "description": "Enables/disables the inbound external authorization policy if present.", + "type": "boolean" + }, + "failureModeAllow": { + "description": "Allows specifying if traffic should succeed or fail if the external authorization endpoint fails to respond.", + "type": "boolean" + }, + "port": { + "description": "Remote destination port for the external authorization endpoint.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "statPrefix": { + "default": "inboundExtAuthz", + "description": "String prefix for inbound external authorization related metrics.", + "type": "string" + }, + "timeout": { + "default": "1s", + "description": "Defines the timeout to consider for the remote endpoint to reply in time.", + "type": "string" + } + }, + "type": "object" + }, + "inboundPortExclusionList": { + "description": "Global list of ports to exclude from inbound traffic interception by the sidecar proxy.", + "items": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "type": "array" + }, + "outboundIPRangeExclusionList": { + "description": "Global list of IP address ranges to exclude from outbound traffic interception by the sidecar proxy.", + "items": { + "pattern": "((?:\\d{1,3}\\.){3}\\d{1,3})\\/(\\d{1,2})$", + "type": "string" + }, + "type": "array" + }, + "outboundPortExclusionList": { + "description": "Global list of ports to exclude from outbound traffic interception by the sidecar proxy.", + "items": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "title": "Mesh Config", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.11.0-rc.3/meshconfig.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.11.0-rc.3/meshconfig.meshery.layer5.io_definition.json new file mode 100755 index 00000000..de6cd028 --- /dev/null +++ b/templates/oam/workloads/v0.11.0-rc.3/meshconfig.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "MeshConfig", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "meshconfig.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.openservicemesh.io/v1alpha1", + "k8sKind": "MeshConfig", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.11.0-rc.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.11.0-rc.3/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.11.0-rc.3/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..60d4f7dd --- /dev/null +++ b/templates/oam/workloads/v0.11.0-rc.3/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "properties": { + "clusters": { + "description": "The clusters the service accounts are hosted on.", + "items": { + "properties": { + "address": { + "description": "a routable IP + port", + "pattern": "^(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3}):[0-9]+$", + "type": "string" + }, + "certificate": { + "description": "mTLS certificates (optional)", + "type": "string" + }, + "name": { + "description": "Name of the remote cluster", + "type": "string" + }, + "priority": { + "description": "Priority of the remote cluster in locality based load balancing", + "minimum": 0, + "type": "integer" + }, + "weight": { + "default": 0, + "description": "Load balancing weight of the remote cluster", + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "address", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "ports": { + "description": "The list of ports that are exposed by this service.", + "items": { + "properties": { + "port": { + "description": "The port that will be exposed by this service.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "default": "TCP", + "description": "The IP protocol for this port. Supports \"TCP\", \"UDP\", and \"SCTP\". Default is TCP.", + "enum": [ + "TCP", + "UDP", + "SCTP" + ], + "type": "string" + } + }, + "required": [ + "port", + "protocol" + ], + "type": "object" + }, + "type": "array" + }, + "serviceAccount": { + "type": "string" + } + }, + "required": [ + "serviceAccount", + "clusters" + ], + "title": "Multi Cluster Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.11.0-rc.3/multiclusterservice.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.11.0-rc.3/multiclusterservice.meshery.layer5.io_definition.json new file mode 100755 index 00000000..8d9965c6 --- /dev/null +++ b/templates/oam/workloads/v0.11.0-rc.3/multiclusterservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "MultiClusterService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "multiclusterservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.openservicemesh.io/v1alpha1", + "k8sKind": "MultiClusterService", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.11.0-rc.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.11.0-rc.3/tcproute.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.11.0-rc.3/tcproute.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..d0cc9bfe --- /dev/null +++ b/templates/oam/workloads/v0.11.0-rc.3/tcproute.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,25 @@ +{ + "properties": { + "matches": { + "description": "Match conditions of this route.", + "properties": { + "ports": { + "description": "Port numbers to match TCP traffic.", + "items": { + "type": "integer" + }, + "type": "array" + } + }, + "required": [ + "ports" + ], + "type": "object" + } + }, + "required": [ + "matches" + ], + "title": "TCP Route", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.11.0-rc.3/tcproute.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.11.0-rc.3/tcproute.meshery.layer5.io_definition.json new file mode 100755 index 00000000..1a9c6171 --- /dev/null +++ b/templates/oam/workloads/v0.11.0-rc.3/tcproute.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TCPRoute", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "tcproute.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "specs.smi-spec.io/v1alpha4", + "k8sKind": "TCPRoute", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.11.0-rc.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.11.0-rc.3/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.11.0-rc.3/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..13f0a9a2 --- /dev/null +++ b/templates/oam/workloads/v0.11.0-rc.3/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,59 @@ +{ + "properties": { + "backends": { + "description": "The backend services of this split.", + "items": { + "properties": { + "service": { + "description": "Name of the Kubernetes service.", + "type": "string" + }, + "weight": { + "description": "Traffic weight value of this backend.", + "type": "number" + } + }, + "required": [ + "service", + "weight" + ], + "type": "object" + }, + "type": "array" + }, + "matches": { + "description": "The HTTP route groups that this traffic split should match.", + "items": { + "properties": { + "kind": { + "description": "Kind of the matching group.", + "enum": [ + "HTTPRouteGroup" + ], + "type": "string" + }, + "name": { + "description": "Name of the matching group.", + "type": "string" + } + }, + "required": [ + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "service": { + "description": "The apex service of this split.", + "type": "string" + } + }, + "required": [ + "service", + "backends" + ], + "title": "Traffic Split", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.11.0-rc.3/trafficsplit.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.11.0-rc.3/trafficsplit.meshery.layer5.io_definition.json new file mode 100755 index 00000000..37fd1f10 --- /dev/null +++ b/templates/oam/workloads/v0.11.0-rc.3/trafficsplit.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TrafficSplit", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "trafficsplit.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "split.smi-spec.io/v1alpha4", + "k8sKind": "TrafficSplit", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.11.0-rc.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.11.0-rc.3/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.11.0-rc.3/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..83a24559 --- /dev/null +++ b/templates/oam/workloads/v0.11.0-rc.3/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,91 @@ +{ + "properties": { + "destination": { + "description": "The destination of this traffic target.", + "properties": { + "kind": { + "description": "Kind of the destination.", + "type": "string" + }, + "name": { + "description": "Name of the destination.", + "type": "string" + }, + "namespace": { + "description": "Namespace of the destination.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "rules": { + "description": "Specifications of this traffic target.", + "items": { + "properties": { + "kind": { + "description": "Kind of this spec.", + "enum": [ + "HTTPRouteGroup", + "TCPRoute", + "UDPRoute" + ], + "type": "string" + }, + "matches": { + "description": "Match conditions of this spec.", + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "Name of this spec.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources of this traffic target.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "destination", + "rules", + "sources" + ], + "title": "Traffic Target", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.11.0-rc.3/traffictarget.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.11.0-rc.3/traffictarget.meshery.layer5.io_definition.json new file mode 100755 index 00000000..dbcfab01 --- /dev/null +++ b/templates/oam/workloads/v0.11.0-rc.3/traffictarget.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TrafficTarget", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "traffictarget.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "access.smi-spec.io/v1alpha3", + "k8sKind": "TrafficTarget", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.11.0-rc.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.11.0/egress.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.11.0/egress.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..c77de28d --- /dev/null +++ b/templates/oam/workloads/v0.11.0/egress.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,103 @@ +{ + "properties": { + "hosts": { + "description": "Hosts that the sources are allowed to direct external traffic to.", + "items": { + "type": "string" + }, + "type": "array" + }, + "ipAddresses": { + "description": "IP address ranges that the sources are allowed to direct external traffic to.", + "items": { + "pattern": "((?:\\d{1,3}\\.){3}\\d{1,3})\\/(\\d{1,2})$", + "type": "string" + }, + "type": "array" + }, + "matches": { + "description": "The resource references an Egress policy should match on.", + "items": { + "properties": { + "apiGroup": { + "description": "API group for the resource being referenced.", + "type": "string" + }, + "kind": { + "description": "Type of resource being referenced.", + "type": "string" + }, + "name": { + "description": "Name of resource being referenced.", + "type": "string" + } + }, + "required": [ + "apiGroup", + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "ports": { + "description": "Ports that the sources are allowed to direct external traffic to.", + "items": { + "properties": { + "number": { + "description": "Port number of this port.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "description": "Protocol served by this port.", + "type": "string" + } + }, + "required": [ + "number", + "protocol" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources the egress policy is applicable to.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "enum": [ + "ServiceAccount" + ], + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "kind", + "name", + "namespace" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "sources", + "ports" + ], + "title": "Egress", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.11.0/egress.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.11.0/egress.meshery.layer5.io_definition.json new file mode 100755 index 00000000..68eb0516 --- /dev/null +++ b/templates/oam/workloads/v0.11.0/egress.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Egress", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "egress.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "policy.openservicemesh.io/v1alpha1", + "k8sKind": "Egress", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.11.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.11.0/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.11.0/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..6951d46c --- /dev/null +++ b/templates/oam/workloads/v0.11.0/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,60 @@ +{ + "properties": { + "matches": { + "description": "Match conditions of this route group.", + "items": { + "properties": { + "headers": { + "description": "Header match conditions of this route.", + "items": { + "additionalProperties": { + "type": "string" + }, + "description": "Header match condition of this route.", + "type": "object" + }, + "type": "array" + }, + "methods": { + "description": "The HTTP methods of this HTTP route.", + "items": { + "description": "The HTTP method of this HTTP route.", + "enum": [ + "*", + "GET", + "HEAD", + "PUT", + "POST", + "DELETE", + "CONNECT", + "OPTIONS", + "TRACE", + "PATCH" + ], + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "Name of the HTTP route.", + "type": "string" + }, + "pathRegex": { + "description": "URI path regex of the HTTP route.", + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "matches" + ], + "title": "HTTP Route Group", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.11.0/httproutegroup.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.11.0/httproutegroup.meshery.layer5.io_definition.json new file mode 100755 index 00000000..4ddd348e --- /dev/null +++ b/templates/oam/workloads/v0.11.0/httproutegroup.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPRouteGroup", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httproutegroup.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "specs.smi-spec.io/v1alpha4", + "k8sKind": "HTTPRouteGroup", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.11.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.11.0/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.11.0/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..f5535897 --- /dev/null +++ b/templates/oam/workloads/v0.11.0/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,118 @@ +{ + "properties": { + "backends": { + "description": "Backends the IngressBackend policy is applicable to.", + "items": { + "properties": { + "name": { + "description": "Name of the backend.", + "type": "string" + }, + "port": { + "description": "Port of the backend.", + "properties": { + "number": { + "description": "Port number of this port.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "description": "Protocol served by this port.", + "type": "string" + } + }, + "required": [ + "number", + "protocol" + ], + "type": "object" + }, + "tls": { + "description": "TLS configuration for the backend.", + "properties": { + "skipClientCertValidation": { + "description": "Skip client certificate validation.", + "type": "boolean" + }, + "sniHosts": { + "description": "SNI hosts allowed by the backend.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "skipClientCertValidation" + ], + "type": "object" + } + }, + "required": [ + "name", + "port" + ], + "type": "object" + }, + "type": "array" + }, + "matches": { + "description": "The resource references an IngressBackend policy should match on.", + "items": { + "properties": { + "apiGroup": { + "description": "API group for the resource being referenced.", + "type": "string" + }, + "kind": { + "description": "Type of resource being referenced.", + "type": "string" + }, + "name": { + "description": "Name of resource being referenced.", + "type": "string" + } + }, + "required": [ + "apiGroup", + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources the IngressBackend policy is applicable to.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "backends", + "sources" + ], + "title": "Ingress Backend", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.11.0/ingressbackend.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.11.0/ingressbackend.meshery.layer5.io_definition.json new file mode 100755 index 00000000..b27dbace --- /dev/null +++ b/templates/oam/workloads/v0.11.0/ingressbackend.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "IngressBackend", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "ingressbackend.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "policy.openservicemesh.io/v1alpha1", + "k8sKind": "IngressBackend", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.11.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.11.0/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.11.0/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..b607634a --- /dev/null +++ b/templates/oam/workloads/v0.11.0/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,264 @@ +{ + "properties": { + "certificate": { + "description": "Configuration for certificate management", + "properties": { + "certKeyBitSize": { + "description": "Sets the certificate key bit size for data plane certificates.", + "type": "integer" + }, + "ingressGateway": { + "description": "Configuration for the ingress gateway's certificate", + "properties": { + "secret": { + "description": "Secret reference to store the certificate in", + "properties": { + "name": { + "description": "Name of the secret", + "type": "string" + }, + "namespace": { + "description": "Namespace of the secret", + "type": "string" + } + }, + "required": [ + "name", + "namespace" + ], + "type": "object" + }, + "subjectAltNames": { + "description": "Subject Alternative Names secured by the certificate", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "validityDuration": { + "description": "Certificate validity duration, represented as a sequence of decimal numbers each with optional fraction and a unit suffix", + "type": "string" + } + }, + "required": [ + "subjectAltNames", + "validityDuration", + "secret" + ], + "type": "object" + }, + "serviceCertValidityDuration": { + "description": "Sets the service certificate validity duration, represented as a sequence of decimal numbers each with optional fraction and a unit suffix.", + "type": "string" + } + }, + "required": [ + "serviceCertValidityDuration", + "certKeyBitSize" + ], + "type": "object" + }, + "featureFlags": { + "description": "OSM feature flags", + "properties": { + "enableAsyncProxyServiceMapping": { + "type": "boolean" + }, + "enableEgressPolicy": { + "type": "boolean" + }, + "enableEnvoyActiveHealthChecks": { + "type": "boolean" + }, + "enableIngressBackendPolicy": { + "type": "boolean" + }, + "enableMulticlusterMode": { + "type": "boolean" + }, + "enableRetryPolicy": { + "type": "boolean" + }, + "enableSnapshotCacheMode": { + "type": "boolean" + }, + "enableWASMStats": { + "type": "boolean" + } + }, + "type": "object" + }, + "observability": { + "description": "Configuration for observing the service mesh, including metrics, logs, tracing etc,.", + "properties": { + "enableDebugServer": { + "description": "Enables a debug endpoint on the osm-controller pod to list information regarding the mesh such as proxy connections, certificates, and SMI policies.", + "type": "boolean" + }, + "osmLogLevel": { + "description": "Allows setting OSM control plane log level at runtime", + "type": "string" + }, + "tracing": { + "description": "Configuration for distributed tracing", + "properties": { + "address": { + "description": "Address of Jaeger tracing deployment, if tracing is enabled.", + "type": "string" + }, + "enable": { + "description": "Enables Jaeger tracing for the mesh.", + "type": "boolean" + }, + "endpoint": { + "description": "Endpoint for tracing data, if tracing is enabled.", + "type": "string" + }, + "port": { + "description": "Port on which tracing is enabled.", + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "sidecar": { + "description": "Configuration for Envoy sidecar", + "properties": { + "configResyncInterval": { + "description": "Resync interval for regular proxy broadcast updates", + "type": "string" + }, + "enablePrivilegedInitContainer": { + "description": "Enables privileged init containers for pods in mesh. When false, init containers only have NET_ADMIN.", + "type": "boolean" + }, + "envoyImage": { + "description": "Image for the Envoy sidecar", + "type": "string" + }, + "envoyWindowsImage": { + "description": "Image for the Envoy sidecar on Windows workers", + "type": "string" + }, + "initContainerImage": { + "description": "Image for the init container", + "type": "string" + }, + "logLevel": { + "description": "Sets the logging verbosity of Envoy proxy sidecar, only applicable to newly created pods joining the mesh.", + "enum": [ + "trace", + "debug", + "info", + "warning", + "warn", + "error", + "critical", + "off" + ], + "type": "string" + }, + "maxDataPlaneConnections": { + "description": "Max allowed data plane sidecar connections", + "type": "integer" + }, + "resources": { + "properties": { + "limits": { + "additionalProperties": true, + "description": "Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/", + "type": "object" + }, + "requests": { + "additionalProperties": true, + "description": "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/", + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "traffic": { + "description": "Configuration for traffic management", + "properties": { + "enableEgress": { + "description": "Enables egress in the mesh", + "type": "boolean" + }, + "enablePermissiveTrafficPolicyMode": { + "description": "True for allowing traffic to flow between client and service pods within the mesh without SMI traffic policies, i.e. no traffic policy enforcement in the mesh. If set to false, enables deny-all traffic policy in mesh i.e. an SMI Traffic Target is necessary for services to communicate.", + "type": "boolean" + }, + "inboundExternalAuthorization": { + "description": "Configures external authorization for inbound and ingress connections.", + "properties": { + "address": { + "description": "Target destination endpoint that will handle external authorization.", + "type": "string" + }, + "enable": { + "description": "Enables/disables the inbound external authorization policy if present.", + "type": "boolean" + }, + "failureModeAllow": { + "description": "Allows specifying if traffic should succeed or fail if the external authorization endpoint fails to respond.", + "type": "boolean" + }, + "port": { + "description": "Remote destination port for the external authorization endpoint.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "statPrefix": { + "default": "inboundExtAuthz", + "description": "String prefix for inbound external authorization related metrics.", + "type": "string" + }, + "timeout": { + "default": "1s", + "description": "Defines the timeout to consider for the remote endpoint to reply in time.", + "type": "string" + } + }, + "type": "object" + }, + "inboundPortExclusionList": { + "description": "Global list of ports to exclude from inbound traffic interception by the sidecar proxy.", + "items": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "type": "array" + }, + "outboundIPRangeExclusionList": { + "description": "Global list of IP address ranges to exclude from outbound traffic interception by the sidecar proxy.", + "items": { + "pattern": "((?:\\d{1,3}\\.){3}\\d{1,3})\\/(\\d{1,2})$", + "type": "string" + }, + "type": "array" + }, + "outboundPortExclusionList": { + "description": "Global list of ports to exclude from outbound traffic interception by the sidecar proxy.", + "items": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "title": "Mesh Config", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.11.0/meshconfig.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.11.0/meshconfig.meshery.layer5.io_definition.json new file mode 100755 index 00000000..67aae7cf --- /dev/null +++ b/templates/oam/workloads/v0.11.0/meshconfig.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "MeshConfig", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "meshconfig.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.openservicemesh.io/v1alpha1", + "k8sKind": "MeshConfig", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.11.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.11.0/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.11.0/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..60d4f7dd --- /dev/null +++ b/templates/oam/workloads/v0.11.0/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "properties": { + "clusters": { + "description": "The clusters the service accounts are hosted on.", + "items": { + "properties": { + "address": { + "description": "a routable IP + port", + "pattern": "^(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3}):[0-9]+$", + "type": "string" + }, + "certificate": { + "description": "mTLS certificates (optional)", + "type": "string" + }, + "name": { + "description": "Name of the remote cluster", + "type": "string" + }, + "priority": { + "description": "Priority of the remote cluster in locality based load balancing", + "minimum": 0, + "type": "integer" + }, + "weight": { + "default": 0, + "description": "Load balancing weight of the remote cluster", + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "address", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "ports": { + "description": "The list of ports that are exposed by this service.", + "items": { + "properties": { + "port": { + "description": "The port that will be exposed by this service.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "default": "TCP", + "description": "The IP protocol for this port. Supports \"TCP\", \"UDP\", and \"SCTP\". Default is TCP.", + "enum": [ + "TCP", + "UDP", + "SCTP" + ], + "type": "string" + } + }, + "required": [ + "port", + "protocol" + ], + "type": "object" + }, + "type": "array" + }, + "serviceAccount": { + "type": "string" + } + }, + "required": [ + "serviceAccount", + "clusters" + ], + "title": "Multi Cluster Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.11.0/multiclusterservice.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.11.0/multiclusterservice.meshery.layer5.io_definition.json new file mode 100755 index 00000000..e39993e7 --- /dev/null +++ b/templates/oam/workloads/v0.11.0/multiclusterservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "MultiClusterService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "multiclusterservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.openservicemesh.io/v1alpha1", + "k8sKind": "MultiClusterService", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.11.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.11.0/tcproute.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.11.0/tcproute.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..d0cc9bfe --- /dev/null +++ b/templates/oam/workloads/v0.11.0/tcproute.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,25 @@ +{ + "properties": { + "matches": { + "description": "Match conditions of this route.", + "properties": { + "ports": { + "description": "Port numbers to match TCP traffic.", + "items": { + "type": "integer" + }, + "type": "array" + } + }, + "required": [ + "ports" + ], + "type": "object" + } + }, + "required": [ + "matches" + ], + "title": "TCP Route", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.11.0/tcproute.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.11.0/tcproute.meshery.layer5.io_definition.json new file mode 100755 index 00000000..0f6aab68 --- /dev/null +++ b/templates/oam/workloads/v0.11.0/tcproute.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TCPRoute", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "tcproute.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "specs.smi-spec.io/v1alpha4", + "k8sKind": "TCPRoute", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.11.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.11.0/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.11.0/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..13f0a9a2 --- /dev/null +++ b/templates/oam/workloads/v0.11.0/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,59 @@ +{ + "properties": { + "backends": { + "description": "The backend services of this split.", + "items": { + "properties": { + "service": { + "description": "Name of the Kubernetes service.", + "type": "string" + }, + "weight": { + "description": "Traffic weight value of this backend.", + "type": "number" + } + }, + "required": [ + "service", + "weight" + ], + "type": "object" + }, + "type": "array" + }, + "matches": { + "description": "The HTTP route groups that this traffic split should match.", + "items": { + "properties": { + "kind": { + "description": "Kind of the matching group.", + "enum": [ + "HTTPRouteGroup" + ], + "type": "string" + }, + "name": { + "description": "Name of the matching group.", + "type": "string" + } + }, + "required": [ + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "service": { + "description": "The apex service of this split.", + "type": "string" + } + }, + "required": [ + "service", + "backends" + ], + "title": "Traffic Split", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.11.0/trafficsplit.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.11.0/trafficsplit.meshery.layer5.io_definition.json new file mode 100755 index 00000000..491c5df5 --- /dev/null +++ b/templates/oam/workloads/v0.11.0/trafficsplit.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TrafficSplit", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "trafficsplit.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "split.smi-spec.io/v1alpha4", + "k8sKind": "TrafficSplit", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.11.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.11.0/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.11.0/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..83a24559 --- /dev/null +++ b/templates/oam/workloads/v0.11.0/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,91 @@ +{ + "properties": { + "destination": { + "description": "The destination of this traffic target.", + "properties": { + "kind": { + "description": "Kind of the destination.", + "type": "string" + }, + "name": { + "description": "Name of the destination.", + "type": "string" + }, + "namespace": { + "description": "Namespace of the destination.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "rules": { + "description": "Specifications of this traffic target.", + "items": { + "properties": { + "kind": { + "description": "Kind of this spec.", + "enum": [ + "HTTPRouteGroup", + "TCPRoute", + "UDPRoute" + ], + "type": "string" + }, + "matches": { + "description": "Match conditions of this spec.", + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "Name of this spec.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources of this traffic target.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "destination", + "rules", + "sources" + ], + "title": "Traffic Target", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.11.0/traffictarget.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.11.0/traffictarget.meshery.layer5.io_definition.json new file mode 100755 index 00000000..4e71a001 --- /dev/null +++ b/templates/oam/workloads/v0.11.0/traffictarget.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TrafficTarget", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "traffictarget.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "access.smi-spec.io/v1alpha3", + "k8sKind": "TrafficTarget", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.11.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.11.1-rc.1/egress.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.11.1-rc.1/egress.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..c77de28d --- /dev/null +++ b/templates/oam/workloads/v0.11.1-rc.1/egress.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,103 @@ +{ + "properties": { + "hosts": { + "description": "Hosts that the sources are allowed to direct external traffic to.", + "items": { + "type": "string" + }, + "type": "array" + }, + "ipAddresses": { + "description": "IP address ranges that the sources are allowed to direct external traffic to.", + "items": { + "pattern": "((?:\\d{1,3}\\.){3}\\d{1,3})\\/(\\d{1,2})$", + "type": "string" + }, + "type": "array" + }, + "matches": { + "description": "The resource references an Egress policy should match on.", + "items": { + "properties": { + "apiGroup": { + "description": "API group for the resource being referenced.", + "type": "string" + }, + "kind": { + "description": "Type of resource being referenced.", + "type": "string" + }, + "name": { + "description": "Name of resource being referenced.", + "type": "string" + } + }, + "required": [ + "apiGroup", + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "ports": { + "description": "Ports that the sources are allowed to direct external traffic to.", + "items": { + "properties": { + "number": { + "description": "Port number of this port.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "description": "Protocol served by this port.", + "type": "string" + } + }, + "required": [ + "number", + "protocol" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources the egress policy is applicable to.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "enum": [ + "ServiceAccount" + ], + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "kind", + "name", + "namespace" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "sources", + "ports" + ], + "title": "Egress", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.11.1-rc.1/egress.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.11.1-rc.1/egress.meshery.layer5.io_definition.json new file mode 100755 index 00000000..e9ebb9f2 --- /dev/null +++ b/templates/oam/workloads/v0.11.1-rc.1/egress.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Egress", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "egress.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "policy.openservicemesh.io/v1alpha1", + "k8sKind": "Egress", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.11.1-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.11.1-rc.1/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.11.1-rc.1/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..6951d46c --- /dev/null +++ b/templates/oam/workloads/v0.11.1-rc.1/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,60 @@ +{ + "properties": { + "matches": { + "description": "Match conditions of this route group.", + "items": { + "properties": { + "headers": { + "description": "Header match conditions of this route.", + "items": { + "additionalProperties": { + "type": "string" + }, + "description": "Header match condition of this route.", + "type": "object" + }, + "type": "array" + }, + "methods": { + "description": "The HTTP methods of this HTTP route.", + "items": { + "description": "The HTTP method of this HTTP route.", + "enum": [ + "*", + "GET", + "HEAD", + "PUT", + "POST", + "DELETE", + "CONNECT", + "OPTIONS", + "TRACE", + "PATCH" + ], + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "Name of the HTTP route.", + "type": "string" + }, + "pathRegex": { + "description": "URI path regex of the HTTP route.", + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "matches" + ], + "title": "HTTP Route Group", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.11.1-rc.1/httproutegroup.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.11.1-rc.1/httproutegroup.meshery.layer5.io_definition.json new file mode 100755 index 00000000..2ca0ac60 --- /dev/null +++ b/templates/oam/workloads/v0.11.1-rc.1/httproutegroup.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPRouteGroup", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httproutegroup.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "specs.smi-spec.io/v1alpha4", + "k8sKind": "HTTPRouteGroup", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.11.1-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.11.1-rc.1/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.11.1-rc.1/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..f5535897 --- /dev/null +++ b/templates/oam/workloads/v0.11.1-rc.1/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,118 @@ +{ + "properties": { + "backends": { + "description": "Backends the IngressBackend policy is applicable to.", + "items": { + "properties": { + "name": { + "description": "Name of the backend.", + "type": "string" + }, + "port": { + "description": "Port of the backend.", + "properties": { + "number": { + "description": "Port number of this port.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "description": "Protocol served by this port.", + "type": "string" + } + }, + "required": [ + "number", + "protocol" + ], + "type": "object" + }, + "tls": { + "description": "TLS configuration for the backend.", + "properties": { + "skipClientCertValidation": { + "description": "Skip client certificate validation.", + "type": "boolean" + }, + "sniHosts": { + "description": "SNI hosts allowed by the backend.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "skipClientCertValidation" + ], + "type": "object" + } + }, + "required": [ + "name", + "port" + ], + "type": "object" + }, + "type": "array" + }, + "matches": { + "description": "The resource references an IngressBackend policy should match on.", + "items": { + "properties": { + "apiGroup": { + "description": "API group for the resource being referenced.", + "type": "string" + }, + "kind": { + "description": "Type of resource being referenced.", + "type": "string" + }, + "name": { + "description": "Name of resource being referenced.", + "type": "string" + } + }, + "required": [ + "apiGroup", + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources the IngressBackend policy is applicable to.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "backends", + "sources" + ], + "title": "Ingress Backend", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.11.1-rc.1/ingressbackend.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.11.1-rc.1/ingressbackend.meshery.layer5.io_definition.json new file mode 100755 index 00000000..94bf9d03 --- /dev/null +++ b/templates/oam/workloads/v0.11.1-rc.1/ingressbackend.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "IngressBackend", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "ingressbackend.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "policy.openservicemesh.io/v1alpha1", + "k8sKind": "IngressBackend", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.11.1-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.11.1-rc.1/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.11.1-rc.1/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..b607634a --- /dev/null +++ b/templates/oam/workloads/v0.11.1-rc.1/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,264 @@ +{ + "properties": { + "certificate": { + "description": "Configuration for certificate management", + "properties": { + "certKeyBitSize": { + "description": "Sets the certificate key bit size for data plane certificates.", + "type": "integer" + }, + "ingressGateway": { + "description": "Configuration for the ingress gateway's certificate", + "properties": { + "secret": { + "description": "Secret reference to store the certificate in", + "properties": { + "name": { + "description": "Name of the secret", + "type": "string" + }, + "namespace": { + "description": "Namespace of the secret", + "type": "string" + } + }, + "required": [ + "name", + "namespace" + ], + "type": "object" + }, + "subjectAltNames": { + "description": "Subject Alternative Names secured by the certificate", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "validityDuration": { + "description": "Certificate validity duration, represented as a sequence of decimal numbers each with optional fraction and a unit suffix", + "type": "string" + } + }, + "required": [ + "subjectAltNames", + "validityDuration", + "secret" + ], + "type": "object" + }, + "serviceCertValidityDuration": { + "description": "Sets the service certificate validity duration, represented as a sequence of decimal numbers each with optional fraction and a unit suffix.", + "type": "string" + } + }, + "required": [ + "serviceCertValidityDuration", + "certKeyBitSize" + ], + "type": "object" + }, + "featureFlags": { + "description": "OSM feature flags", + "properties": { + "enableAsyncProxyServiceMapping": { + "type": "boolean" + }, + "enableEgressPolicy": { + "type": "boolean" + }, + "enableEnvoyActiveHealthChecks": { + "type": "boolean" + }, + "enableIngressBackendPolicy": { + "type": "boolean" + }, + "enableMulticlusterMode": { + "type": "boolean" + }, + "enableRetryPolicy": { + "type": "boolean" + }, + "enableSnapshotCacheMode": { + "type": "boolean" + }, + "enableWASMStats": { + "type": "boolean" + } + }, + "type": "object" + }, + "observability": { + "description": "Configuration for observing the service mesh, including metrics, logs, tracing etc,.", + "properties": { + "enableDebugServer": { + "description": "Enables a debug endpoint on the osm-controller pod to list information regarding the mesh such as proxy connections, certificates, and SMI policies.", + "type": "boolean" + }, + "osmLogLevel": { + "description": "Allows setting OSM control plane log level at runtime", + "type": "string" + }, + "tracing": { + "description": "Configuration for distributed tracing", + "properties": { + "address": { + "description": "Address of Jaeger tracing deployment, if tracing is enabled.", + "type": "string" + }, + "enable": { + "description": "Enables Jaeger tracing for the mesh.", + "type": "boolean" + }, + "endpoint": { + "description": "Endpoint for tracing data, if tracing is enabled.", + "type": "string" + }, + "port": { + "description": "Port on which tracing is enabled.", + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "sidecar": { + "description": "Configuration for Envoy sidecar", + "properties": { + "configResyncInterval": { + "description": "Resync interval for regular proxy broadcast updates", + "type": "string" + }, + "enablePrivilegedInitContainer": { + "description": "Enables privileged init containers for pods in mesh. When false, init containers only have NET_ADMIN.", + "type": "boolean" + }, + "envoyImage": { + "description": "Image for the Envoy sidecar", + "type": "string" + }, + "envoyWindowsImage": { + "description": "Image for the Envoy sidecar on Windows workers", + "type": "string" + }, + "initContainerImage": { + "description": "Image for the init container", + "type": "string" + }, + "logLevel": { + "description": "Sets the logging verbosity of Envoy proxy sidecar, only applicable to newly created pods joining the mesh.", + "enum": [ + "trace", + "debug", + "info", + "warning", + "warn", + "error", + "critical", + "off" + ], + "type": "string" + }, + "maxDataPlaneConnections": { + "description": "Max allowed data plane sidecar connections", + "type": "integer" + }, + "resources": { + "properties": { + "limits": { + "additionalProperties": true, + "description": "Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/", + "type": "object" + }, + "requests": { + "additionalProperties": true, + "description": "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/", + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "traffic": { + "description": "Configuration for traffic management", + "properties": { + "enableEgress": { + "description": "Enables egress in the mesh", + "type": "boolean" + }, + "enablePermissiveTrafficPolicyMode": { + "description": "True for allowing traffic to flow between client and service pods within the mesh without SMI traffic policies, i.e. no traffic policy enforcement in the mesh. If set to false, enables deny-all traffic policy in mesh i.e. an SMI Traffic Target is necessary for services to communicate.", + "type": "boolean" + }, + "inboundExternalAuthorization": { + "description": "Configures external authorization for inbound and ingress connections.", + "properties": { + "address": { + "description": "Target destination endpoint that will handle external authorization.", + "type": "string" + }, + "enable": { + "description": "Enables/disables the inbound external authorization policy if present.", + "type": "boolean" + }, + "failureModeAllow": { + "description": "Allows specifying if traffic should succeed or fail if the external authorization endpoint fails to respond.", + "type": "boolean" + }, + "port": { + "description": "Remote destination port for the external authorization endpoint.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "statPrefix": { + "default": "inboundExtAuthz", + "description": "String prefix for inbound external authorization related metrics.", + "type": "string" + }, + "timeout": { + "default": "1s", + "description": "Defines the timeout to consider for the remote endpoint to reply in time.", + "type": "string" + } + }, + "type": "object" + }, + "inboundPortExclusionList": { + "description": "Global list of ports to exclude from inbound traffic interception by the sidecar proxy.", + "items": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "type": "array" + }, + "outboundIPRangeExclusionList": { + "description": "Global list of IP address ranges to exclude from outbound traffic interception by the sidecar proxy.", + "items": { + "pattern": "((?:\\d{1,3}\\.){3}\\d{1,3})\\/(\\d{1,2})$", + "type": "string" + }, + "type": "array" + }, + "outboundPortExclusionList": { + "description": "Global list of ports to exclude from outbound traffic interception by the sidecar proxy.", + "items": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "title": "Mesh Config", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.11.1-rc.1/meshconfig.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.11.1-rc.1/meshconfig.meshery.layer5.io_definition.json new file mode 100755 index 00000000..1992d47c --- /dev/null +++ b/templates/oam/workloads/v0.11.1-rc.1/meshconfig.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "MeshConfig", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "meshconfig.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.openservicemesh.io/v1alpha1", + "k8sKind": "MeshConfig", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.11.1-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.11.1-rc.1/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.11.1-rc.1/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..60d4f7dd --- /dev/null +++ b/templates/oam/workloads/v0.11.1-rc.1/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "properties": { + "clusters": { + "description": "The clusters the service accounts are hosted on.", + "items": { + "properties": { + "address": { + "description": "a routable IP + port", + "pattern": "^(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3}):[0-9]+$", + "type": "string" + }, + "certificate": { + "description": "mTLS certificates (optional)", + "type": "string" + }, + "name": { + "description": "Name of the remote cluster", + "type": "string" + }, + "priority": { + "description": "Priority of the remote cluster in locality based load balancing", + "minimum": 0, + "type": "integer" + }, + "weight": { + "default": 0, + "description": "Load balancing weight of the remote cluster", + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "address", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "ports": { + "description": "The list of ports that are exposed by this service.", + "items": { + "properties": { + "port": { + "description": "The port that will be exposed by this service.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "default": "TCP", + "description": "The IP protocol for this port. Supports \"TCP\", \"UDP\", and \"SCTP\". Default is TCP.", + "enum": [ + "TCP", + "UDP", + "SCTP" + ], + "type": "string" + } + }, + "required": [ + "port", + "protocol" + ], + "type": "object" + }, + "type": "array" + }, + "serviceAccount": { + "type": "string" + } + }, + "required": [ + "serviceAccount", + "clusters" + ], + "title": "Multi Cluster Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.11.1-rc.1/multiclusterservice.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.11.1-rc.1/multiclusterservice.meshery.layer5.io_definition.json new file mode 100755 index 00000000..36e60991 --- /dev/null +++ b/templates/oam/workloads/v0.11.1-rc.1/multiclusterservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "MultiClusterService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "multiclusterservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.openservicemesh.io/v1alpha1", + "k8sKind": "MultiClusterService", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.11.1-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.11.1-rc.1/tcproute.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.11.1-rc.1/tcproute.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..d0cc9bfe --- /dev/null +++ b/templates/oam/workloads/v0.11.1-rc.1/tcproute.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,25 @@ +{ + "properties": { + "matches": { + "description": "Match conditions of this route.", + "properties": { + "ports": { + "description": "Port numbers to match TCP traffic.", + "items": { + "type": "integer" + }, + "type": "array" + } + }, + "required": [ + "ports" + ], + "type": "object" + } + }, + "required": [ + "matches" + ], + "title": "TCP Route", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.11.1-rc.1/tcproute.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.11.1-rc.1/tcproute.meshery.layer5.io_definition.json new file mode 100755 index 00000000..b2224f2d --- /dev/null +++ b/templates/oam/workloads/v0.11.1-rc.1/tcproute.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TCPRoute", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "tcproute.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "specs.smi-spec.io/v1alpha4", + "k8sKind": "TCPRoute", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.11.1-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.11.1-rc.1/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.11.1-rc.1/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..13f0a9a2 --- /dev/null +++ b/templates/oam/workloads/v0.11.1-rc.1/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,59 @@ +{ + "properties": { + "backends": { + "description": "The backend services of this split.", + "items": { + "properties": { + "service": { + "description": "Name of the Kubernetes service.", + "type": "string" + }, + "weight": { + "description": "Traffic weight value of this backend.", + "type": "number" + } + }, + "required": [ + "service", + "weight" + ], + "type": "object" + }, + "type": "array" + }, + "matches": { + "description": "The HTTP route groups that this traffic split should match.", + "items": { + "properties": { + "kind": { + "description": "Kind of the matching group.", + "enum": [ + "HTTPRouteGroup" + ], + "type": "string" + }, + "name": { + "description": "Name of the matching group.", + "type": "string" + } + }, + "required": [ + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "service": { + "description": "The apex service of this split.", + "type": "string" + } + }, + "required": [ + "service", + "backends" + ], + "title": "Traffic Split", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.11.1-rc.1/trafficsplit.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.11.1-rc.1/trafficsplit.meshery.layer5.io_definition.json new file mode 100755 index 00000000..6d1f167a --- /dev/null +++ b/templates/oam/workloads/v0.11.1-rc.1/trafficsplit.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TrafficSplit", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "trafficsplit.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "split.smi-spec.io/v1alpha4", + "k8sKind": "TrafficSplit", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.11.1-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.11.1-rc.1/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.11.1-rc.1/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..83a24559 --- /dev/null +++ b/templates/oam/workloads/v0.11.1-rc.1/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,91 @@ +{ + "properties": { + "destination": { + "description": "The destination of this traffic target.", + "properties": { + "kind": { + "description": "Kind of the destination.", + "type": "string" + }, + "name": { + "description": "Name of the destination.", + "type": "string" + }, + "namespace": { + "description": "Namespace of the destination.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "rules": { + "description": "Specifications of this traffic target.", + "items": { + "properties": { + "kind": { + "description": "Kind of this spec.", + "enum": [ + "HTTPRouteGroup", + "TCPRoute", + "UDPRoute" + ], + "type": "string" + }, + "matches": { + "description": "Match conditions of this spec.", + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "Name of this spec.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources of this traffic target.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "destination", + "rules", + "sources" + ], + "title": "Traffic Target", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.11.1-rc.1/traffictarget.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.11.1-rc.1/traffictarget.meshery.layer5.io_definition.json new file mode 100755 index 00000000..9f96f310 --- /dev/null +++ b/templates/oam/workloads/v0.11.1-rc.1/traffictarget.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TrafficTarget", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "traffictarget.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "access.smi-spec.io/v1alpha3", + "k8sKind": "TrafficTarget", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.11.1-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.11.1/egress.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.11.1/egress.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..c77de28d --- /dev/null +++ b/templates/oam/workloads/v0.11.1/egress.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,103 @@ +{ + "properties": { + "hosts": { + "description": "Hosts that the sources are allowed to direct external traffic to.", + "items": { + "type": "string" + }, + "type": "array" + }, + "ipAddresses": { + "description": "IP address ranges that the sources are allowed to direct external traffic to.", + "items": { + "pattern": "((?:\\d{1,3}\\.){3}\\d{1,3})\\/(\\d{1,2})$", + "type": "string" + }, + "type": "array" + }, + "matches": { + "description": "The resource references an Egress policy should match on.", + "items": { + "properties": { + "apiGroup": { + "description": "API group for the resource being referenced.", + "type": "string" + }, + "kind": { + "description": "Type of resource being referenced.", + "type": "string" + }, + "name": { + "description": "Name of resource being referenced.", + "type": "string" + } + }, + "required": [ + "apiGroup", + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "ports": { + "description": "Ports that the sources are allowed to direct external traffic to.", + "items": { + "properties": { + "number": { + "description": "Port number of this port.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "description": "Protocol served by this port.", + "type": "string" + } + }, + "required": [ + "number", + "protocol" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources the egress policy is applicable to.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "enum": [ + "ServiceAccount" + ], + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "kind", + "name", + "namespace" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "sources", + "ports" + ], + "title": "Egress", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.11.1/egress.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.11.1/egress.meshery.layer5.io_definition.json new file mode 100755 index 00000000..12053e2d --- /dev/null +++ b/templates/oam/workloads/v0.11.1/egress.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Egress", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "egress.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "policy.openservicemesh.io/v1alpha1", + "k8sKind": "Egress", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.11.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/workloads-v0.11.1/egress.osm.meshery.layer5io.schema.json b/templates/oam/workloads/v0.11.1/egress.osm.meshery.layer5io.schema.json similarity index 100% rename from templates/oam/workloads/workloads-v0.11.1/egress.osm.meshery.layer5io.schema.json rename to templates/oam/workloads/v0.11.1/egress.osm.meshery.layer5io.schema.json diff --git a/templates/oam/workloads/workloads-v0.11.1/egress.osm_definition.json b/templates/oam/workloads/v0.11.1/egress.osm_definition.json similarity index 100% rename from templates/oam/workloads/workloads-v0.11.1/egress.osm_definition.json rename to templates/oam/workloads/v0.11.1/egress.osm_definition.json diff --git a/templates/oam/workloads/v0.11.1/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.11.1/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..6951d46c --- /dev/null +++ b/templates/oam/workloads/v0.11.1/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,60 @@ +{ + "properties": { + "matches": { + "description": "Match conditions of this route group.", + "items": { + "properties": { + "headers": { + "description": "Header match conditions of this route.", + "items": { + "additionalProperties": { + "type": "string" + }, + "description": "Header match condition of this route.", + "type": "object" + }, + "type": "array" + }, + "methods": { + "description": "The HTTP methods of this HTTP route.", + "items": { + "description": "The HTTP method of this HTTP route.", + "enum": [ + "*", + "GET", + "HEAD", + "PUT", + "POST", + "DELETE", + "CONNECT", + "OPTIONS", + "TRACE", + "PATCH" + ], + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "Name of the HTTP route.", + "type": "string" + }, + "pathRegex": { + "description": "URI path regex of the HTTP route.", + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "matches" + ], + "title": "HTTP Route Group", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.11.1/httproutegroup.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.11.1/httproutegroup.meshery.layer5.io_definition.json new file mode 100755 index 00000000..1c1ee6ca --- /dev/null +++ b/templates/oam/workloads/v0.11.1/httproutegroup.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPRouteGroup", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httproutegroup.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "specs.smi-spec.io/v1alpha4", + "k8sKind": "HTTPRouteGroup", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.11.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/workloads-v0.11.1/httproutegroup.osm.meshery.layer5io.schema.json b/templates/oam/workloads/v0.11.1/httproutegroup.osm.meshery.layer5io.schema.json similarity index 100% rename from templates/oam/workloads/workloads-v0.11.1/httproutegroup.osm.meshery.layer5io.schema.json rename to templates/oam/workloads/v0.11.1/httproutegroup.osm.meshery.layer5io.schema.json diff --git a/templates/oam/workloads/workloads-v0.11.1/httproutegroup.osm_definition.json b/templates/oam/workloads/v0.11.1/httproutegroup.osm_definition.json similarity index 100% rename from templates/oam/workloads/workloads-v0.11.1/httproutegroup.osm_definition.json rename to templates/oam/workloads/v0.11.1/httproutegroup.osm_definition.json diff --git a/templates/oam/workloads/v0.11.1/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.11.1/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..f5535897 --- /dev/null +++ b/templates/oam/workloads/v0.11.1/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,118 @@ +{ + "properties": { + "backends": { + "description": "Backends the IngressBackend policy is applicable to.", + "items": { + "properties": { + "name": { + "description": "Name of the backend.", + "type": "string" + }, + "port": { + "description": "Port of the backend.", + "properties": { + "number": { + "description": "Port number of this port.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "description": "Protocol served by this port.", + "type": "string" + } + }, + "required": [ + "number", + "protocol" + ], + "type": "object" + }, + "tls": { + "description": "TLS configuration for the backend.", + "properties": { + "skipClientCertValidation": { + "description": "Skip client certificate validation.", + "type": "boolean" + }, + "sniHosts": { + "description": "SNI hosts allowed by the backend.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "skipClientCertValidation" + ], + "type": "object" + } + }, + "required": [ + "name", + "port" + ], + "type": "object" + }, + "type": "array" + }, + "matches": { + "description": "The resource references an IngressBackend policy should match on.", + "items": { + "properties": { + "apiGroup": { + "description": "API group for the resource being referenced.", + "type": "string" + }, + "kind": { + "description": "Type of resource being referenced.", + "type": "string" + }, + "name": { + "description": "Name of resource being referenced.", + "type": "string" + } + }, + "required": [ + "apiGroup", + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources the IngressBackend policy is applicable to.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "backends", + "sources" + ], + "title": "Ingress Backend", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.11.1/ingressbackend.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.11.1/ingressbackend.meshery.layer5.io_definition.json new file mode 100755 index 00000000..fdb93838 --- /dev/null +++ b/templates/oam/workloads/v0.11.1/ingressbackend.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "IngressBackend", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "ingressbackend.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "policy.openservicemesh.io/v1alpha1", + "k8sKind": "IngressBackend", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.11.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/workloads-v0.11.1/ingressbackend.osm.meshery.layer5io.schema.json b/templates/oam/workloads/v0.11.1/ingressbackend.osm.meshery.layer5io.schema.json similarity index 100% rename from templates/oam/workloads/workloads-v0.11.1/ingressbackend.osm.meshery.layer5io.schema.json rename to templates/oam/workloads/v0.11.1/ingressbackend.osm.meshery.layer5io.schema.json diff --git a/templates/oam/workloads/workloads-v0.11.1/ingressbackend.osm_definition.json b/templates/oam/workloads/v0.11.1/ingressbackend.osm_definition.json similarity index 100% rename from templates/oam/workloads/workloads-v0.11.1/ingressbackend.osm_definition.json rename to templates/oam/workloads/v0.11.1/ingressbackend.osm_definition.json diff --git a/templates/oam/workloads/v0.11.1/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.11.1/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..b607634a --- /dev/null +++ b/templates/oam/workloads/v0.11.1/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,264 @@ +{ + "properties": { + "certificate": { + "description": "Configuration for certificate management", + "properties": { + "certKeyBitSize": { + "description": "Sets the certificate key bit size for data plane certificates.", + "type": "integer" + }, + "ingressGateway": { + "description": "Configuration for the ingress gateway's certificate", + "properties": { + "secret": { + "description": "Secret reference to store the certificate in", + "properties": { + "name": { + "description": "Name of the secret", + "type": "string" + }, + "namespace": { + "description": "Namespace of the secret", + "type": "string" + } + }, + "required": [ + "name", + "namespace" + ], + "type": "object" + }, + "subjectAltNames": { + "description": "Subject Alternative Names secured by the certificate", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "validityDuration": { + "description": "Certificate validity duration, represented as a sequence of decimal numbers each with optional fraction and a unit suffix", + "type": "string" + } + }, + "required": [ + "subjectAltNames", + "validityDuration", + "secret" + ], + "type": "object" + }, + "serviceCertValidityDuration": { + "description": "Sets the service certificate validity duration, represented as a sequence of decimal numbers each with optional fraction and a unit suffix.", + "type": "string" + } + }, + "required": [ + "serviceCertValidityDuration", + "certKeyBitSize" + ], + "type": "object" + }, + "featureFlags": { + "description": "OSM feature flags", + "properties": { + "enableAsyncProxyServiceMapping": { + "type": "boolean" + }, + "enableEgressPolicy": { + "type": "boolean" + }, + "enableEnvoyActiveHealthChecks": { + "type": "boolean" + }, + "enableIngressBackendPolicy": { + "type": "boolean" + }, + "enableMulticlusterMode": { + "type": "boolean" + }, + "enableRetryPolicy": { + "type": "boolean" + }, + "enableSnapshotCacheMode": { + "type": "boolean" + }, + "enableWASMStats": { + "type": "boolean" + } + }, + "type": "object" + }, + "observability": { + "description": "Configuration for observing the service mesh, including metrics, logs, tracing etc,.", + "properties": { + "enableDebugServer": { + "description": "Enables a debug endpoint on the osm-controller pod to list information regarding the mesh such as proxy connections, certificates, and SMI policies.", + "type": "boolean" + }, + "osmLogLevel": { + "description": "Allows setting OSM control plane log level at runtime", + "type": "string" + }, + "tracing": { + "description": "Configuration for distributed tracing", + "properties": { + "address": { + "description": "Address of Jaeger tracing deployment, if tracing is enabled.", + "type": "string" + }, + "enable": { + "description": "Enables Jaeger tracing for the mesh.", + "type": "boolean" + }, + "endpoint": { + "description": "Endpoint for tracing data, if tracing is enabled.", + "type": "string" + }, + "port": { + "description": "Port on which tracing is enabled.", + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "sidecar": { + "description": "Configuration for Envoy sidecar", + "properties": { + "configResyncInterval": { + "description": "Resync interval for regular proxy broadcast updates", + "type": "string" + }, + "enablePrivilegedInitContainer": { + "description": "Enables privileged init containers for pods in mesh. When false, init containers only have NET_ADMIN.", + "type": "boolean" + }, + "envoyImage": { + "description": "Image for the Envoy sidecar", + "type": "string" + }, + "envoyWindowsImage": { + "description": "Image for the Envoy sidecar on Windows workers", + "type": "string" + }, + "initContainerImage": { + "description": "Image for the init container", + "type": "string" + }, + "logLevel": { + "description": "Sets the logging verbosity of Envoy proxy sidecar, only applicable to newly created pods joining the mesh.", + "enum": [ + "trace", + "debug", + "info", + "warning", + "warn", + "error", + "critical", + "off" + ], + "type": "string" + }, + "maxDataPlaneConnections": { + "description": "Max allowed data plane sidecar connections", + "type": "integer" + }, + "resources": { + "properties": { + "limits": { + "additionalProperties": true, + "description": "Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/", + "type": "object" + }, + "requests": { + "additionalProperties": true, + "description": "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/", + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "traffic": { + "description": "Configuration for traffic management", + "properties": { + "enableEgress": { + "description": "Enables egress in the mesh", + "type": "boolean" + }, + "enablePermissiveTrafficPolicyMode": { + "description": "True for allowing traffic to flow between client and service pods within the mesh without SMI traffic policies, i.e. no traffic policy enforcement in the mesh. If set to false, enables deny-all traffic policy in mesh i.e. an SMI Traffic Target is necessary for services to communicate.", + "type": "boolean" + }, + "inboundExternalAuthorization": { + "description": "Configures external authorization for inbound and ingress connections.", + "properties": { + "address": { + "description": "Target destination endpoint that will handle external authorization.", + "type": "string" + }, + "enable": { + "description": "Enables/disables the inbound external authorization policy if present.", + "type": "boolean" + }, + "failureModeAllow": { + "description": "Allows specifying if traffic should succeed or fail if the external authorization endpoint fails to respond.", + "type": "boolean" + }, + "port": { + "description": "Remote destination port for the external authorization endpoint.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "statPrefix": { + "default": "inboundExtAuthz", + "description": "String prefix for inbound external authorization related metrics.", + "type": "string" + }, + "timeout": { + "default": "1s", + "description": "Defines the timeout to consider for the remote endpoint to reply in time.", + "type": "string" + } + }, + "type": "object" + }, + "inboundPortExclusionList": { + "description": "Global list of ports to exclude from inbound traffic interception by the sidecar proxy.", + "items": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "type": "array" + }, + "outboundIPRangeExclusionList": { + "description": "Global list of IP address ranges to exclude from outbound traffic interception by the sidecar proxy.", + "items": { + "pattern": "((?:\\d{1,3}\\.){3}\\d{1,3})\\/(\\d{1,2})$", + "type": "string" + }, + "type": "array" + }, + "outboundPortExclusionList": { + "description": "Global list of ports to exclude from outbound traffic interception by the sidecar proxy.", + "items": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "title": "Mesh Config", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.11.1/meshconfig.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.11.1/meshconfig.meshery.layer5.io_definition.json new file mode 100755 index 00000000..c00b8f08 --- /dev/null +++ b/templates/oam/workloads/v0.11.1/meshconfig.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "MeshConfig", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "meshconfig.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.openservicemesh.io/v1alpha1", + "k8sKind": "MeshConfig", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.11.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/workloads-v0.11.1/meshconfig.osm.meshery.layer5io.schema.json b/templates/oam/workloads/v0.11.1/meshconfig.osm.meshery.layer5io.schema.json similarity index 100% rename from templates/oam/workloads/workloads-v0.11.1/meshconfig.osm.meshery.layer5io.schema.json rename to templates/oam/workloads/v0.11.1/meshconfig.osm.meshery.layer5io.schema.json diff --git a/templates/oam/workloads/workloads-v0.11.1/meshconfig.osm_definition.json b/templates/oam/workloads/v0.11.1/meshconfig.osm_definition.json similarity index 100% rename from templates/oam/workloads/workloads-v0.11.1/meshconfig.osm_definition.json rename to templates/oam/workloads/v0.11.1/meshconfig.osm_definition.json diff --git a/templates/oam/workloads/v0.11.1/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.11.1/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..60d4f7dd --- /dev/null +++ b/templates/oam/workloads/v0.11.1/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "properties": { + "clusters": { + "description": "The clusters the service accounts are hosted on.", + "items": { + "properties": { + "address": { + "description": "a routable IP + port", + "pattern": "^(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3}):[0-9]+$", + "type": "string" + }, + "certificate": { + "description": "mTLS certificates (optional)", + "type": "string" + }, + "name": { + "description": "Name of the remote cluster", + "type": "string" + }, + "priority": { + "description": "Priority of the remote cluster in locality based load balancing", + "minimum": 0, + "type": "integer" + }, + "weight": { + "default": 0, + "description": "Load balancing weight of the remote cluster", + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "address", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "ports": { + "description": "The list of ports that are exposed by this service.", + "items": { + "properties": { + "port": { + "description": "The port that will be exposed by this service.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "default": "TCP", + "description": "The IP protocol for this port. Supports \"TCP\", \"UDP\", and \"SCTP\". Default is TCP.", + "enum": [ + "TCP", + "UDP", + "SCTP" + ], + "type": "string" + } + }, + "required": [ + "port", + "protocol" + ], + "type": "object" + }, + "type": "array" + }, + "serviceAccount": { + "type": "string" + } + }, + "required": [ + "serviceAccount", + "clusters" + ], + "title": "Multi Cluster Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.11.1/multiclusterservice.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.11.1/multiclusterservice.meshery.layer5.io_definition.json new file mode 100755 index 00000000..cb048e79 --- /dev/null +++ b/templates/oam/workloads/v0.11.1/multiclusterservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "MultiClusterService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "multiclusterservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.openservicemesh.io/v1alpha1", + "k8sKind": "MultiClusterService", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.11.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/workloads-v0.11.1/multiclusterservice.osm.meshery.layer5io.schema.json b/templates/oam/workloads/v0.11.1/multiclusterservice.osm.meshery.layer5io.schema.json similarity index 100% rename from templates/oam/workloads/workloads-v0.11.1/multiclusterservice.osm.meshery.layer5io.schema.json rename to templates/oam/workloads/v0.11.1/multiclusterservice.osm.meshery.layer5io.schema.json diff --git a/templates/oam/workloads/workloads-v0.11.1/multiclusterservice.osm_definition.json b/templates/oam/workloads/v0.11.1/multiclusterservice.osm_definition.json similarity index 100% rename from templates/oam/workloads/workloads-v0.11.1/multiclusterservice.osm_definition.json rename to templates/oam/workloads/v0.11.1/multiclusterservice.osm_definition.json diff --git a/templates/oam/workloads/v0.11.1/tcproute.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.11.1/tcproute.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..d0cc9bfe --- /dev/null +++ b/templates/oam/workloads/v0.11.1/tcproute.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,25 @@ +{ + "properties": { + "matches": { + "description": "Match conditions of this route.", + "properties": { + "ports": { + "description": "Port numbers to match TCP traffic.", + "items": { + "type": "integer" + }, + "type": "array" + } + }, + "required": [ + "ports" + ], + "type": "object" + } + }, + "required": [ + "matches" + ], + "title": "TCP Route", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.11.1/tcproute.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.11.1/tcproute.meshery.layer5.io_definition.json new file mode 100755 index 00000000..33a01779 --- /dev/null +++ b/templates/oam/workloads/v0.11.1/tcproute.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TCPRoute", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "tcproute.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "specs.smi-spec.io/v1alpha4", + "k8sKind": "TCPRoute", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.11.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/workloads-v0.11.1/tcproute.osm.meshery.layer5io.schema.json b/templates/oam/workloads/v0.11.1/tcproute.osm.meshery.layer5io.schema.json similarity index 100% rename from templates/oam/workloads/workloads-v0.11.1/tcproute.osm.meshery.layer5io.schema.json rename to templates/oam/workloads/v0.11.1/tcproute.osm.meshery.layer5io.schema.json diff --git a/templates/oam/workloads/workloads-v0.11.1/tcproute.osm_definition.json b/templates/oam/workloads/v0.11.1/tcproute.osm_definition.json similarity index 100% rename from templates/oam/workloads/workloads-v0.11.1/tcproute.osm_definition.json rename to templates/oam/workloads/v0.11.1/tcproute.osm_definition.json diff --git a/templates/oam/workloads/v0.11.1/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.11.1/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..13f0a9a2 --- /dev/null +++ b/templates/oam/workloads/v0.11.1/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,59 @@ +{ + "properties": { + "backends": { + "description": "The backend services of this split.", + "items": { + "properties": { + "service": { + "description": "Name of the Kubernetes service.", + "type": "string" + }, + "weight": { + "description": "Traffic weight value of this backend.", + "type": "number" + } + }, + "required": [ + "service", + "weight" + ], + "type": "object" + }, + "type": "array" + }, + "matches": { + "description": "The HTTP route groups that this traffic split should match.", + "items": { + "properties": { + "kind": { + "description": "Kind of the matching group.", + "enum": [ + "HTTPRouteGroup" + ], + "type": "string" + }, + "name": { + "description": "Name of the matching group.", + "type": "string" + } + }, + "required": [ + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "service": { + "description": "The apex service of this split.", + "type": "string" + } + }, + "required": [ + "service", + "backends" + ], + "title": "Traffic Split", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.11.1/trafficsplit.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.11.1/trafficsplit.meshery.layer5.io_definition.json new file mode 100755 index 00000000..2154fff0 --- /dev/null +++ b/templates/oam/workloads/v0.11.1/trafficsplit.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TrafficSplit", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "trafficsplit.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "split.smi-spec.io/v1alpha4", + "k8sKind": "TrafficSplit", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.11.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/workloads-v0.11.1/trafficsplit.osm.meshery.layer5io.schema.json b/templates/oam/workloads/v0.11.1/trafficsplit.osm.meshery.layer5io.schema.json similarity index 100% rename from templates/oam/workloads/workloads-v0.11.1/trafficsplit.osm.meshery.layer5io.schema.json rename to templates/oam/workloads/v0.11.1/trafficsplit.osm.meshery.layer5io.schema.json diff --git a/templates/oam/workloads/workloads-v0.11.1/trafficsplit.osm_definition.json b/templates/oam/workloads/v0.11.1/trafficsplit.osm_definition.json similarity index 100% rename from templates/oam/workloads/workloads-v0.11.1/trafficsplit.osm_definition.json rename to templates/oam/workloads/v0.11.1/trafficsplit.osm_definition.json diff --git a/templates/oam/workloads/v0.11.1/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.11.1/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..83a24559 --- /dev/null +++ b/templates/oam/workloads/v0.11.1/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,91 @@ +{ + "properties": { + "destination": { + "description": "The destination of this traffic target.", + "properties": { + "kind": { + "description": "Kind of the destination.", + "type": "string" + }, + "name": { + "description": "Name of the destination.", + "type": "string" + }, + "namespace": { + "description": "Namespace of the destination.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "rules": { + "description": "Specifications of this traffic target.", + "items": { + "properties": { + "kind": { + "description": "Kind of this spec.", + "enum": [ + "HTTPRouteGroup", + "TCPRoute", + "UDPRoute" + ], + "type": "string" + }, + "matches": { + "description": "Match conditions of this spec.", + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "Name of this spec.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources of this traffic target.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "destination", + "rules", + "sources" + ], + "title": "Traffic Target", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.11.1/traffictarget.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.11.1/traffictarget.meshery.layer5.io_definition.json new file mode 100755 index 00000000..94ec5b19 --- /dev/null +++ b/templates/oam/workloads/v0.11.1/traffictarget.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TrafficTarget", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "traffictarget.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "access.smi-spec.io/v1alpha3", + "k8sKind": "TrafficTarget", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.11.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/workloads-v0.11.1/traffictarget.osm.meshery.layer5io.schema.json b/templates/oam/workloads/v0.11.1/traffictarget.osm.meshery.layer5io.schema.json similarity index 100% rename from templates/oam/workloads/workloads-v0.11.1/traffictarget.osm.meshery.layer5io.schema.json rename to templates/oam/workloads/v0.11.1/traffictarget.osm.meshery.layer5io.schema.json diff --git a/templates/oam/workloads/workloads-v0.11.1/traffictarget.osm_definition.json b/templates/oam/workloads/v0.11.1/traffictarget.osm_definition.json similarity index 100% rename from templates/oam/workloads/workloads-v0.11.1/traffictarget.osm_definition.json rename to templates/oam/workloads/v0.11.1/traffictarget.osm_definition.json diff --git a/templates/oam/workloads/v0.11.2/egress.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.11.2/egress.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..c77de28d --- /dev/null +++ b/templates/oam/workloads/v0.11.2/egress.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,103 @@ +{ + "properties": { + "hosts": { + "description": "Hosts that the sources are allowed to direct external traffic to.", + "items": { + "type": "string" + }, + "type": "array" + }, + "ipAddresses": { + "description": "IP address ranges that the sources are allowed to direct external traffic to.", + "items": { + "pattern": "((?:\\d{1,3}\\.){3}\\d{1,3})\\/(\\d{1,2})$", + "type": "string" + }, + "type": "array" + }, + "matches": { + "description": "The resource references an Egress policy should match on.", + "items": { + "properties": { + "apiGroup": { + "description": "API group for the resource being referenced.", + "type": "string" + }, + "kind": { + "description": "Type of resource being referenced.", + "type": "string" + }, + "name": { + "description": "Name of resource being referenced.", + "type": "string" + } + }, + "required": [ + "apiGroup", + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "ports": { + "description": "Ports that the sources are allowed to direct external traffic to.", + "items": { + "properties": { + "number": { + "description": "Port number of this port.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "description": "Protocol served by this port.", + "type": "string" + } + }, + "required": [ + "number", + "protocol" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources the egress policy is applicable to.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "enum": [ + "ServiceAccount" + ], + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "kind", + "name", + "namespace" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "sources", + "ports" + ], + "title": "Egress", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.11.2/egress.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.11.2/egress.meshery.layer5.io_definition.json new file mode 100755 index 00000000..4058af7e --- /dev/null +++ b/templates/oam/workloads/v0.11.2/egress.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Egress", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "egress.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "policy.openservicemesh.io/v1alpha1", + "k8sKind": "Egress", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.11.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.11.2/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.11.2/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..6951d46c --- /dev/null +++ b/templates/oam/workloads/v0.11.2/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,60 @@ +{ + "properties": { + "matches": { + "description": "Match conditions of this route group.", + "items": { + "properties": { + "headers": { + "description": "Header match conditions of this route.", + "items": { + "additionalProperties": { + "type": "string" + }, + "description": "Header match condition of this route.", + "type": "object" + }, + "type": "array" + }, + "methods": { + "description": "The HTTP methods of this HTTP route.", + "items": { + "description": "The HTTP method of this HTTP route.", + "enum": [ + "*", + "GET", + "HEAD", + "PUT", + "POST", + "DELETE", + "CONNECT", + "OPTIONS", + "TRACE", + "PATCH" + ], + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "Name of the HTTP route.", + "type": "string" + }, + "pathRegex": { + "description": "URI path regex of the HTTP route.", + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "matches" + ], + "title": "HTTP Route Group", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.11.2/httproutegroup.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.11.2/httproutegroup.meshery.layer5.io_definition.json new file mode 100755 index 00000000..bdcbc66a --- /dev/null +++ b/templates/oam/workloads/v0.11.2/httproutegroup.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPRouteGroup", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httproutegroup.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "specs.smi-spec.io/v1alpha4", + "k8sKind": "HTTPRouteGroup", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.11.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.11.2/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.11.2/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..f5535897 --- /dev/null +++ b/templates/oam/workloads/v0.11.2/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,118 @@ +{ + "properties": { + "backends": { + "description": "Backends the IngressBackend policy is applicable to.", + "items": { + "properties": { + "name": { + "description": "Name of the backend.", + "type": "string" + }, + "port": { + "description": "Port of the backend.", + "properties": { + "number": { + "description": "Port number of this port.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "description": "Protocol served by this port.", + "type": "string" + } + }, + "required": [ + "number", + "protocol" + ], + "type": "object" + }, + "tls": { + "description": "TLS configuration for the backend.", + "properties": { + "skipClientCertValidation": { + "description": "Skip client certificate validation.", + "type": "boolean" + }, + "sniHosts": { + "description": "SNI hosts allowed by the backend.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "skipClientCertValidation" + ], + "type": "object" + } + }, + "required": [ + "name", + "port" + ], + "type": "object" + }, + "type": "array" + }, + "matches": { + "description": "The resource references an IngressBackend policy should match on.", + "items": { + "properties": { + "apiGroup": { + "description": "API group for the resource being referenced.", + "type": "string" + }, + "kind": { + "description": "Type of resource being referenced.", + "type": "string" + }, + "name": { + "description": "Name of resource being referenced.", + "type": "string" + } + }, + "required": [ + "apiGroup", + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources the IngressBackend policy is applicable to.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "backends", + "sources" + ], + "title": "Ingress Backend", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.11.2/ingressbackend.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.11.2/ingressbackend.meshery.layer5.io_definition.json new file mode 100755 index 00000000..5b767452 --- /dev/null +++ b/templates/oam/workloads/v0.11.2/ingressbackend.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "IngressBackend", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "ingressbackend.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "policy.openservicemesh.io/v1alpha1", + "k8sKind": "IngressBackend", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.11.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.11.2/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.11.2/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..b607634a --- /dev/null +++ b/templates/oam/workloads/v0.11.2/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,264 @@ +{ + "properties": { + "certificate": { + "description": "Configuration for certificate management", + "properties": { + "certKeyBitSize": { + "description": "Sets the certificate key bit size for data plane certificates.", + "type": "integer" + }, + "ingressGateway": { + "description": "Configuration for the ingress gateway's certificate", + "properties": { + "secret": { + "description": "Secret reference to store the certificate in", + "properties": { + "name": { + "description": "Name of the secret", + "type": "string" + }, + "namespace": { + "description": "Namespace of the secret", + "type": "string" + } + }, + "required": [ + "name", + "namespace" + ], + "type": "object" + }, + "subjectAltNames": { + "description": "Subject Alternative Names secured by the certificate", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "validityDuration": { + "description": "Certificate validity duration, represented as a sequence of decimal numbers each with optional fraction and a unit suffix", + "type": "string" + } + }, + "required": [ + "subjectAltNames", + "validityDuration", + "secret" + ], + "type": "object" + }, + "serviceCertValidityDuration": { + "description": "Sets the service certificate validity duration, represented as a sequence of decimal numbers each with optional fraction and a unit suffix.", + "type": "string" + } + }, + "required": [ + "serviceCertValidityDuration", + "certKeyBitSize" + ], + "type": "object" + }, + "featureFlags": { + "description": "OSM feature flags", + "properties": { + "enableAsyncProxyServiceMapping": { + "type": "boolean" + }, + "enableEgressPolicy": { + "type": "boolean" + }, + "enableEnvoyActiveHealthChecks": { + "type": "boolean" + }, + "enableIngressBackendPolicy": { + "type": "boolean" + }, + "enableMulticlusterMode": { + "type": "boolean" + }, + "enableRetryPolicy": { + "type": "boolean" + }, + "enableSnapshotCacheMode": { + "type": "boolean" + }, + "enableWASMStats": { + "type": "boolean" + } + }, + "type": "object" + }, + "observability": { + "description": "Configuration for observing the service mesh, including metrics, logs, tracing etc,.", + "properties": { + "enableDebugServer": { + "description": "Enables a debug endpoint on the osm-controller pod to list information regarding the mesh such as proxy connections, certificates, and SMI policies.", + "type": "boolean" + }, + "osmLogLevel": { + "description": "Allows setting OSM control plane log level at runtime", + "type": "string" + }, + "tracing": { + "description": "Configuration for distributed tracing", + "properties": { + "address": { + "description": "Address of Jaeger tracing deployment, if tracing is enabled.", + "type": "string" + }, + "enable": { + "description": "Enables Jaeger tracing for the mesh.", + "type": "boolean" + }, + "endpoint": { + "description": "Endpoint for tracing data, if tracing is enabled.", + "type": "string" + }, + "port": { + "description": "Port on which tracing is enabled.", + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "sidecar": { + "description": "Configuration for Envoy sidecar", + "properties": { + "configResyncInterval": { + "description": "Resync interval for regular proxy broadcast updates", + "type": "string" + }, + "enablePrivilegedInitContainer": { + "description": "Enables privileged init containers for pods in mesh. When false, init containers only have NET_ADMIN.", + "type": "boolean" + }, + "envoyImage": { + "description": "Image for the Envoy sidecar", + "type": "string" + }, + "envoyWindowsImage": { + "description": "Image for the Envoy sidecar on Windows workers", + "type": "string" + }, + "initContainerImage": { + "description": "Image for the init container", + "type": "string" + }, + "logLevel": { + "description": "Sets the logging verbosity of Envoy proxy sidecar, only applicable to newly created pods joining the mesh.", + "enum": [ + "trace", + "debug", + "info", + "warning", + "warn", + "error", + "critical", + "off" + ], + "type": "string" + }, + "maxDataPlaneConnections": { + "description": "Max allowed data plane sidecar connections", + "type": "integer" + }, + "resources": { + "properties": { + "limits": { + "additionalProperties": true, + "description": "Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/", + "type": "object" + }, + "requests": { + "additionalProperties": true, + "description": "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/", + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "traffic": { + "description": "Configuration for traffic management", + "properties": { + "enableEgress": { + "description": "Enables egress in the mesh", + "type": "boolean" + }, + "enablePermissiveTrafficPolicyMode": { + "description": "True for allowing traffic to flow between client and service pods within the mesh without SMI traffic policies, i.e. no traffic policy enforcement in the mesh. If set to false, enables deny-all traffic policy in mesh i.e. an SMI Traffic Target is necessary for services to communicate.", + "type": "boolean" + }, + "inboundExternalAuthorization": { + "description": "Configures external authorization for inbound and ingress connections.", + "properties": { + "address": { + "description": "Target destination endpoint that will handle external authorization.", + "type": "string" + }, + "enable": { + "description": "Enables/disables the inbound external authorization policy if present.", + "type": "boolean" + }, + "failureModeAllow": { + "description": "Allows specifying if traffic should succeed or fail if the external authorization endpoint fails to respond.", + "type": "boolean" + }, + "port": { + "description": "Remote destination port for the external authorization endpoint.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "statPrefix": { + "default": "inboundExtAuthz", + "description": "String prefix for inbound external authorization related metrics.", + "type": "string" + }, + "timeout": { + "default": "1s", + "description": "Defines the timeout to consider for the remote endpoint to reply in time.", + "type": "string" + } + }, + "type": "object" + }, + "inboundPortExclusionList": { + "description": "Global list of ports to exclude from inbound traffic interception by the sidecar proxy.", + "items": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "type": "array" + }, + "outboundIPRangeExclusionList": { + "description": "Global list of IP address ranges to exclude from outbound traffic interception by the sidecar proxy.", + "items": { + "pattern": "((?:\\d{1,3}\\.){3}\\d{1,3})\\/(\\d{1,2})$", + "type": "string" + }, + "type": "array" + }, + "outboundPortExclusionList": { + "description": "Global list of ports to exclude from outbound traffic interception by the sidecar proxy.", + "items": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "title": "Mesh Config", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.11.2/meshconfig.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.11.2/meshconfig.meshery.layer5.io_definition.json new file mode 100755 index 00000000..21c7328e --- /dev/null +++ b/templates/oam/workloads/v0.11.2/meshconfig.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "MeshConfig", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "meshconfig.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.openservicemesh.io/v1alpha1", + "k8sKind": "MeshConfig", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.11.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.11.2/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.11.2/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..60d4f7dd --- /dev/null +++ b/templates/oam/workloads/v0.11.2/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "properties": { + "clusters": { + "description": "The clusters the service accounts are hosted on.", + "items": { + "properties": { + "address": { + "description": "a routable IP + port", + "pattern": "^(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3}):[0-9]+$", + "type": "string" + }, + "certificate": { + "description": "mTLS certificates (optional)", + "type": "string" + }, + "name": { + "description": "Name of the remote cluster", + "type": "string" + }, + "priority": { + "description": "Priority of the remote cluster in locality based load balancing", + "minimum": 0, + "type": "integer" + }, + "weight": { + "default": 0, + "description": "Load balancing weight of the remote cluster", + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "address", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "ports": { + "description": "The list of ports that are exposed by this service.", + "items": { + "properties": { + "port": { + "description": "The port that will be exposed by this service.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "default": "TCP", + "description": "The IP protocol for this port. Supports \"TCP\", \"UDP\", and \"SCTP\". Default is TCP.", + "enum": [ + "TCP", + "UDP", + "SCTP" + ], + "type": "string" + } + }, + "required": [ + "port", + "protocol" + ], + "type": "object" + }, + "type": "array" + }, + "serviceAccount": { + "type": "string" + } + }, + "required": [ + "serviceAccount", + "clusters" + ], + "title": "Multi Cluster Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.11.2/multiclusterservice.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.11.2/multiclusterservice.meshery.layer5.io_definition.json new file mode 100755 index 00000000..d7c86ca2 --- /dev/null +++ b/templates/oam/workloads/v0.11.2/multiclusterservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "MultiClusterService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "multiclusterservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.openservicemesh.io/v1alpha1", + "k8sKind": "MultiClusterService", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.11.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.11.2/tcproute.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.11.2/tcproute.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..d0cc9bfe --- /dev/null +++ b/templates/oam/workloads/v0.11.2/tcproute.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,25 @@ +{ + "properties": { + "matches": { + "description": "Match conditions of this route.", + "properties": { + "ports": { + "description": "Port numbers to match TCP traffic.", + "items": { + "type": "integer" + }, + "type": "array" + } + }, + "required": [ + "ports" + ], + "type": "object" + } + }, + "required": [ + "matches" + ], + "title": "TCP Route", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.11.2/tcproute.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.11.2/tcproute.meshery.layer5.io_definition.json new file mode 100755 index 00000000..ef4d9486 --- /dev/null +++ b/templates/oam/workloads/v0.11.2/tcproute.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TCPRoute", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "tcproute.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "specs.smi-spec.io/v1alpha4", + "k8sKind": "TCPRoute", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.11.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.11.2/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.11.2/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..13f0a9a2 --- /dev/null +++ b/templates/oam/workloads/v0.11.2/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,59 @@ +{ + "properties": { + "backends": { + "description": "The backend services of this split.", + "items": { + "properties": { + "service": { + "description": "Name of the Kubernetes service.", + "type": "string" + }, + "weight": { + "description": "Traffic weight value of this backend.", + "type": "number" + } + }, + "required": [ + "service", + "weight" + ], + "type": "object" + }, + "type": "array" + }, + "matches": { + "description": "The HTTP route groups that this traffic split should match.", + "items": { + "properties": { + "kind": { + "description": "Kind of the matching group.", + "enum": [ + "HTTPRouteGroup" + ], + "type": "string" + }, + "name": { + "description": "Name of the matching group.", + "type": "string" + } + }, + "required": [ + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "service": { + "description": "The apex service of this split.", + "type": "string" + } + }, + "required": [ + "service", + "backends" + ], + "title": "Traffic Split", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.11.2/trafficsplit.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.11.2/trafficsplit.meshery.layer5.io_definition.json new file mode 100755 index 00000000..55237504 --- /dev/null +++ b/templates/oam/workloads/v0.11.2/trafficsplit.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TrafficSplit", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "trafficsplit.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "split.smi-spec.io/v1alpha4", + "k8sKind": "TrafficSplit", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.11.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.11.2/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.11.2/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..83a24559 --- /dev/null +++ b/templates/oam/workloads/v0.11.2/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,91 @@ +{ + "properties": { + "destination": { + "description": "The destination of this traffic target.", + "properties": { + "kind": { + "description": "Kind of the destination.", + "type": "string" + }, + "name": { + "description": "Name of the destination.", + "type": "string" + }, + "namespace": { + "description": "Namespace of the destination.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "rules": { + "description": "Specifications of this traffic target.", + "items": { + "properties": { + "kind": { + "description": "Kind of this spec.", + "enum": [ + "HTTPRouteGroup", + "TCPRoute", + "UDPRoute" + ], + "type": "string" + }, + "matches": { + "description": "Match conditions of this spec.", + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "Name of this spec.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources of this traffic target.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "destination", + "rules", + "sources" + ], + "title": "Traffic Target", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.11.2/traffictarget.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.11.2/traffictarget.meshery.layer5.io_definition.json new file mode 100755 index 00000000..71da8e7b --- /dev/null +++ b/templates/oam/workloads/v0.11.2/traffictarget.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TrafficTarget", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "traffictarget.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "access.smi-spec.io/v1alpha3", + "k8sKind": "TrafficTarget", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.11.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.2.0/egress.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.2.0/egress.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..c77de28d --- /dev/null +++ b/templates/oam/workloads/v0.2.0/egress.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,103 @@ +{ + "properties": { + "hosts": { + "description": "Hosts that the sources are allowed to direct external traffic to.", + "items": { + "type": "string" + }, + "type": "array" + }, + "ipAddresses": { + "description": "IP address ranges that the sources are allowed to direct external traffic to.", + "items": { + "pattern": "((?:\\d{1,3}\\.){3}\\d{1,3})\\/(\\d{1,2})$", + "type": "string" + }, + "type": "array" + }, + "matches": { + "description": "The resource references an Egress policy should match on.", + "items": { + "properties": { + "apiGroup": { + "description": "API group for the resource being referenced.", + "type": "string" + }, + "kind": { + "description": "Type of resource being referenced.", + "type": "string" + }, + "name": { + "description": "Name of resource being referenced.", + "type": "string" + } + }, + "required": [ + "apiGroup", + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "ports": { + "description": "Ports that the sources are allowed to direct external traffic to.", + "items": { + "properties": { + "number": { + "description": "Port number of this port.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "description": "Protocol served by this port.", + "type": "string" + } + }, + "required": [ + "number", + "protocol" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources the egress policy is applicable to.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "enum": [ + "ServiceAccount" + ], + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "kind", + "name", + "namespace" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "sources", + "ports" + ], + "title": "Egress", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.2.0/egress.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.2.0/egress.meshery.layer5.io_definition.json new file mode 100755 index 00000000..d6b5098d --- /dev/null +++ b/templates/oam/workloads/v0.2.0/egress.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Egress", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "egress.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "policy.openservicemesh.io/v1alpha1", + "k8sKind": "Egress", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.2.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.2.0/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.2.0/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..6951d46c --- /dev/null +++ b/templates/oam/workloads/v0.2.0/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,60 @@ +{ + "properties": { + "matches": { + "description": "Match conditions of this route group.", + "items": { + "properties": { + "headers": { + "description": "Header match conditions of this route.", + "items": { + "additionalProperties": { + "type": "string" + }, + "description": "Header match condition of this route.", + "type": "object" + }, + "type": "array" + }, + "methods": { + "description": "The HTTP methods of this HTTP route.", + "items": { + "description": "The HTTP method of this HTTP route.", + "enum": [ + "*", + "GET", + "HEAD", + "PUT", + "POST", + "DELETE", + "CONNECT", + "OPTIONS", + "TRACE", + "PATCH" + ], + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "Name of the HTTP route.", + "type": "string" + }, + "pathRegex": { + "description": "URI path regex of the HTTP route.", + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "matches" + ], + "title": "HTTP Route Group", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.2.0/httproutegroup.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.2.0/httproutegroup.meshery.layer5.io_definition.json new file mode 100755 index 00000000..f9904a40 --- /dev/null +++ b/templates/oam/workloads/v0.2.0/httproutegroup.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPRouteGroup", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httproutegroup.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "specs.smi-spec.io/v1alpha4", + "k8sKind": "HTTPRouteGroup", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.2.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.2.0/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.2.0/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..f5535897 --- /dev/null +++ b/templates/oam/workloads/v0.2.0/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,118 @@ +{ + "properties": { + "backends": { + "description": "Backends the IngressBackend policy is applicable to.", + "items": { + "properties": { + "name": { + "description": "Name of the backend.", + "type": "string" + }, + "port": { + "description": "Port of the backend.", + "properties": { + "number": { + "description": "Port number of this port.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "description": "Protocol served by this port.", + "type": "string" + } + }, + "required": [ + "number", + "protocol" + ], + "type": "object" + }, + "tls": { + "description": "TLS configuration for the backend.", + "properties": { + "skipClientCertValidation": { + "description": "Skip client certificate validation.", + "type": "boolean" + }, + "sniHosts": { + "description": "SNI hosts allowed by the backend.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "skipClientCertValidation" + ], + "type": "object" + } + }, + "required": [ + "name", + "port" + ], + "type": "object" + }, + "type": "array" + }, + "matches": { + "description": "The resource references an IngressBackend policy should match on.", + "items": { + "properties": { + "apiGroup": { + "description": "API group for the resource being referenced.", + "type": "string" + }, + "kind": { + "description": "Type of resource being referenced.", + "type": "string" + }, + "name": { + "description": "Name of resource being referenced.", + "type": "string" + } + }, + "required": [ + "apiGroup", + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources the IngressBackend policy is applicable to.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "backends", + "sources" + ], + "title": "Ingress Backend", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.2.0/ingressbackend.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.2.0/ingressbackend.meshery.layer5.io_definition.json new file mode 100755 index 00000000..a2ee1e24 --- /dev/null +++ b/templates/oam/workloads/v0.2.0/ingressbackend.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "IngressBackend", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "ingressbackend.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "policy.openservicemesh.io/v1alpha1", + "k8sKind": "IngressBackend", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.2.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.2.0/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.2.0/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..b607634a --- /dev/null +++ b/templates/oam/workloads/v0.2.0/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,264 @@ +{ + "properties": { + "certificate": { + "description": "Configuration for certificate management", + "properties": { + "certKeyBitSize": { + "description": "Sets the certificate key bit size for data plane certificates.", + "type": "integer" + }, + "ingressGateway": { + "description": "Configuration for the ingress gateway's certificate", + "properties": { + "secret": { + "description": "Secret reference to store the certificate in", + "properties": { + "name": { + "description": "Name of the secret", + "type": "string" + }, + "namespace": { + "description": "Namespace of the secret", + "type": "string" + } + }, + "required": [ + "name", + "namespace" + ], + "type": "object" + }, + "subjectAltNames": { + "description": "Subject Alternative Names secured by the certificate", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "validityDuration": { + "description": "Certificate validity duration, represented as a sequence of decimal numbers each with optional fraction and a unit suffix", + "type": "string" + } + }, + "required": [ + "subjectAltNames", + "validityDuration", + "secret" + ], + "type": "object" + }, + "serviceCertValidityDuration": { + "description": "Sets the service certificate validity duration, represented as a sequence of decimal numbers each with optional fraction and a unit suffix.", + "type": "string" + } + }, + "required": [ + "serviceCertValidityDuration", + "certKeyBitSize" + ], + "type": "object" + }, + "featureFlags": { + "description": "OSM feature flags", + "properties": { + "enableAsyncProxyServiceMapping": { + "type": "boolean" + }, + "enableEgressPolicy": { + "type": "boolean" + }, + "enableEnvoyActiveHealthChecks": { + "type": "boolean" + }, + "enableIngressBackendPolicy": { + "type": "boolean" + }, + "enableMulticlusterMode": { + "type": "boolean" + }, + "enableRetryPolicy": { + "type": "boolean" + }, + "enableSnapshotCacheMode": { + "type": "boolean" + }, + "enableWASMStats": { + "type": "boolean" + } + }, + "type": "object" + }, + "observability": { + "description": "Configuration for observing the service mesh, including metrics, logs, tracing etc,.", + "properties": { + "enableDebugServer": { + "description": "Enables a debug endpoint on the osm-controller pod to list information regarding the mesh such as proxy connections, certificates, and SMI policies.", + "type": "boolean" + }, + "osmLogLevel": { + "description": "Allows setting OSM control plane log level at runtime", + "type": "string" + }, + "tracing": { + "description": "Configuration for distributed tracing", + "properties": { + "address": { + "description": "Address of Jaeger tracing deployment, if tracing is enabled.", + "type": "string" + }, + "enable": { + "description": "Enables Jaeger tracing for the mesh.", + "type": "boolean" + }, + "endpoint": { + "description": "Endpoint for tracing data, if tracing is enabled.", + "type": "string" + }, + "port": { + "description": "Port on which tracing is enabled.", + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "sidecar": { + "description": "Configuration for Envoy sidecar", + "properties": { + "configResyncInterval": { + "description": "Resync interval for regular proxy broadcast updates", + "type": "string" + }, + "enablePrivilegedInitContainer": { + "description": "Enables privileged init containers for pods in mesh. When false, init containers only have NET_ADMIN.", + "type": "boolean" + }, + "envoyImage": { + "description": "Image for the Envoy sidecar", + "type": "string" + }, + "envoyWindowsImage": { + "description": "Image for the Envoy sidecar on Windows workers", + "type": "string" + }, + "initContainerImage": { + "description": "Image for the init container", + "type": "string" + }, + "logLevel": { + "description": "Sets the logging verbosity of Envoy proxy sidecar, only applicable to newly created pods joining the mesh.", + "enum": [ + "trace", + "debug", + "info", + "warning", + "warn", + "error", + "critical", + "off" + ], + "type": "string" + }, + "maxDataPlaneConnections": { + "description": "Max allowed data plane sidecar connections", + "type": "integer" + }, + "resources": { + "properties": { + "limits": { + "additionalProperties": true, + "description": "Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/", + "type": "object" + }, + "requests": { + "additionalProperties": true, + "description": "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/", + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "traffic": { + "description": "Configuration for traffic management", + "properties": { + "enableEgress": { + "description": "Enables egress in the mesh", + "type": "boolean" + }, + "enablePermissiveTrafficPolicyMode": { + "description": "True for allowing traffic to flow between client and service pods within the mesh without SMI traffic policies, i.e. no traffic policy enforcement in the mesh. If set to false, enables deny-all traffic policy in mesh i.e. an SMI Traffic Target is necessary for services to communicate.", + "type": "boolean" + }, + "inboundExternalAuthorization": { + "description": "Configures external authorization for inbound and ingress connections.", + "properties": { + "address": { + "description": "Target destination endpoint that will handle external authorization.", + "type": "string" + }, + "enable": { + "description": "Enables/disables the inbound external authorization policy if present.", + "type": "boolean" + }, + "failureModeAllow": { + "description": "Allows specifying if traffic should succeed or fail if the external authorization endpoint fails to respond.", + "type": "boolean" + }, + "port": { + "description": "Remote destination port for the external authorization endpoint.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "statPrefix": { + "default": "inboundExtAuthz", + "description": "String prefix for inbound external authorization related metrics.", + "type": "string" + }, + "timeout": { + "default": "1s", + "description": "Defines the timeout to consider for the remote endpoint to reply in time.", + "type": "string" + } + }, + "type": "object" + }, + "inboundPortExclusionList": { + "description": "Global list of ports to exclude from inbound traffic interception by the sidecar proxy.", + "items": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "type": "array" + }, + "outboundIPRangeExclusionList": { + "description": "Global list of IP address ranges to exclude from outbound traffic interception by the sidecar proxy.", + "items": { + "pattern": "((?:\\d{1,3}\\.){3}\\d{1,3})\\/(\\d{1,2})$", + "type": "string" + }, + "type": "array" + }, + "outboundPortExclusionList": { + "description": "Global list of ports to exclude from outbound traffic interception by the sidecar proxy.", + "items": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "title": "Mesh Config", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.2.0/meshconfig.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.2.0/meshconfig.meshery.layer5.io_definition.json new file mode 100755 index 00000000..4698c678 --- /dev/null +++ b/templates/oam/workloads/v0.2.0/meshconfig.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "MeshConfig", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "meshconfig.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.openservicemesh.io/v1alpha1", + "k8sKind": "MeshConfig", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.2.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.2.0/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.2.0/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..60d4f7dd --- /dev/null +++ b/templates/oam/workloads/v0.2.0/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "properties": { + "clusters": { + "description": "The clusters the service accounts are hosted on.", + "items": { + "properties": { + "address": { + "description": "a routable IP + port", + "pattern": "^(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3}):[0-9]+$", + "type": "string" + }, + "certificate": { + "description": "mTLS certificates (optional)", + "type": "string" + }, + "name": { + "description": "Name of the remote cluster", + "type": "string" + }, + "priority": { + "description": "Priority of the remote cluster in locality based load balancing", + "minimum": 0, + "type": "integer" + }, + "weight": { + "default": 0, + "description": "Load balancing weight of the remote cluster", + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "address", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "ports": { + "description": "The list of ports that are exposed by this service.", + "items": { + "properties": { + "port": { + "description": "The port that will be exposed by this service.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "default": "TCP", + "description": "The IP protocol for this port. Supports \"TCP\", \"UDP\", and \"SCTP\". Default is TCP.", + "enum": [ + "TCP", + "UDP", + "SCTP" + ], + "type": "string" + } + }, + "required": [ + "port", + "protocol" + ], + "type": "object" + }, + "type": "array" + }, + "serviceAccount": { + "type": "string" + } + }, + "required": [ + "serviceAccount", + "clusters" + ], + "title": "Multi Cluster Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.2.0/multiclusterservice.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.2.0/multiclusterservice.meshery.layer5.io_definition.json new file mode 100755 index 00000000..a9904e03 --- /dev/null +++ b/templates/oam/workloads/v0.2.0/multiclusterservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "MultiClusterService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "multiclusterservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.openservicemesh.io/v1alpha1", + "k8sKind": "MultiClusterService", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.2.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.2.0/tcproute.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.2.0/tcproute.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..d0cc9bfe --- /dev/null +++ b/templates/oam/workloads/v0.2.0/tcproute.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,25 @@ +{ + "properties": { + "matches": { + "description": "Match conditions of this route.", + "properties": { + "ports": { + "description": "Port numbers to match TCP traffic.", + "items": { + "type": "integer" + }, + "type": "array" + } + }, + "required": [ + "ports" + ], + "type": "object" + } + }, + "required": [ + "matches" + ], + "title": "TCP Route", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.2.0/tcproute.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.2.0/tcproute.meshery.layer5.io_definition.json new file mode 100755 index 00000000..cf6a725e --- /dev/null +++ b/templates/oam/workloads/v0.2.0/tcproute.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TCPRoute", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "tcproute.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "specs.smi-spec.io/v1alpha4", + "k8sKind": "TCPRoute", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.2.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.2.0/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.2.0/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..13f0a9a2 --- /dev/null +++ b/templates/oam/workloads/v0.2.0/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,59 @@ +{ + "properties": { + "backends": { + "description": "The backend services of this split.", + "items": { + "properties": { + "service": { + "description": "Name of the Kubernetes service.", + "type": "string" + }, + "weight": { + "description": "Traffic weight value of this backend.", + "type": "number" + } + }, + "required": [ + "service", + "weight" + ], + "type": "object" + }, + "type": "array" + }, + "matches": { + "description": "The HTTP route groups that this traffic split should match.", + "items": { + "properties": { + "kind": { + "description": "Kind of the matching group.", + "enum": [ + "HTTPRouteGroup" + ], + "type": "string" + }, + "name": { + "description": "Name of the matching group.", + "type": "string" + } + }, + "required": [ + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "service": { + "description": "The apex service of this split.", + "type": "string" + } + }, + "required": [ + "service", + "backends" + ], + "title": "Traffic Split", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.2.0/trafficsplit.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.2.0/trafficsplit.meshery.layer5.io_definition.json new file mode 100755 index 00000000..49ffad1e --- /dev/null +++ b/templates/oam/workloads/v0.2.0/trafficsplit.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TrafficSplit", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "trafficsplit.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "split.smi-spec.io/v1alpha4", + "k8sKind": "TrafficSplit", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.2.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.2.0/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.2.0/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..83a24559 --- /dev/null +++ b/templates/oam/workloads/v0.2.0/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,91 @@ +{ + "properties": { + "destination": { + "description": "The destination of this traffic target.", + "properties": { + "kind": { + "description": "Kind of the destination.", + "type": "string" + }, + "name": { + "description": "Name of the destination.", + "type": "string" + }, + "namespace": { + "description": "Namespace of the destination.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "rules": { + "description": "Specifications of this traffic target.", + "items": { + "properties": { + "kind": { + "description": "Kind of this spec.", + "enum": [ + "HTTPRouteGroup", + "TCPRoute", + "UDPRoute" + ], + "type": "string" + }, + "matches": { + "description": "Match conditions of this spec.", + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "Name of this spec.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources of this traffic target.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "destination", + "rules", + "sources" + ], + "title": "Traffic Target", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.2.0/traffictarget.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.2.0/traffictarget.meshery.layer5.io_definition.json new file mode 100755 index 00000000..4f19f588 --- /dev/null +++ b/templates/oam/workloads/v0.2.0/traffictarget.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TrafficTarget", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "traffictarget.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "access.smi-spec.io/v1alpha3", + "k8sKind": "TrafficTarget", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.2.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.3.0/egress.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.3.0/egress.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..c77de28d --- /dev/null +++ b/templates/oam/workloads/v0.3.0/egress.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,103 @@ +{ + "properties": { + "hosts": { + "description": "Hosts that the sources are allowed to direct external traffic to.", + "items": { + "type": "string" + }, + "type": "array" + }, + "ipAddresses": { + "description": "IP address ranges that the sources are allowed to direct external traffic to.", + "items": { + "pattern": "((?:\\d{1,3}\\.){3}\\d{1,3})\\/(\\d{1,2})$", + "type": "string" + }, + "type": "array" + }, + "matches": { + "description": "The resource references an Egress policy should match on.", + "items": { + "properties": { + "apiGroup": { + "description": "API group for the resource being referenced.", + "type": "string" + }, + "kind": { + "description": "Type of resource being referenced.", + "type": "string" + }, + "name": { + "description": "Name of resource being referenced.", + "type": "string" + } + }, + "required": [ + "apiGroup", + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "ports": { + "description": "Ports that the sources are allowed to direct external traffic to.", + "items": { + "properties": { + "number": { + "description": "Port number of this port.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "description": "Protocol served by this port.", + "type": "string" + } + }, + "required": [ + "number", + "protocol" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources the egress policy is applicable to.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "enum": [ + "ServiceAccount" + ], + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "kind", + "name", + "namespace" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "sources", + "ports" + ], + "title": "Egress", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.3.0/egress.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.3.0/egress.meshery.layer5.io_definition.json new file mode 100755 index 00000000..643551a9 --- /dev/null +++ b/templates/oam/workloads/v0.3.0/egress.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Egress", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "egress.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "policy.openservicemesh.io/v1alpha1", + "k8sKind": "Egress", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.3.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.3.0/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.3.0/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..6951d46c --- /dev/null +++ b/templates/oam/workloads/v0.3.0/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,60 @@ +{ + "properties": { + "matches": { + "description": "Match conditions of this route group.", + "items": { + "properties": { + "headers": { + "description": "Header match conditions of this route.", + "items": { + "additionalProperties": { + "type": "string" + }, + "description": "Header match condition of this route.", + "type": "object" + }, + "type": "array" + }, + "methods": { + "description": "The HTTP methods of this HTTP route.", + "items": { + "description": "The HTTP method of this HTTP route.", + "enum": [ + "*", + "GET", + "HEAD", + "PUT", + "POST", + "DELETE", + "CONNECT", + "OPTIONS", + "TRACE", + "PATCH" + ], + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "Name of the HTTP route.", + "type": "string" + }, + "pathRegex": { + "description": "URI path regex of the HTTP route.", + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "matches" + ], + "title": "HTTP Route Group", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.3.0/httproutegroup.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.3.0/httproutegroup.meshery.layer5.io_definition.json new file mode 100755 index 00000000..ea6edefb --- /dev/null +++ b/templates/oam/workloads/v0.3.0/httproutegroup.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPRouteGroup", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httproutegroup.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "specs.smi-spec.io/v1alpha4", + "k8sKind": "HTTPRouteGroup", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.3.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.3.0/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.3.0/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..f5535897 --- /dev/null +++ b/templates/oam/workloads/v0.3.0/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,118 @@ +{ + "properties": { + "backends": { + "description": "Backends the IngressBackend policy is applicable to.", + "items": { + "properties": { + "name": { + "description": "Name of the backend.", + "type": "string" + }, + "port": { + "description": "Port of the backend.", + "properties": { + "number": { + "description": "Port number of this port.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "description": "Protocol served by this port.", + "type": "string" + } + }, + "required": [ + "number", + "protocol" + ], + "type": "object" + }, + "tls": { + "description": "TLS configuration for the backend.", + "properties": { + "skipClientCertValidation": { + "description": "Skip client certificate validation.", + "type": "boolean" + }, + "sniHosts": { + "description": "SNI hosts allowed by the backend.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "skipClientCertValidation" + ], + "type": "object" + } + }, + "required": [ + "name", + "port" + ], + "type": "object" + }, + "type": "array" + }, + "matches": { + "description": "The resource references an IngressBackend policy should match on.", + "items": { + "properties": { + "apiGroup": { + "description": "API group for the resource being referenced.", + "type": "string" + }, + "kind": { + "description": "Type of resource being referenced.", + "type": "string" + }, + "name": { + "description": "Name of resource being referenced.", + "type": "string" + } + }, + "required": [ + "apiGroup", + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources the IngressBackend policy is applicable to.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "backends", + "sources" + ], + "title": "Ingress Backend", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.3.0/ingressbackend.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.3.0/ingressbackend.meshery.layer5.io_definition.json new file mode 100755 index 00000000..861d5fa0 --- /dev/null +++ b/templates/oam/workloads/v0.3.0/ingressbackend.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "IngressBackend", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "ingressbackend.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "policy.openservicemesh.io/v1alpha1", + "k8sKind": "IngressBackend", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.3.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.3.0/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.3.0/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..b607634a --- /dev/null +++ b/templates/oam/workloads/v0.3.0/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,264 @@ +{ + "properties": { + "certificate": { + "description": "Configuration for certificate management", + "properties": { + "certKeyBitSize": { + "description": "Sets the certificate key bit size for data plane certificates.", + "type": "integer" + }, + "ingressGateway": { + "description": "Configuration for the ingress gateway's certificate", + "properties": { + "secret": { + "description": "Secret reference to store the certificate in", + "properties": { + "name": { + "description": "Name of the secret", + "type": "string" + }, + "namespace": { + "description": "Namespace of the secret", + "type": "string" + } + }, + "required": [ + "name", + "namespace" + ], + "type": "object" + }, + "subjectAltNames": { + "description": "Subject Alternative Names secured by the certificate", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "validityDuration": { + "description": "Certificate validity duration, represented as a sequence of decimal numbers each with optional fraction and a unit suffix", + "type": "string" + } + }, + "required": [ + "subjectAltNames", + "validityDuration", + "secret" + ], + "type": "object" + }, + "serviceCertValidityDuration": { + "description": "Sets the service certificate validity duration, represented as a sequence of decimal numbers each with optional fraction and a unit suffix.", + "type": "string" + } + }, + "required": [ + "serviceCertValidityDuration", + "certKeyBitSize" + ], + "type": "object" + }, + "featureFlags": { + "description": "OSM feature flags", + "properties": { + "enableAsyncProxyServiceMapping": { + "type": "boolean" + }, + "enableEgressPolicy": { + "type": "boolean" + }, + "enableEnvoyActiveHealthChecks": { + "type": "boolean" + }, + "enableIngressBackendPolicy": { + "type": "boolean" + }, + "enableMulticlusterMode": { + "type": "boolean" + }, + "enableRetryPolicy": { + "type": "boolean" + }, + "enableSnapshotCacheMode": { + "type": "boolean" + }, + "enableWASMStats": { + "type": "boolean" + } + }, + "type": "object" + }, + "observability": { + "description": "Configuration for observing the service mesh, including metrics, logs, tracing etc,.", + "properties": { + "enableDebugServer": { + "description": "Enables a debug endpoint on the osm-controller pod to list information regarding the mesh such as proxy connections, certificates, and SMI policies.", + "type": "boolean" + }, + "osmLogLevel": { + "description": "Allows setting OSM control plane log level at runtime", + "type": "string" + }, + "tracing": { + "description": "Configuration for distributed tracing", + "properties": { + "address": { + "description": "Address of Jaeger tracing deployment, if tracing is enabled.", + "type": "string" + }, + "enable": { + "description": "Enables Jaeger tracing for the mesh.", + "type": "boolean" + }, + "endpoint": { + "description": "Endpoint for tracing data, if tracing is enabled.", + "type": "string" + }, + "port": { + "description": "Port on which tracing is enabled.", + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "sidecar": { + "description": "Configuration for Envoy sidecar", + "properties": { + "configResyncInterval": { + "description": "Resync interval for regular proxy broadcast updates", + "type": "string" + }, + "enablePrivilegedInitContainer": { + "description": "Enables privileged init containers for pods in mesh. When false, init containers only have NET_ADMIN.", + "type": "boolean" + }, + "envoyImage": { + "description": "Image for the Envoy sidecar", + "type": "string" + }, + "envoyWindowsImage": { + "description": "Image for the Envoy sidecar on Windows workers", + "type": "string" + }, + "initContainerImage": { + "description": "Image for the init container", + "type": "string" + }, + "logLevel": { + "description": "Sets the logging verbosity of Envoy proxy sidecar, only applicable to newly created pods joining the mesh.", + "enum": [ + "trace", + "debug", + "info", + "warning", + "warn", + "error", + "critical", + "off" + ], + "type": "string" + }, + "maxDataPlaneConnections": { + "description": "Max allowed data plane sidecar connections", + "type": "integer" + }, + "resources": { + "properties": { + "limits": { + "additionalProperties": true, + "description": "Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/", + "type": "object" + }, + "requests": { + "additionalProperties": true, + "description": "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/", + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "traffic": { + "description": "Configuration for traffic management", + "properties": { + "enableEgress": { + "description": "Enables egress in the mesh", + "type": "boolean" + }, + "enablePermissiveTrafficPolicyMode": { + "description": "True for allowing traffic to flow between client and service pods within the mesh without SMI traffic policies, i.e. no traffic policy enforcement in the mesh. If set to false, enables deny-all traffic policy in mesh i.e. an SMI Traffic Target is necessary for services to communicate.", + "type": "boolean" + }, + "inboundExternalAuthorization": { + "description": "Configures external authorization for inbound and ingress connections.", + "properties": { + "address": { + "description": "Target destination endpoint that will handle external authorization.", + "type": "string" + }, + "enable": { + "description": "Enables/disables the inbound external authorization policy if present.", + "type": "boolean" + }, + "failureModeAllow": { + "description": "Allows specifying if traffic should succeed or fail if the external authorization endpoint fails to respond.", + "type": "boolean" + }, + "port": { + "description": "Remote destination port for the external authorization endpoint.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "statPrefix": { + "default": "inboundExtAuthz", + "description": "String prefix for inbound external authorization related metrics.", + "type": "string" + }, + "timeout": { + "default": "1s", + "description": "Defines the timeout to consider for the remote endpoint to reply in time.", + "type": "string" + } + }, + "type": "object" + }, + "inboundPortExclusionList": { + "description": "Global list of ports to exclude from inbound traffic interception by the sidecar proxy.", + "items": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "type": "array" + }, + "outboundIPRangeExclusionList": { + "description": "Global list of IP address ranges to exclude from outbound traffic interception by the sidecar proxy.", + "items": { + "pattern": "((?:\\d{1,3}\\.){3}\\d{1,3})\\/(\\d{1,2})$", + "type": "string" + }, + "type": "array" + }, + "outboundPortExclusionList": { + "description": "Global list of ports to exclude from outbound traffic interception by the sidecar proxy.", + "items": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "title": "Mesh Config", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.3.0/meshconfig.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.3.0/meshconfig.meshery.layer5.io_definition.json new file mode 100755 index 00000000..aed3099e --- /dev/null +++ b/templates/oam/workloads/v0.3.0/meshconfig.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "MeshConfig", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "meshconfig.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.openservicemesh.io/v1alpha1", + "k8sKind": "MeshConfig", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.3.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.3.0/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.3.0/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..60d4f7dd --- /dev/null +++ b/templates/oam/workloads/v0.3.0/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "properties": { + "clusters": { + "description": "The clusters the service accounts are hosted on.", + "items": { + "properties": { + "address": { + "description": "a routable IP + port", + "pattern": "^(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3}):[0-9]+$", + "type": "string" + }, + "certificate": { + "description": "mTLS certificates (optional)", + "type": "string" + }, + "name": { + "description": "Name of the remote cluster", + "type": "string" + }, + "priority": { + "description": "Priority of the remote cluster in locality based load balancing", + "minimum": 0, + "type": "integer" + }, + "weight": { + "default": 0, + "description": "Load balancing weight of the remote cluster", + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "address", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "ports": { + "description": "The list of ports that are exposed by this service.", + "items": { + "properties": { + "port": { + "description": "The port that will be exposed by this service.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "default": "TCP", + "description": "The IP protocol for this port. Supports \"TCP\", \"UDP\", and \"SCTP\". Default is TCP.", + "enum": [ + "TCP", + "UDP", + "SCTP" + ], + "type": "string" + } + }, + "required": [ + "port", + "protocol" + ], + "type": "object" + }, + "type": "array" + }, + "serviceAccount": { + "type": "string" + } + }, + "required": [ + "serviceAccount", + "clusters" + ], + "title": "Multi Cluster Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.3.0/multiclusterservice.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.3.0/multiclusterservice.meshery.layer5.io_definition.json new file mode 100755 index 00000000..b0304ec8 --- /dev/null +++ b/templates/oam/workloads/v0.3.0/multiclusterservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "MultiClusterService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "multiclusterservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.openservicemesh.io/v1alpha1", + "k8sKind": "MultiClusterService", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.3.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.3.0/tcproute.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.3.0/tcproute.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..d0cc9bfe --- /dev/null +++ b/templates/oam/workloads/v0.3.0/tcproute.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,25 @@ +{ + "properties": { + "matches": { + "description": "Match conditions of this route.", + "properties": { + "ports": { + "description": "Port numbers to match TCP traffic.", + "items": { + "type": "integer" + }, + "type": "array" + } + }, + "required": [ + "ports" + ], + "type": "object" + } + }, + "required": [ + "matches" + ], + "title": "TCP Route", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.3.0/tcproute.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.3.0/tcproute.meshery.layer5.io_definition.json new file mode 100755 index 00000000..7d6704fc --- /dev/null +++ b/templates/oam/workloads/v0.3.0/tcproute.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TCPRoute", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "tcproute.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "specs.smi-spec.io/v1alpha4", + "k8sKind": "TCPRoute", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.3.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.3.0/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.3.0/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..13f0a9a2 --- /dev/null +++ b/templates/oam/workloads/v0.3.0/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,59 @@ +{ + "properties": { + "backends": { + "description": "The backend services of this split.", + "items": { + "properties": { + "service": { + "description": "Name of the Kubernetes service.", + "type": "string" + }, + "weight": { + "description": "Traffic weight value of this backend.", + "type": "number" + } + }, + "required": [ + "service", + "weight" + ], + "type": "object" + }, + "type": "array" + }, + "matches": { + "description": "The HTTP route groups that this traffic split should match.", + "items": { + "properties": { + "kind": { + "description": "Kind of the matching group.", + "enum": [ + "HTTPRouteGroup" + ], + "type": "string" + }, + "name": { + "description": "Name of the matching group.", + "type": "string" + } + }, + "required": [ + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "service": { + "description": "The apex service of this split.", + "type": "string" + } + }, + "required": [ + "service", + "backends" + ], + "title": "Traffic Split", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.3.0/trafficsplit.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.3.0/trafficsplit.meshery.layer5.io_definition.json new file mode 100755 index 00000000..5298eb53 --- /dev/null +++ b/templates/oam/workloads/v0.3.0/trafficsplit.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TrafficSplit", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "trafficsplit.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "split.smi-spec.io/v1alpha4", + "k8sKind": "TrafficSplit", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.3.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.3.0/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.3.0/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..83a24559 --- /dev/null +++ b/templates/oam/workloads/v0.3.0/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,91 @@ +{ + "properties": { + "destination": { + "description": "The destination of this traffic target.", + "properties": { + "kind": { + "description": "Kind of the destination.", + "type": "string" + }, + "name": { + "description": "Name of the destination.", + "type": "string" + }, + "namespace": { + "description": "Namespace of the destination.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "rules": { + "description": "Specifications of this traffic target.", + "items": { + "properties": { + "kind": { + "description": "Kind of this spec.", + "enum": [ + "HTTPRouteGroup", + "TCPRoute", + "UDPRoute" + ], + "type": "string" + }, + "matches": { + "description": "Match conditions of this spec.", + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "Name of this spec.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources of this traffic target.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "destination", + "rules", + "sources" + ], + "title": "Traffic Target", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.3.0/traffictarget.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.3.0/traffictarget.meshery.layer5.io_definition.json new file mode 100755 index 00000000..912d54e9 --- /dev/null +++ b/templates/oam/workloads/v0.3.0/traffictarget.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TrafficTarget", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "traffictarget.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "access.smi-spec.io/v1alpha3", + "k8sKind": "TrafficTarget", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.3.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.4.0/egress.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.4.0/egress.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..c77de28d --- /dev/null +++ b/templates/oam/workloads/v0.4.0/egress.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,103 @@ +{ + "properties": { + "hosts": { + "description": "Hosts that the sources are allowed to direct external traffic to.", + "items": { + "type": "string" + }, + "type": "array" + }, + "ipAddresses": { + "description": "IP address ranges that the sources are allowed to direct external traffic to.", + "items": { + "pattern": "((?:\\d{1,3}\\.){3}\\d{1,3})\\/(\\d{1,2})$", + "type": "string" + }, + "type": "array" + }, + "matches": { + "description": "The resource references an Egress policy should match on.", + "items": { + "properties": { + "apiGroup": { + "description": "API group for the resource being referenced.", + "type": "string" + }, + "kind": { + "description": "Type of resource being referenced.", + "type": "string" + }, + "name": { + "description": "Name of resource being referenced.", + "type": "string" + } + }, + "required": [ + "apiGroup", + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "ports": { + "description": "Ports that the sources are allowed to direct external traffic to.", + "items": { + "properties": { + "number": { + "description": "Port number of this port.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "description": "Protocol served by this port.", + "type": "string" + } + }, + "required": [ + "number", + "protocol" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources the egress policy is applicable to.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "enum": [ + "ServiceAccount" + ], + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "kind", + "name", + "namespace" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "sources", + "ports" + ], + "title": "Egress", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.4.0/egress.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.4.0/egress.meshery.layer5.io_definition.json new file mode 100755 index 00000000..7509ec66 --- /dev/null +++ b/templates/oam/workloads/v0.4.0/egress.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Egress", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "egress.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "policy.openservicemesh.io/v1alpha1", + "k8sKind": "Egress", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.4.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.4.0/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.4.0/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..6951d46c --- /dev/null +++ b/templates/oam/workloads/v0.4.0/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,60 @@ +{ + "properties": { + "matches": { + "description": "Match conditions of this route group.", + "items": { + "properties": { + "headers": { + "description": "Header match conditions of this route.", + "items": { + "additionalProperties": { + "type": "string" + }, + "description": "Header match condition of this route.", + "type": "object" + }, + "type": "array" + }, + "methods": { + "description": "The HTTP methods of this HTTP route.", + "items": { + "description": "The HTTP method of this HTTP route.", + "enum": [ + "*", + "GET", + "HEAD", + "PUT", + "POST", + "DELETE", + "CONNECT", + "OPTIONS", + "TRACE", + "PATCH" + ], + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "Name of the HTTP route.", + "type": "string" + }, + "pathRegex": { + "description": "URI path regex of the HTTP route.", + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "matches" + ], + "title": "HTTP Route Group", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.4.0/httproutegroup.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.4.0/httproutegroup.meshery.layer5.io_definition.json new file mode 100755 index 00000000..9770fe34 --- /dev/null +++ b/templates/oam/workloads/v0.4.0/httproutegroup.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPRouteGroup", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httproutegroup.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "specs.smi-spec.io/v1alpha4", + "k8sKind": "HTTPRouteGroup", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.4.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.4.0/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.4.0/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..f5535897 --- /dev/null +++ b/templates/oam/workloads/v0.4.0/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,118 @@ +{ + "properties": { + "backends": { + "description": "Backends the IngressBackend policy is applicable to.", + "items": { + "properties": { + "name": { + "description": "Name of the backend.", + "type": "string" + }, + "port": { + "description": "Port of the backend.", + "properties": { + "number": { + "description": "Port number of this port.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "description": "Protocol served by this port.", + "type": "string" + } + }, + "required": [ + "number", + "protocol" + ], + "type": "object" + }, + "tls": { + "description": "TLS configuration for the backend.", + "properties": { + "skipClientCertValidation": { + "description": "Skip client certificate validation.", + "type": "boolean" + }, + "sniHosts": { + "description": "SNI hosts allowed by the backend.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "skipClientCertValidation" + ], + "type": "object" + } + }, + "required": [ + "name", + "port" + ], + "type": "object" + }, + "type": "array" + }, + "matches": { + "description": "The resource references an IngressBackend policy should match on.", + "items": { + "properties": { + "apiGroup": { + "description": "API group for the resource being referenced.", + "type": "string" + }, + "kind": { + "description": "Type of resource being referenced.", + "type": "string" + }, + "name": { + "description": "Name of resource being referenced.", + "type": "string" + } + }, + "required": [ + "apiGroup", + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources the IngressBackend policy is applicable to.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "backends", + "sources" + ], + "title": "Ingress Backend", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.4.0/ingressbackend.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.4.0/ingressbackend.meshery.layer5.io_definition.json new file mode 100755 index 00000000..e5e3cc16 --- /dev/null +++ b/templates/oam/workloads/v0.4.0/ingressbackend.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "IngressBackend", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "ingressbackend.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "policy.openservicemesh.io/v1alpha1", + "k8sKind": "IngressBackend", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.4.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.4.0/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.4.0/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..b607634a --- /dev/null +++ b/templates/oam/workloads/v0.4.0/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,264 @@ +{ + "properties": { + "certificate": { + "description": "Configuration for certificate management", + "properties": { + "certKeyBitSize": { + "description": "Sets the certificate key bit size for data plane certificates.", + "type": "integer" + }, + "ingressGateway": { + "description": "Configuration for the ingress gateway's certificate", + "properties": { + "secret": { + "description": "Secret reference to store the certificate in", + "properties": { + "name": { + "description": "Name of the secret", + "type": "string" + }, + "namespace": { + "description": "Namespace of the secret", + "type": "string" + } + }, + "required": [ + "name", + "namespace" + ], + "type": "object" + }, + "subjectAltNames": { + "description": "Subject Alternative Names secured by the certificate", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "validityDuration": { + "description": "Certificate validity duration, represented as a sequence of decimal numbers each with optional fraction and a unit suffix", + "type": "string" + } + }, + "required": [ + "subjectAltNames", + "validityDuration", + "secret" + ], + "type": "object" + }, + "serviceCertValidityDuration": { + "description": "Sets the service certificate validity duration, represented as a sequence of decimal numbers each with optional fraction and a unit suffix.", + "type": "string" + } + }, + "required": [ + "serviceCertValidityDuration", + "certKeyBitSize" + ], + "type": "object" + }, + "featureFlags": { + "description": "OSM feature flags", + "properties": { + "enableAsyncProxyServiceMapping": { + "type": "boolean" + }, + "enableEgressPolicy": { + "type": "boolean" + }, + "enableEnvoyActiveHealthChecks": { + "type": "boolean" + }, + "enableIngressBackendPolicy": { + "type": "boolean" + }, + "enableMulticlusterMode": { + "type": "boolean" + }, + "enableRetryPolicy": { + "type": "boolean" + }, + "enableSnapshotCacheMode": { + "type": "boolean" + }, + "enableWASMStats": { + "type": "boolean" + } + }, + "type": "object" + }, + "observability": { + "description": "Configuration for observing the service mesh, including metrics, logs, tracing etc,.", + "properties": { + "enableDebugServer": { + "description": "Enables a debug endpoint on the osm-controller pod to list information regarding the mesh such as proxy connections, certificates, and SMI policies.", + "type": "boolean" + }, + "osmLogLevel": { + "description": "Allows setting OSM control plane log level at runtime", + "type": "string" + }, + "tracing": { + "description": "Configuration for distributed tracing", + "properties": { + "address": { + "description": "Address of Jaeger tracing deployment, if tracing is enabled.", + "type": "string" + }, + "enable": { + "description": "Enables Jaeger tracing for the mesh.", + "type": "boolean" + }, + "endpoint": { + "description": "Endpoint for tracing data, if tracing is enabled.", + "type": "string" + }, + "port": { + "description": "Port on which tracing is enabled.", + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "sidecar": { + "description": "Configuration for Envoy sidecar", + "properties": { + "configResyncInterval": { + "description": "Resync interval for regular proxy broadcast updates", + "type": "string" + }, + "enablePrivilegedInitContainer": { + "description": "Enables privileged init containers for pods in mesh. When false, init containers only have NET_ADMIN.", + "type": "boolean" + }, + "envoyImage": { + "description": "Image for the Envoy sidecar", + "type": "string" + }, + "envoyWindowsImage": { + "description": "Image for the Envoy sidecar on Windows workers", + "type": "string" + }, + "initContainerImage": { + "description": "Image for the init container", + "type": "string" + }, + "logLevel": { + "description": "Sets the logging verbosity of Envoy proxy sidecar, only applicable to newly created pods joining the mesh.", + "enum": [ + "trace", + "debug", + "info", + "warning", + "warn", + "error", + "critical", + "off" + ], + "type": "string" + }, + "maxDataPlaneConnections": { + "description": "Max allowed data plane sidecar connections", + "type": "integer" + }, + "resources": { + "properties": { + "limits": { + "additionalProperties": true, + "description": "Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/", + "type": "object" + }, + "requests": { + "additionalProperties": true, + "description": "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/", + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "traffic": { + "description": "Configuration for traffic management", + "properties": { + "enableEgress": { + "description": "Enables egress in the mesh", + "type": "boolean" + }, + "enablePermissiveTrafficPolicyMode": { + "description": "True for allowing traffic to flow between client and service pods within the mesh without SMI traffic policies, i.e. no traffic policy enforcement in the mesh. If set to false, enables deny-all traffic policy in mesh i.e. an SMI Traffic Target is necessary for services to communicate.", + "type": "boolean" + }, + "inboundExternalAuthorization": { + "description": "Configures external authorization for inbound and ingress connections.", + "properties": { + "address": { + "description": "Target destination endpoint that will handle external authorization.", + "type": "string" + }, + "enable": { + "description": "Enables/disables the inbound external authorization policy if present.", + "type": "boolean" + }, + "failureModeAllow": { + "description": "Allows specifying if traffic should succeed or fail if the external authorization endpoint fails to respond.", + "type": "boolean" + }, + "port": { + "description": "Remote destination port for the external authorization endpoint.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "statPrefix": { + "default": "inboundExtAuthz", + "description": "String prefix for inbound external authorization related metrics.", + "type": "string" + }, + "timeout": { + "default": "1s", + "description": "Defines the timeout to consider for the remote endpoint to reply in time.", + "type": "string" + } + }, + "type": "object" + }, + "inboundPortExclusionList": { + "description": "Global list of ports to exclude from inbound traffic interception by the sidecar proxy.", + "items": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "type": "array" + }, + "outboundIPRangeExclusionList": { + "description": "Global list of IP address ranges to exclude from outbound traffic interception by the sidecar proxy.", + "items": { + "pattern": "((?:\\d{1,3}\\.){3}\\d{1,3})\\/(\\d{1,2})$", + "type": "string" + }, + "type": "array" + }, + "outboundPortExclusionList": { + "description": "Global list of ports to exclude from outbound traffic interception by the sidecar proxy.", + "items": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "title": "Mesh Config", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.4.0/meshconfig.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.4.0/meshconfig.meshery.layer5.io_definition.json new file mode 100755 index 00000000..851a2350 --- /dev/null +++ b/templates/oam/workloads/v0.4.0/meshconfig.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "MeshConfig", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "meshconfig.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.openservicemesh.io/v1alpha1", + "k8sKind": "MeshConfig", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.4.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.4.0/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.4.0/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..60d4f7dd --- /dev/null +++ b/templates/oam/workloads/v0.4.0/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "properties": { + "clusters": { + "description": "The clusters the service accounts are hosted on.", + "items": { + "properties": { + "address": { + "description": "a routable IP + port", + "pattern": "^(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3}):[0-9]+$", + "type": "string" + }, + "certificate": { + "description": "mTLS certificates (optional)", + "type": "string" + }, + "name": { + "description": "Name of the remote cluster", + "type": "string" + }, + "priority": { + "description": "Priority of the remote cluster in locality based load balancing", + "minimum": 0, + "type": "integer" + }, + "weight": { + "default": 0, + "description": "Load balancing weight of the remote cluster", + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "address", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "ports": { + "description": "The list of ports that are exposed by this service.", + "items": { + "properties": { + "port": { + "description": "The port that will be exposed by this service.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "default": "TCP", + "description": "The IP protocol for this port. Supports \"TCP\", \"UDP\", and \"SCTP\". Default is TCP.", + "enum": [ + "TCP", + "UDP", + "SCTP" + ], + "type": "string" + } + }, + "required": [ + "port", + "protocol" + ], + "type": "object" + }, + "type": "array" + }, + "serviceAccount": { + "type": "string" + } + }, + "required": [ + "serviceAccount", + "clusters" + ], + "title": "Multi Cluster Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.4.0/multiclusterservice.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.4.0/multiclusterservice.meshery.layer5.io_definition.json new file mode 100755 index 00000000..ca7d386d --- /dev/null +++ b/templates/oam/workloads/v0.4.0/multiclusterservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "MultiClusterService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "multiclusterservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.openservicemesh.io/v1alpha1", + "k8sKind": "MultiClusterService", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.4.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.4.0/tcproute.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.4.0/tcproute.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..d0cc9bfe --- /dev/null +++ b/templates/oam/workloads/v0.4.0/tcproute.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,25 @@ +{ + "properties": { + "matches": { + "description": "Match conditions of this route.", + "properties": { + "ports": { + "description": "Port numbers to match TCP traffic.", + "items": { + "type": "integer" + }, + "type": "array" + } + }, + "required": [ + "ports" + ], + "type": "object" + } + }, + "required": [ + "matches" + ], + "title": "TCP Route", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.4.0/tcproute.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.4.0/tcproute.meshery.layer5.io_definition.json new file mode 100755 index 00000000..5fd74f57 --- /dev/null +++ b/templates/oam/workloads/v0.4.0/tcproute.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TCPRoute", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "tcproute.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "specs.smi-spec.io/v1alpha4", + "k8sKind": "TCPRoute", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.4.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.4.0/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.4.0/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..13f0a9a2 --- /dev/null +++ b/templates/oam/workloads/v0.4.0/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,59 @@ +{ + "properties": { + "backends": { + "description": "The backend services of this split.", + "items": { + "properties": { + "service": { + "description": "Name of the Kubernetes service.", + "type": "string" + }, + "weight": { + "description": "Traffic weight value of this backend.", + "type": "number" + } + }, + "required": [ + "service", + "weight" + ], + "type": "object" + }, + "type": "array" + }, + "matches": { + "description": "The HTTP route groups that this traffic split should match.", + "items": { + "properties": { + "kind": { + "description": "Kind of the matching group.", + "enum": [ + "HTTPRouteGroup" + ], + "type": "string" + }, + "name": { + "description": "Name of the matching group.", + "type": "string" + } + }, + "required": [ + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "service": { + "description": "The apex service of this split.", + "type": "string" + } + }, + "required": [ + "service", + "backends" + ], + "title": "Traffic Split", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.4.0/trafficsplit.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.4.0/trafficsplit.meshery.layer5.io_definition.json new file mode 100755 index 00000000..3b7325e1 --- /dev/null +++ b/templates/oam/workloads/v0.4.0/trafficsplit.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TrafficSplit", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "trafficsplit.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "split.smi-spec.io/v1alpha4", + "k8sKind": "TrafficSplit", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.4.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.4.0/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.4.0/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..83a24559 --- /dev/null +++ b/templates/oam/workloads/v0.4.0/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,91 @@ +{ + "properties": { + "destination": { + "description": "The destination of this traffic target.", + "properties": { + "kind": { + "description": "Kind of the destination.", + "type": "string" + }, + "name": { + "description": "Name of the destination.", + "type": "string" + }, + "namespace": { + "description": "Namespace of the destination.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "rules": { + "description": "Specifications of this traffic target.", + "items": { + "properties": { + "kind": { + "description": "Kind of this spec.", + "enum": [ + "HTTPRouteGroup", + "TCPRoute", + "UDPRoute" + ], + "type": "string" + }, + "matches": { + "description": "Match conditions of this spec.", + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "Name of this spec.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources of this traffic target.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "destination", + "rules", + "sources" + ], + "title": "Traffic Target", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.4.0/traffictarget.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.4.0/traffictarget.meshery.layer5.io_definition.json new file mode 100755 index 00000000..13ceda8e --- /dev/null +++ b/templates/oam/workloads/v0.4.0/traffictarget.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TrafficTarget", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "traffictarget.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "access.smi-spec.io/v1alpha3", + "k8sKind": "TrafficTarget", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.4.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.4.1/egress.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.4.1/egress.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..c77de28d --- /dev/null +++ b/templates/oam/workloads/v0.4.1/egress.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,103 @@ +{ + "properties": { + "hosts": { + "description": "Hosts that the sources are allowed to direct external traffic to.", + "items": { + "type": "string" + }, + "type": "array" + }, + "ipAddresses": { + "description": "IP address ranges that the sources are allowed to direct external traffic to.", + "items": { + "pattern": "((?:\\d{1,3}\\.){3}\\d{1,3})\\/(\\d{1,2})$", + "type": "string" + }, + "type": "array" + }, + "matches": { + "description": "The resource references an Egress policy should match on.", + "items": { + "properties": { + "apiGroup": { + "description": "API group for the resource being referenced.", + "type": "string" + }, + "kind": { + "description": "Type of resource being referenced.", + "type": "string" + }, + "name": { + "description": "Name of resource being referenced.", + "type": "string" + } + }, + "required": [ + "apiGroup", + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "ports": { + "description": "Ports that the sources are allowed to direct external traffic to.", + "items": { + "properties": { + "number": { + "description": "Port number of this port.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "description": "Protocol served by this port.", + "type": "string" + } + }, + "required": [ + "number", + "protocol" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources the egress policy is applicable to.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "enum": [ + "ServiceAccount" + ], + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "kind", + "name", + "namespace" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "sources", + "ports" + ], + "title": "Egress", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.4.1/egress.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.4.1/egress.meshery.layer5.io_definition.json new file mode 100755 index 00000000..759ff1a2 --- /dev/null +++ b/templates/oam/workloads/v0.4.1/egress.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Egress", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "egress.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "policy.openservicemesh.io/v1alpha1", + "k8sKind": "Egress", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.4.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.4.1/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.4.1/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..6951d46c --- /dev/null +++ b/templates/oam/workloads/v0.4.1/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,60 @@ +{ + "properties": { + "matches": { + "description": "Match conditions of this route group.", + "items": { + "properties": { + "headers": { + "description": "Header match conditions of this route.", + "items": { + "additionalProperties": { + "type": "string" + }, + "description": "Header match condition of this route.", + "type": "object" + }, + "type": "array" + }, + "methods": { + "description": "The HTTP methods of this HTTP route.", + "items": { + "description": "The HTTP method of this HTTP route.", + "enum": [ + "*", + "GET", + "HEAD", + "PUT", + "POST", + "DELETE", + "CONNECT", + "OPTIONS", + "TRACE", + "PATCH" + ], + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "Name of the HTTP route.", + "type": "string" + }, + "pathRegex": { + "description": "URI path regex of the HTTP route.", + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "matches" + ], + "title": "HTTP Route Group", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.4.1/httproutegroup.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.4.1/httproutegroup.meshery.layer5.io_definition.json new file mode 100755 index 00000000..e2fecf22 --- /dev/null +++ b/templates/oam/workloads/v0.4.1/httproutegroup.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPRouteGroup", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httproutegroup.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "specs.smi-spec.io/v1alpha4", + "k8sKind": "HTTPRouteGroup", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.4.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.4.1/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.4.1/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..f5535897 --- /dev/null +++ b/templates/oam/workloads/v0.4.1/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,118 @@ +{ + "properties": { + "backends": { + "description": "Backends the IngressBackend policy is applicable to.", + "items": { + "properties": { + "name": { + "description": "Name of the backend.", + "type": "string" + }, + "port": { + "description": "Port of the backend.", + "properties": { + "number": { + "description": "Port number of this port.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "description": "Protocol served by this port.", + "type": "string" + } + }, + "required": [ + "number", + "protocol" + ], + "type": "object" + }, + "tls": { + "description": "TLS configuration for the backend.", + "properties": { + "skipClientCertValidation": { + "description": "Skip client certificate validation.", + "type": "boolean" + }, + "sniHosts": { + "description": "SNI hosts allowed by the backend.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "skipClientCertValidation" + ], + "type": "object" + } + }, + "required": [ + "name", + "port" + ], + "type": "object" + }, + "type": "array" + }, + "matches": { + "description": "The resource references an IngressBackend policy should match on.", + "items": { + "properties": { + "apiGroup": { + "description": "API group for the resource being referenced.", + "type": "string" + }, + "kind": { + "description": "Type of resource being referenced.", + "type": "string" + }, + "name": { + "description": "Name of resource being referenced.", + "type": "string" + } + }, + "required": [ + "apiGroup", + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources the IngressBackend policy is applicable to.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "backends", + "sources" + ], + "title": "Ingress Backend", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.4.1/ingressbackend.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.4.1/ingressbackend.meshery.layer5.io_definition.json new file mode 100755 index 00000000..b5ccb423 --- /dev/null +++ b/templates/oam/workloads/v0.4.1/ingressbackend.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "IngressBackend", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "ingressbackend.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "policy.openservicemesh.io/v1alpha1", + "k8sKind": "IngressBackend", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.4.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.4.1/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.4.1/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..b607634a --- /dev/null +++ b/templates/oam/workloads/v0.4.1/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,264 @@ +{ + "properties": { + "certificate": { + "description": "Configuration for certificate management", + "properties": { + "certKeyBitSize": { + "description": "Sets the certificate key bit size for data plane certificates.", + "type": "integer" + }, + "ingressGateway": { + "description": "Configuration for the ingress gateway's certificate", + "properties": { + "secret": { + "description": "Secret reference to store the certificate in", + "properties": { + "name": { + "description": "Name of the secret", + "type": "string" + }, + "namespace": { + "description": "Namespace of the secret", + "type": "string" + } + }, + "required": [ + "name", + "namespace" + ], + "type": "object" + }, + "subjectAltNames": { + "description": "Subject Alternative Names secured by the certificate", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "validityDuration": { + "description": "Certificate validity duration, represented as a sequence of decimal numbers each with optional fraction and a unit suffix", + "type": "string" + } + }, + "required": [ + "subjectAltNames", + "validityDuration", + "secret" + ], + "type": "object" + }, + "serviceCertValidityDuration": { + "description": "Sets the service certificate validity duration, represented as a sequence of decimal numbers each with optional fraction and a unit suffix.", + "type": "string" + } + }, + "required": [ + "serviceCertValidityDuration", + "certKeyBitSize" + ], + "type": "object" + }, + "featureFlags": { + "description": "OSM feature flags", + "properties": { + "enableAsyncProxyServiceMapping": { + "type": "boolean" + }, + "enableEgressPolicy": { + "type": "boolean" + }, + "enableEnvoyActiveHealthChecks": { + "type": "boolean" + }, + "enableIngressBackendPolicy": { + "type": "boolean" + }, + "enableMulticlusterMode": { + "type": "boolean" + }, + "enableRetryPolicy": { + "type": "boolean" + }, + "enableSnapshotCacheMode": { + "type": "boolean" + }, + "enableWASMStats": { + "type": "boolean" + } + }, + "type": "object" + }, + "observability": { + "description": "Configuration for observing the service mesh, including metrics, logs, tracing etc,.", + "properties": { + "enableDebugServer": { + "description": "Enables a debug endpoint on the osm-controller pod to list information regarding the mesh such as proxy connections, certificates, and SMI policies.", + "type": "boolean" + }, + "osmLogLevel": { + "description": "Allows setting OSM control plane log level at runtime", + "type": "string" + }, + "tracing": { + "description": "Configuration for distributed tracing", + "properties": { + "address": { + "description": "Address of Jaeger tracing deployment, if tracing is enabled.", + "type": "string" + }, + "enable": { + "description": "Enables Jaeger tracing for the mesh.", + "type": "boolean" + }, + "endpoint": { + "description": "Endpoint for tracing data, if tracing is enabled.", + "type": "string" + }, + "port": { + "description": "Port on which tracing is enabled.", + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "sidecar": { + "description": "Configuration for Envoy sidecar", + "properties": { + "configResyncInterval": { + "description": "Resync interval for regular proxy broadcast updates", + "type": "string" + }, + "enablePrivilegedInitContainer": { + "description": "Enables privileged init containers for pods in mesh. When false, init containers only have NET_ADMIN.", + "type": "boolean" + }, + "envoyImage": { + "description": "Image for the Envoy sidecar", + "type": "string" + }, + "envoyWindowsImage": { + "description": "Image for the Envoy sidecar on Windows workers", + "type": "string" + }, + "initContainerImage": { + "description": "Image for the init container", + "type": "string" + }, + "logLevel": { + "description": "Sets the logging verbosity of Envoy proxy sidecar, only applicable to newly created pods joining the mesh.", + "enum": [ + "trace", + "debug", + "info", + "warning", + "warn", + "error", + "critical", + "off" + ], + "type": "string" + }, + "maxDataPlaneConnections": { + "description": "Max allowed data plane sidecar connections", + "type": "integer" + }, + "resources": { + "properties": { + "limits": { + "additionalProperties": true, + "description": "Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/", + "type": "object" + }, + "requests": { + "additionalProperties": true, + "description": "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/", + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "traffic": { + "description": "Configuration for traffic management", + "properties": { + "enableEgress": { + "description": "Enables egress in the mesh", + "type": "boolean" + }, + "enablePermissiveTrafficPolicyMode": { + "description": "True for allowing traffic to flow between client and service pods within the mesh without SMI traffic policies, i.e. no traffic policy enforcement in the mesh. If set to false, enables deny-all traffic policy in mesh i.e. an SMI Traffic Target is necessary for services to communicate.", + "type": "boolean" + }, + "inboundExternalAuthorization": { + "description": "Configures external authorization for inbound and ingress connections.", + "properties": { + "address": { + "description": "Target destination endpoint that will handle external authorization.", + "type": "string" + }, + "enable": { + "description": "Enables/disables the inbound external authorization policy if present.", + "type": "boolean" + }, + "failureModeAllow": { + "description": "Allows specifying if traffic should succeed or fail if the external authorization endpoint fails to respond.", + "type": "boolean" + }, + "port": { + "description": "Remote destination port for the external authorization endpoint.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "statPrefix": { + "default": "inboundExtAuthz", + "description": "String prefix for inbound external authorization related metrics.", + "type": "string" + }, + "timeout": { + "default": "1s", + "description": "Defines the timeout to consider for the remote endpoint to reply in time.", + "type": "string" + } + }, + "type": "object" + }, + "inboundPortExclusionList": { + "description": "Global list of ports to exclude from inbound traffic interception by the sidecar proxy.", + "items": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "type": "array" + }, + "outboundIPRangeExclusionList": { + "description": "Global list of IP address ranges to exclude from outbound traffic interception by the sidecar proxy.", + "items": { + "pattern": "((?:\\d{1,3}\\.){3}\\d{1,3})\\/(\\d{1,2})$", + "type": "string" + }, + "type": "array" + }, + "outboundPortExclusionList": { + "description": "Global list of ports to exclude from outbound traffic interception by the sidecar proxy.", + "items": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "title": "Mesh Config", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.4.1/meshconfig.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.4.1/meshconfig.meshery.layer5.io_definition.json new file mode 100755 index 00000000..31986fd6 --- /dev/null +++ b/templates/oam/workloads/v0.4.1/meshconfig.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "MeshConfig", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "meshconfig.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.openservicemesh.io/v1alpha1", + "k8sKind": "MeshConfig", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.4.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.4.1/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.4.1/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..60d4f7dd --- /dev/null +++ b/templates/oam/workloads/v0.4.1/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "properties": { + "clusters": { + "description": "The clusters the service accounts are hosted on.", + "items": { + "properties": { + "address": { + "description": "a routable IP + port", + "pattern": "^(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3}):[0-9]+$", + "type": "string" + }, + "certificate": { + "description": "mTLS certificates (optional)", + "type": "string" + }, + "name": { + "description": "Name of the remote cluster", + "type": "string" + }, + "priority": { + "description": "Priority of the remote cluster in locality based load balancing", + "minimum": 0, + "type": "integer" + }, + "weight": { + "default": 0, + "description": "Load balancing weight of the remote cluster", + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "address", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "ports": { + "description": "The list of ports that are exposed by this service.", + "items": { + "properties": { + "port": { + "description": "The port that will be exposed by this service.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "default": "TCP", + "description": "The IP protocol for this port. Supports \"TCP\", \"UDP\", and \"SCTP\". Default is TCP.", + "enum": [ + "TCP", + "UDP", + "SCTP" + ], + "type": "string" + } + }, + "required": [ + "port", + "protocol" + ], + "type": "object" + }, + "type": "array" + }, + "serviceAccount": { + "type": "string" + } + }, + "required": [ + "serviceAccount", + "clusters" + ], + "title": "Multi Cluster Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.4.1/multiclusterservice.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.4.1/multiclusterservice.meshery.layer5.io_definition.json new file mode 100755 index 00000000..02310ea2 --- /dev/null +++ b/templates/oam/workloads/v0.4.1/multiclusterservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "MultiClusterService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "multiclusterservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.openservicemesh.io/v1alpha1", + "k8sKind": "MultiClusterService", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.4.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.4.1/tcproute.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.4.1/tcproute.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..d0cc9bfe --- /dev/null +++ b/templates/oam/workloads/v0.4.1/tcproute.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,25 @@ +{ + "properties": { + "matches": { + "description": "Match conditions of this route.", + "properties": { + "ports": { + "description": "Port numbers to match TCP traffic.", + "items": { + "type": "integer" + }, + "type": "array" + } + }, + "required": [ + "ports" + ], + "type": "object" + } + }, + "required": [ + "matches" + ], + "title": "TCP Route", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.4.1/tcproute.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.4.1/tcproute.meshery.layer5.io_definition.json new file mode 100755 index 00000000..88a59b41 --- /dev/null +++ b/templates/oam/workloads/v0.4.1/tcproute.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TCPRoute", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "tcproute.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "specs.smi-spec.io/v1alpha4", + "k8sKind": "TCPRoute", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.4.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.4.1/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.4.1/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..13f0a9a2 --- /dev/null +++ b/templates/oam/workloads/v0.4.1/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,59 @@ +{ + "properties": { + "backends": { + "description": "The backend services of this split.", + "items": { + "properties": { + "service": { + "description": "Name of the Kubernetes service.", + "type": "string" + }, + "weight": { + "description": "Traffic weight value of this backend.", + "type": "number" + } + }, + "required": [ + "service", + "weight" + ], + "type": "object" + }, + "type": "array" + }, + "matches": { + "description": "The HTTP route groups that this traffic split should match.", + "items": { + "properties": { + "kind": { + "description": "Kind of the matching group.", + "enum": [ + "HTTPRouteGroup" + ], + "type": "string" + }, + "name": { + "description": "Name of the matching group.", + "type": "string" + } + }, + "required": [ + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "service": { + "description": "The apex service of this split.", + "type": "string" + } + }, + "required": [ + "service", + "backends" + ], + "title": "Traffic Split", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.4.1/trafficsplit.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.4.1/trafficsplit.meshery.layer5.io_definition.json new file mode 100755 index 00000000..05741f1c --- /dev/null +++ b/templates/oam/workloads/v0.4.1/trafficsplit.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TrafficSplit", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "trafficsplit.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "split.smi-spec.io/v1alpha4", + "k8sKind": "TrafficSplit", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.4.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.4.1/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.4.1/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..83a24559 --- /dev/null +++ b/templates/oam/workloads/v0.4.1/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,91 @@ +{ + "properties": { + "destination": { + "description": "The destination of this traffic target.", + "properties": { + "kind": { + "description": "Kind of the destination.", + "type": "string" + }, + "name": { + "description": "Name of the destination.", + "type": "string" + }, + "namespace": { + "description": "Namespace of the destination.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "rules": { + "description": "Specifications of this traffic target.", + "items": { + "properties": { + "kind": { + "description": "Kind of this spec.", + "enum": [ + "HTTPRouteGroup", + "TCPRoute", + "UDPRoute" + ], + "type": "string" + }, + "matches": { + "description": "Match conditions of this spec.", + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "Name of this spec.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources of this traffic target.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "destination", + "rules", + "sources" + ], + "title": "Traffic Target", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.4.1/traffictarget.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.4.1/traffictarget.meshery.layer5.io_definition.json new file mode 100755 index 00000000..47836607 --- /dev/null +++ b/templates/oam/workloads/v0.4.1/traffictarget.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TrafficTarget", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "traffictarget.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "access.smi-spec.io/v1alpha3", + "k8sKind": "TrafficTarget", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.4.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.4.2/egress.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.4.2/egress.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..c77de28d --- /dev/null +++ b/templates/oam/workloads/v0.4.2/egress.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,103 @@ +{ + "properties": { + "hosts": { + "description": "Hosts that the sources are allowed to direct external traffic to.", + "items": { + "type": "string" + }, + "type": "array" + }, + "ipAddresses": { + "description": "IP address ranges that the sources are allowed to direct external traffic to.", + "items": { + "pattern": "((?:\\d{1,3}\\.){3}\\d{1,3})\\/(\\d{1,2})$", + "type": "string" + }, + "type": "array" + }, + "matches": { + "description": "The resource references an Egress policy should match on.", + "items": { + "properties": { + "apiGroup": { + "description": "API group for the resource being referenced.", + "type": "string" + }, + "kind": { + "description": "Type of resource being referenced.", + "type": "string" + }, + "name": { + "description": "Name of resource being referenced.", + "type": "string" + } + }, + "required": [ + "apiGroup", + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "ports": { + "description": "Ports that the sources are allowed to direct external traffic to.", + "items": { + "properties": { + "number": { + "description": "Port number of this port.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "description": "Protocol served by this port.", + "type": "string" + } + }, + "required": [ + "number", + "protocol" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources the egress policy is applicable to.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "enum": [ + "ServiceAccount" + ], + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "kind", + "name", + "namespace" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "sources", + "ports" + ], + "title": "Egress", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.4.2/egress.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.4.2/egress.meshery.layer5.io_definition.json new file mode 100755 index 00000000..5a7de8d0 --- /dev/null +++ b/templates/oam/workloads/v0.4.2/egress.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Egress", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "egress.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "policy.openservicemesh.io/v1alpha1", + "k8sKind": "Egress", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.4.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.4.2/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.4.2/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..6951d46c --- /dev/null +++ b/templates/oam/workloads/v0.4.2/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,60 @@ +{ + "properties": { + "matches": { + "description": "Match conditions of this route group.", + "items": { + "properties": { + "headers": { + "description": "Header match conditions of this route.", + "items": { + "additionalProperties": { + "type": "string" + }, + "description": "Header match condition of this route.", + "type": "object" + }, + "type": "array" + }, + "methods": { + "description": "The HTTP methods of this HTTP route.", + "items": { + "description": "The HTTP method of this HTTP route.", + "enum": [ + "*", + "GET", + "HEAD", + "PUT", + "POST", + "DELETE", + "CONNECT", + "OPTIONS", + "TRACE", + "PATCH" + ], + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "Name of the HTTP route.", + "type": "string" + }, + "pathRegex": { + "description": "URI path regex of the HTTP route.", + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "matches" + ], + "title": "HTTP Route Group", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.4.2/httproutegroup.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.4.2/httproutegroup.meshery.layer5.io_definition.json new file mode 100755 index 00000000..2444da12 --- /dev/null +++ b/templates/oam/workloads/v0.4.2/httproutegroup.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPRouteGroup", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httproutegroup.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "specs.smi-spec.io/v1alpha4", + "k8sKind": "HTTPRouteGroup", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.4.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.4.2/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.4.2/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..f5535897 --- /dev/null +++ b/templates/oam/workloads/v0.4.2/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,118 @@ +{ + "properties": { + "backends": { + "description": "Backends the IngressBackend policy is applicable to.", + "items": { + "properties": { + "name": { + "description": "Name of the backend.", + "type": "string" + }, + "port": { + "description": "Port of the backend.", + "properties": { + "number": { + "description": "Port number of this port.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "description": "Protocol served by this port.", + "type": "string" + } + }, + "required": [ + "number", + "protocol" + ], + "type": "object" + }, + "tls": { + "description": "TLS configuration for the backend.", + "properties": { + "skipClientCertValidation": { + "description": "Skip client certificate validation.", + "type": "boolean" + }, + "sniHosts": { + "description": "SNI hosts allowed by the backend.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "skipClientCertValidation" + ], + "type": "object" + } + }, + "required": [ + "name", + "port" + ], + "type": "object" + }, + "type": "array" + }, + "matches": { + "description": "The resource references an IngressBackend policy should match on.", + "items": { + "properties": { + "apiGroup": { + "description": "API group for the resource being referenced.", + "type": "string" + }, + "kind": { + "description": "Type of resource being referenced.", + "type": "string" + }, + "name": { + "description": "Name of resource being referenced.", + "type": "string" + } + }, + "required": [ + "apiGroup", + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources the IngressBackend policy is applicable to.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "backends", + "sources" + ], + "title": "Ingress Backend", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.4.2/ingressbackend.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.4.2/ingressbackend.meshery.layer5.io_definition.json new file mode 100755 index 00000000..0309e37b --- /dev/null +++ b/templates/oam/workloads/v0.4.2/ingressbackend.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "IngressBackend", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "ingressbackend.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "policy.openservicemesh.io/v1alpha1", + "k8sKind": "IngressBackend", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.4.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.4.2/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.4.2/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..b607634a --- /dev/null +++ b/templates/oam/workloads/v0.4.2/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,264 @@ +{ + "properties": { + "certificate": { + "description": "Configuration for certificate management", + "properties": { + "certKeyBitSize": { + "description": "Sets the certificate key bit size for data plane certificates.", + "type": "integer" + }, + "ingressGateway": { + "description": "Configuration for the ingress gateway's certificate", + "properties": { + "secret": { + "description": "Secret reference to store the certificate in", + "properties": { + "name": { + "description": "Name of the secret", + "type": "string" + }, + "namespace": { + "description": "Namespace of the secret", + "type": "string" + } + }, + "required": [ + "name", + "namespace" + ], + "type": "object" + }, + "subjectAltNames": { + "description": "Subject Alternative Names secured by the certificate", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "validityDuration": { + "description": "Certificate validity duration, represented as a sequence of decimal numbers each with optional fraction and a unit suffix", + "type": "string" + } + }, + "required": [ + "subjectAltNames", + "validityDuration", + "secret" + ], + "type": "object" + }, + "serviceCertValidityDuration": { + "description": "Sets the service certificate validity duration, represented as a sequence of decimal numbers each with optional fraction and a unit suffix.", + "type": "string" + } + }, + "required": [ + "serviceCertValidityDuration", + "certKeyBitSize" + ], + "type": "object" + }, + "featureFlags": { + "description": "OSM feature flags", + "properties": { + "enableAsyncProxyServiceMapping": { + "type": "boolean" + }, + "enableEgressPolicy": { + "type": "boolean" + }, + "enableEnvoyActiveHealthChecks": { + "type": "boolean" + }, + "enableIngressBackendPolicy": { + "type": "boolean" + }, + "enableMulticlusterMode": { + "type": "boolean" + }, + "enableRetryPolicy": { + "type": "boolean" + }, + "enableSnapshotCacheMode": { + "type": "boolean" + }, + "enableWASMStats": { + "type": "boolean" + } + }, + "type": "object" + }, + "observability": { + "description": "Configuration for observing the service mesh, including metrics, logs, tracing etc,.", + "properties": { + "enableDebugServer": { + "description": "Enables a debug endpoint on the osm-controller pod to list information regarding the mesh such as proxy connections, certificates, and SMI policies.", + "type": "boolean" + }, + "osmLogLevel": { + "description": "Allows setting OSM control plane log level at runtime", + "type": "string" + }, + "tracing": { + "description": "Configuration for distributed tracing", + "properties": { + "address": { + "description": "Address of Jaeger tracing deployment, if tracing is enabled.", + "type": "string" + }, + "enable": { + "description": "Enables Jaeger tracing for the mesh.", + "type": "boolean" + }, + "endpoint": { + "description": "Endpoint for tracing data, if tracing is enabled.", + "type": "string" + }, + "port": { + "description": "Port on which tracing is enabled.", + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "sidecar": { + "description": "Configuration for Envoy sidecar", + "properties": { + "configResyncInterval": { + "description": "Resync interval for regular proxy broadcast updates", + "type": "string" + }, + "enablePrivilegedInitContainer": { + "description": "Enables privileged init containers for pods in mesh. When false, init containers only have NET_ADMIN.", + "type": "boolean" + }, + "envoyImage": { + "description": "Image for the Envoy sidecar", + "type": "string" + }, + "envoyWindowsImage": { + "description": "Image for the Envoy sidecar on Windows workers", + "type": "string" + }, + "initContainerImage": { + "description": "Image for the init container", + "type": "string" + }, + "logLevel": { + "description": "Sets the logging verbosity of Envoy proxy sidecar, only applicable to newly created pods joining the mesh.", + "enum": [ + "trace", + "debug", + "info", + "warning", + "warn", + "error", + "critical", + "off" + ], + "type": "string" + }, + "maxDataPlaneConnections": { + "description": "Max allowed data plane sidecar connections", + "type": "integer" + }, + "resources": { + "properties": { + "limits": { + "additionalProperties": true, + "description": "Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/", + "type": "object" + }, + "requests": { + "additionalProperties": true, + "description": "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/", + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "traffic": { + "description": "Configuration for traffic management", + "properties": { + "enableEgress": { + "description": "Enables egress in the mesh", + "type": "boolean" + }, + "enablePermissiveTrafficPolicyMode": { + "description": "True for allowing traffic to flow between client and service pods within the mesh without SMI traffic policies, i.e. no traffic policy enforcement in the mesh. If set to false, enables deny-all traffic policy in mesh i.e. an SMI Traffic Target is necessary for services to communicate.", + "type": "boolean" + }, + "inboundExternalAuthorization": { + "description": "Configures external authorization for inbound and ingress connections.", + "properties": { + "address": { + "description": "Target destination endpoint that will handle external authorization.", + "type": "string" + }, + "enable": { + "description": "Enables/disables the inbound external authorization policy if present.", + "type": "boolean" + }, + "failureModeAllow": { + "description": "Allows specifying if traffic should succeed or fail if the external authorization endpoint fails to respond.", + "type": "boolean" + }, + "port": { + "description": "Remote destination port for the external authorization endpoint.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "statPrefix": { + "default": "inboundExtAuthz", + "description": "String prefix for inbound external authorization related metrics.", + "type": "string" + }, + "timeout": { + "default": "1s", + "description": "Defines the timeout to consider for the remote endpoint to reply in time.", + "type": "string" + } + }, + "type": "object" + }, + "inboundPortExclusionList": { + "description": "Global list of ports to exclude from inbound traffic interception by the sidecar proxy.", + "items": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "type": "array" + }, + "outboundIPRangeExclusionList": { + "description": "Global list of IP address ranges to exclude from outbound traffic interception by the sidecar proxy.", + "items": { + "pattern": "((?:\\d{1,3}\\.){3}\\d{1,3})\\/(\\d{1,2})$", + "type": "string" + }, + "type": "array" + }, + "outboundPortExclusionList": { + "description": "Global list of ports to exclude from outbound traffic interception by the sidecar proxy.", + "items": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "title": "Mesh Config", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.4.2/meshconfig.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.4.2/meshconfig.meshery.layer5.io_definition.json new file mode 100755 index 00000000..34eb66f8 --- /dev/null +++ b/templates/oam/workloads/v0.4.2/meshconfig.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "MeshConfig", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "meshconfig.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.openservicemesh.io/v1alpha1", + "k8sKind": "MeshConfig", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.4.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.4.2/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.4.2/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..60d4f7dd --- /dev/null +++ b/templates/oam/workloads/v0.4.2/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "properties": { + "clusters": { + "description": "The clusters the service accounts are hosted on.", + "items": { + "properties": { + "address": { + "description": "a routable IP + port", + "pattern": "^(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3}):[0-9]+$", + "type": "string" + }, + "certificate": { + "description": "mTLS certificates (optional)", + "type": "string" + }, + "name": { + "description": "Name of the remote cluster", + "type": "string" + }, + "priority": { + "description": "Priority of the remote cluster in locality based load balancing", + "minimum": 0, + "type": "integer" + }, + "weight": { + "default": 0, + "description": "Load balancing weight of the remote cluster", + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "address", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "ports": { + "description": "The list of ports that are exposed by this service.", + "items": { + "properties": { + "port": { + "description": "The port that will be exposed by this service.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "default": "TCP", + "description": "The IP protocol for this port. Supports \"TCP\", \"UDP\", and \"SCTP\". Default is TCP.", + "enum": [ + "TCP", + "UDP", + "SCTP" + ], + "type": "string" + } + }, + "required": [ + "port", + "protocol" + ], + "type": "object" + }, + "type": "array" + }, + "serviceAccount": { + "type": "string" + } + }, + "required": [ + "serviceAccount", + "clusters" + ], + "title": "Multi Cluster Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.4.2/multiclusterservice.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.4.2/multiclusterservice.meshery.layer5.io_definition.json new file mode 100755 index 00000000..4f786cbf --- /dev/null +++ b/templates/oam/workloads/v0.4.2/multiclusterservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "MultiClusterService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "multiclusterservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.openservicemesh.io/v1alpha1", + "k8sKind": "MultiClusterService", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.4.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.4.2/tcproute.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.4.2/tcproute.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..d0cc9bfe --- /dev/null +++ b/templates/oam/workloads/v0.4.2/tcproute.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,25 @@ +{ + "properties": { + "matches": { + "description": "Match conditions of this route.", + "properties": { + "ports": { + "description": "Port numbers to match TCP traffic.", + "items": { + "type": "integer" + }, + "type": "array" + } + }, + "required": [ + "ports" + ], + "type": "object" + } + }, + "required": [ + "matches" + ], + "title": "TCP Route", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.4.2/tcproute.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.4.2/tcproute.meshery.layer5.io_definition.json new file mode 100755 index 00000000..a772a32a --- /dev/null +++ b/templates/oam/workloads/v0.4.2/tcproute.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TCPRoute", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "tcproute.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "specs.smi-spec.io/v1alpha4", + "k8sKind": "TCPRoute", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.4.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.4.2/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.4.2/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..13f0a9a2 --- /dev/null +++ b/templates/oam/workloads/v0.4.2/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,59 @@ +{ + "properties": { + "backends": { + "description": "The backend services of this split.", + "items": { + "properties": { + "service": { + "description": "Name of the Kubernetes service.", + "type": "string" + }, + "weight": { + "description": "Traffic weight value of this backend.", + "type": "number" + } + }, + "required": [ + "service", + "weight" + ], + "type": "object" + }, + "type": "array" + }, + "matches": { + "description": "The HTTP route groups that this traffic split should match.", + "items": { + "properties": { + "kind": { + "description": "Kind of the matching group.", + "enum": [ + "HTTPRouteGroup" + ], + "type": "string" + }, + "name": { + "description": "Name of the matching group.", + "type": "string" + } + }, + "required": [ + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "service": { + "description": "The apex service of this split.", + "type": "string" + } + }, + "required": [ + "service", + "backends" + ], + "title": "Traffic Split", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.4.2/trafficsplit.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.4.2/trafficsplit.meshery.layer5.io_definition.json new file mode 100755 index 00000000..ef2b88c7 --- /dev/null +++ b/templates/oam/workloads/v0.4.2/trafficsplit.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TrafficSplit", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "trafficsplit.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "split.smi-spec.io/v1alpha4", + "k8sKind": "TrafficSplit", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.4.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.4.2/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.4.2/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..83a24559 --- /dev/null +++ b/templates/oam/workloads/v0.4.2/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,91 @@ +{ + "properties": { + "destination": { + "description": "The destination of this traffic target.", + "properties": { + "kind": { + "description": "Kind of the destination.", + "type": "string" + }, + "name": { + "description": "Name of the destination.", + "type": "string" + }, + "namespace": { + "description": "Namespace of the destination.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "rules": { + "description": "Specifications of this traffic target.", + "items": { + "properties": { + "kind": { + "description": "Kind of this spec.", + "enum": [ + "HTTPRouteGroup", + "TCPRoute", + "UDPRoute" + ], + "type": "string" + }, + "matches": { + "description": "Match conditions of this spec.", + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "Name of this spec.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources of this traffic target.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "destination", + "rules", + "sources" + ], + "title": "Traffic Target", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.4.2/traffictarget.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.4.2/traffictarget.meshery.layer5.io_definition.json new file mode 100755 index 00000000..f2693cc0 --- /dev/null +++ b/templates/oam/workloads/v0.4.2/traffictarget.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TrafficTarget", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "traffictarget.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "access.smi-spec.io/v1alpha3", + "k8sKind": "TrafficTarget", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.4.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.5.0-rc.1/egress.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.5.0-rc.1/egress.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..c77de28d --- /dev/null +++ b/templates/oam/workloads/v0.5.0-rc.1/egress.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,103 @@ +{ + "properties": { + "hosts": { + "description": "Hosts that the sources are allowed to direct external traffic to.", + "items": { + "type": "string" + }, + "type": "array" + }, + "ipAddresses": { + "description": "IP address ranges that the sources are allowed to direct external traffic to.", + "items": { + "pattern": "((?:\\d{1,3}\\.){3}\\d{1,3})\\/(\\d{1,2})$", + "type": "string" + }, + "type": "array" + }, + "matches": { + "description": "The resource references an Egress policy should match on.", + "items": { + "properties": { + "apiGroup": { + "description": "API group for the resource being referenced.", + "type": "string" + }, + "kind": { + "description": "Type of resource being referenced.", + "type": "string" + }, + "name": { + "description": "Name of resource being referenced.", + "type": "string" + } + }, + "required": [ + "apiGroup", + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "ports": { + "description": "Ports that the sources are allowed to direct external traffic to.", + "items": { + "properties": { + "number": { + "description": "Port number of this port.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "description": "Protocol served by this port.", + "type": "string" + } + }, + "required": [ + "number", + "protocol" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources the egress policy is applicable to.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "enum": [ + "ServiceAccount" + ], + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "kind", + "name", + "namespace" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "sources", + "ports" + ], + "title": "Egress", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.5.0-rc.1/egress.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.5.0-rc.1/egress.meshery.layer5.io_definition.json new file mode 100755 index 00000000..18372563 --- /dev/null +++ b/templates/oam/workloads/v0.5.0-rc.1/egress.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Egress", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "egress.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "policy.openservicemesh.io/v1alpha1", + "k8sKind": "Egress", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.5.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.5.0-rc.1/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.5.0-rc.1/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..6951d46c --- /dev/null +++ b/templates/oam/workloads/v0.5.0-rc.1/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,60 @@ +{ + "properties": { + "matches": { + "description": "Match conditions of this route group.", + "items": { + "properties": { + "headers": { + "description": "Header match conditions of this route.", + "items": { + "additionalProperties": { + "type": "string" + }, + "description": "Header match condition of this route.", + "type": "object" + }, + "type": "array" + }, + "methods": { + "description": "The HTTP methods of this HTTP route.", + "items": { + "description": "The HTTP method of this HTTP route.", + "enum": [ + "*", + "GET", + "HEAD", + "PUT", + "POST", + "DELETE", + "CONNECT", + "OPTIONS", + "TRACE", + "PATCH" + ], + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "Name of the HTTP route.", + "type": "string" + }, + "pathRegex": { + "description": "URI path regex of the HTTP route.", + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "matches" + ], + "title": "HTTP Route Group", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.5.0-rc.1/httproutegroup.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.5.0-rc.1/httproutegroup.meshery.layer5.io_definition.json new file mode 100755 index 00000000..bad965ed --- /dev/null +++ b/templates/oam/workloads/v0.5.0-rc.1/httproutegroup.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPRouteGroup", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httproutegroup.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "specs.smi-spec.io/v1alpha4", + "k8sKind": "HTTPRouteGroup", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.5.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.5.0-rc.1/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.5.0-rc.1/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..f5535897 --- /dev/null +++ b/templates/oam/workloads/v0.5.0-rc.1/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,118 @@ +{ + "properties": { + "backends": { + "description": "Backends the IngressBackend policy is applicable to.", + "items": { + "properties": { + "name": { + "description": "Name of the backend.", + "type": "string" + }, + "port": { + "description": "Port of the backend.", + "properties": { + "number": { + "description": "Port number of this port.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "description": "Protocol served by this port.", + "type": "string" + } + }, + "required": [ + "number", + "protocol" + ], + "type": "object" + }, + "tls": { + "description": "TLS configuration for the backend.", + "properties": { + "skipClientCertValidation": { + "description": "Skip client certificate validation.", + "type": "boolean" + }, + "sniHosts": { + "description": "SNI hosts allowed by the backend.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "skipClientCertValidation" + ], + "type": "object" + } + }, + "required": [ + "name", + "port" + ], + "type": "object" + }, + "type": "array" + }, + "matches": { + "description": "The resource references an IngressBackend policy should match on.", + "items": { + "properties": { + "apiGroup": { + "description": "API group for the resource being referenced.", + "type": "string" + }, + "kind": { + "description": "Type of resource being referenced.", + "type": "string" + }, + "name": { + "description": "Name of resource being referenced.", + "type": "string" + } + }, + "required": [ + "apiGroup", + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources the IngressBackend policy is applicable to.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "backends", + "sources" + ], + "title": "Ingress Backend", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.5.0-rc.1/ingressbackend.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.5.0-rc.1/ingressbackend.meshery.layer5.io_definition.json new file mode 100755 index 00000000..65e656a7 --- /dev/null +++ b/templates/oam/workloads/v0.5.0-rc.1/ingressbackend.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "IngressBackend", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "ingressbackend.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "policy.openservicemesh.io/v1alpha1", + "k8sKind": "IngressBackend", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.5.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.5.0-rc.1/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.5.0-rc.1/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..b607634a --- /dev/null +++ b/templates/oam/workloads/v0.5.0-rc.1/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,264 @@ +{ + "properties": { + "certificate": { + "description": "Configuration for certificate management", + "properties": { + "certKeyBitSize": { + "description": "Sets the certificate key bit size for data plane certificates.", + "type": "integer" + }, + "ingressGateway": { + "description": "Configuration for the ingress gateway's certificate", + "properties": { + "secret": { + "description": "Secret reference to store the certificate in", + "properties": { + "name": { + "description": "Name of the secret", + "type": "string" + }, + "namespace": { + "description": "Namespace of the secret", + "type": "string" + } + }, + "required": [ + "name", + "namespace" + ], + "type": "object" + }, + "subjectAltNames": { + "description": "Subject Alternative Names secured by the certificate", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "validityDuration": { + "description": "Certificate validity duration, represented as a sequence of decimal numbers each with optional fraction and a unit suffix", + "type": "string" + } + }, + "required": [ + "subjectAltNames", + "validityDuration", + "secret" + ], + "type": "object" + }, + "serviceCertValidityDuration": { + "description": "Sets the service certificate validity duration, represented as a sequence of decimal numbers each with optional fraction and a unit suffix.", + "type": "string" + } + }, + "required": [ + "serviceCertValidityDuration", + "certKeyBitSize" + ], + "type": "object" + }, + "featureFlags": { + "description": "OSM feature flags", + "properties": { + "enableAsyncProxyServiceMapping": { + "type": "boolean" + }, + "enableEgressPolicy": { + "type": "boolean" + }, + "enableEnvoyActiveHealthChecks": { + "type": "boolean" + }, + "enableIngressBackendPolicy": { + "type": "boolean" + }, + "enableMulticlusterMode": { + "type": "boolean" + }, + "enableRetryPolicy": { + "type": "boolean" + }, + "enableSnapshotCacheMode": { + "type": "boolean" + }, + "enableWASMStats": { + "type": "boolean" + } + }, + "type": "object" + }, + "observability": { + "description": "Configuration for observing the service mesh, including metrics, logs, tracing etc,.", + "properties": { + "enableDebugServer": { + "description": "Enables a debug endpoint on the osm-controller pod to list information regarding the mesh such as proxy connections, certificates, and SMI policies.", + "type": "boolean" + }, + "osmLogLevel": { + "description": "Allows setting OSM control plane log level at runtime", + "type": "string" + }, + "tracing": { + "description": "Configuration for distributed tracing", + "properties": { + "address": { + "description": "Address of Jaeger tracing deployment, if tracing is enabled.", + "type": "string" + }, + "enable": { + "description": "Enables Jaeger tracing for the mesh.", + "type": "boolean" + }, + "endpoint": { + "description": "Endpoint for tracing data, if tracing is enabled.", + "type": "string" + }, + "port": { + "description": "Port on which tracing is enabled.", + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "sidecar": { + "description": "Configuration for Envoy sidecar", + "properties": { + "configResyncInterval": { + "description": "Resync interval for regular proxy broadcast updates", + "type": "string" + }, + "enablePrivilegedInitContainer": { + "description": "Enables privileged init containers for pods in mesh. When false, init containers only have NET_ADMIN.", + "type": "boolean" + }, + "envoyImage": { + "description": "Image for the Envoy sidecar", + "type": "string" + }, + "envoyWindowsImage": { + "description": "Image for the Envoy sidecar on Windows workers", + "type": "string" + }, + "initContainerImage": { + "description": "Image for the init container", + "type": "string" + }, + "logLevel": { + "description": "Sets the logging verbosity of Envoy proxy sidecar, only applicable to newly created pods joining the mesh.", + "enum": [ + "trace", + "debug", + "info", + "warning", + "warn", + "error", + "critical", + "off" + ], + "type": "string" + }, + "maxDataPlaneConnections": { + "description": "Max allowed data plane sidecar connections", + "type": "integer" + }, + "resources": { + "properties": { + "limits": { + "additionalProperties": true, + "description": "Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/", + "type": "object" + }, + "requests": { + "additionalProperties": true, + "description": "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/", + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "traffic": { + "description": "Configuration for traffic management", + "properties": { + "enableEgress": { + "description": "Enables egress in the mesh", + "type": "boolean" + }, + "enablePermissiveTrafficPolicyMode": { + "description": "True for allowing traffic to flow between client and service pods within the mesh without SMI traffic policies, i.e. no traffic policy enforcement in the mesh. If set to false, enables deny-all traffic policy in mesh i.e. an SMI Traffic Target is necessary for services to communicate.", + "type": "boolean" + }, + "inboundExternalAuthorization": { + "description": "Configures external authorization for inbound and ingress connections.", + "properties": { + "address": { + "description": "Target destination endpoint that will handle external authorization.", + "type": "string" + }, + "enable": { + "description": "Enables/disables the inbound external authorization policy if present.", + "type": "boolean" + }, + "failureModeAllow": { + "description": "Allows specifying if traffic should succeed or fail if the external authorization endpoint fails to respond.", + "type": "boolean" + }, + "port": { + "description": "Remote destination port for the external authorization endpoint.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "statPrefix": { + "default": "inboundExtAuthz", + "description": "String prefix for inbound external authorization related metrics.", + "type": "string" + }, + "timeout": { + "default": "1s", + "description": "Defines the timeout to consider for the remote endpoint to reply in time.", + "type": "string" + } + }, + "type": "object" + }, + "inboundPortExclusionList": { + "description": "Global list of ports to exclude from inbound traffic interception by the sidecar proxy.", + "items": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "type": "array" + }, + "outboundIPRangeExclusionList": { + "description": "Global list of IP address ranges to exclude from outbound traffic interception by the sidecar proxy.", + "items": { + "pattern": "((?:\\d{1,3}\\.){3}\\d{1,3})\\/(\\d{1,2})$", + "type": "string" + }, + "type": "array" + }, + "outboundPortExclusionList": { + "description": "Global list of ports to exclude from outbound traffic interception by the sidecar proxy.", + "items": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "title": "Mesh Config", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.5.0-rc.1/meshconfig.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.5.0-rc.1/meshconfig.meshery.layer5.io_definition.json new file mode 100755 index 00000000..4d24e3b1 --- /dev/null +++ b/templates/oam/workloads/v0.5.0-rc.1/meshconfig.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "MeshConfig", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "meshconfig.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.openservicemesh.io/v1alpha1", + "k8sKind": "MeshConfig", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.5.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.5.0-rc.1/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.5.0-rc.1/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..60d4f7dd --- /dev/null +++ b/templates/oam/workloads/v0.5.0-rc.1/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "properties": { + "clusters": { + "description": "The clusters the service accounts are hosted on.", + "items": { + "properties": { + "address": { + "description": "a routable IP + port", + "pattern": "^(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3}):[0-9]+$", + "type": "string" + }, + "certificate": { + "description": "mTLS certificates (optional)", + "type": "string" + }, + "name": { + "description": "Name of the remote cluster", + "type": "string" + }, + "priority": { + "description": "Priority of the remote cluster in locality based load balancing", + "minimum": 0, + "type": "integer" + }, + "weight": { + "default": 0, + "description": "Load balancing weight of the remote cluster", + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "address", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "ports": { + "description": "The list of ports that are exposed by this service.", + "items": { + "properties": { + "port": { + "description": "The port that will be exposed by this service.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "default": "TCP", + "description": "The IP protocol for this port. Supports \"TCP\", \"UDP\", and \"SCTP\". Default is TCP.", + "enum": [ + "TCP", + "UDP", + "SCTP" + ], + "type": "string" + } + }, + "required": [ + "port", + "protocol" + ], + "type": "object" + }, + "type": "array" + }, + "serviceAccount": { + "type": "string" + } + }, + "required": [ + "serviceAccount", + "clusters" + ], + "title": "Multi Cluster Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.5.0-rc.1/multiclusterservice.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.5.0-rc.1/multiclusterservice.meshery.layer5.io_definition.json new file mode 100755 index 00000000..2e986da7 --- /dev/null +++ b/templates/oam/workloads/v0.5.0-rc.1/multiclusterservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "MultiClusterService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "multiclusterservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.openservicemesh.io/v1alpha1", + "k8sKind": "MultiClusterService", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.5.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.5.0-rc.1/tcproute.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.5.0-rc.1/tcproute.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..d0cc9bfe --- /dev/null +++ b/templates/oam/workloads/v0.5.0-rc.1/tcproute.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,25 @@ +{ + "properties": { + "matches": { + "description": "Match conditions of this route.", + "properties": { + "ports": { + "description": "Port numbers to match TCP traffic.", + "items": { + "type": "integer" + }, + "type": "array" + } + }, + "required": [ + "ports" + ], + "type": "object" + } + }, + "required": [ + "matches" + ], + "title": "TCP Route", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.5.0-rc.1/tcproute.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.5.0-rc.1/tcproute.meshery.layer5.io_definition.json new file mode 100755 index 00000000..20ff379d --- /dev/null +++ b/templates/oam/workloads/v0.5.0-rc.1/tcproute.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TCPRoute", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "tcproute.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "specs.smi-spec.io/v1alpha4", + "k8sKind": "TCPRoute", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.5.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.5.0-rc.1/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.5.0-rc.1/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..13f0a9a2 --- /dev/null +++ b/templates/oam/workloads/v0.5.0-rc.1/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,59 @@ +{ + "properties": { + "backends": { + "description": "The backend services of this split.", + "items": { + "properties": { + "service": { + "description": "Name of the Kubernetes service.", + "type": "string" + }, + "weight": { + "description": "Traffic weight value of this backend.", + "type": "number" + } + }, + "required": [ + "service", + "weight" + ], + "type": "object" + }, + "type": "array" + }, + "matches": { + "description": "The HTTP route groups that this traffic split should match.", + "items": { + "properties": { + "kind": { + "description": "Kind of the matching group.", + "enum": [ + "HTTPRouteGroup" + ], + "type": "string" + }, + "name": { + "description": "Name of the matching group.", + "type": "string" + } + }, + "required": [ + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "service": { + "description": "The apex service of this split.", + "type": "string" + } + }, + "required": [ + "service", + "backends" + ], + "title": "Traffic Split", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.5.0-rc.1/trafficsplit.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.5.0-rc.1/trafficsplit.meshery.layer5.io_definition.json new file mode 100755 index 00000000..5900a4a0 --- /dev/null +++ b/templates/oam/workloads/v0.5.0-rc.1/trafficsplit.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TrafficSplit", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "trafficsplit.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "split.smi-spec.io/v1alpha4", + "k8sKind": "TrafficSplit", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.5.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.5.0-rc.1/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.5.0-rc.1/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..83a24559 --- /dev/null +++ b/templates/oam/workloads/v0.5.0-rc.1/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,91 @@ +{ + "properties": { + "destination": { + "description": "The destination of this traffic target.", + "properties": { + "kind": { + "description": "Kind of the destination.", + "type": "string" + }, + "name": { + "description": "Name of the destination.", + "type": "string" + }, + "namespace": { + "description": "Namespace of the destination.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "rules": { + "description": "Specifications of this traffic target.", + "items": { + "properties": { + "kind": { + "description": "Kind of this spec.", + "enum": [ + "HTTPRouteGroup", + "TCPRoute", + "UDPRoute" + ], + "type": "string" + }, + "matches": { + "description": "Match conditions of this spec.", + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "Name of this spec.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources of this traffic target.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "destination", + "rules", + "sources" + ], + "title": "Traffic Target", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.5.0-rc.1/traffictarget.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.5.0-rc.1/traffictarget.meshery.layer5.io_definition.json new file mode 100755 index 00000000..baa1e5fa --- /dev/null +++ b/templates/oam/workloads/v0.5.0-rc.1/traffictarget.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TrafficTarget", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "traffictarget.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "access.smi-spec.io/v1alpha3", + "k8sKind": "TrafficTarget", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.5.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.5.0/egress.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.5.0/egress.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..c77de28d --- /dev/null +++ b/templates/oam/workloads/v0.5.0/egress.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,103 @@ +{ + "properties": { + "hosts": { + "description": "Hosts that the sources are allowed to direct external traffic to.", + "items": { + "type": "string" + }, + "type": "array" + }, + "ipAddresses": { + "description": "IP address ranges that the sources are allowed to direct external traffic to.", + "items": { + "pattern": "((?:\\d{1,3}\\.){3}\\d{1,3})\\/(\\d{1,2})$", + "type": "string" + }, + "type": "array" + }, + "matches": { + "description": "The resource references an Egress policy should match on.", + "items": { + "properties": { + "apiGroup": { + "description": "API group for the resource being referenced.", + "type": "string" + }, + "kind": { + "description": "Type of resource being referenced.", + "type": "string" + }, + "name": { + "description": "Name of resource being referenced.", + "type": "string" + } + }, + "required": [ + "apiGroup", + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "ports": { + "description": "Ports that the sources are allowed to direct external traffic to.", + "items": { + "properties": { + "number": { + "description": "Port number of this port.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "description": "Protocol served by this port.", + "type": "string" + } + }, + "required": [ + "number", + "protocol" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources the egress policy is applicable to.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "enum": [ + "ServiceAccount" + ], + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "kind", + "name", + "namespace" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "sources", + "ports" + ], + "title": "Egress", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.5.0/egress.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.5.0/egress.meshery.layer5.io_definition.json new file mode 100755 index 00000000..be7fea89 --- /dev/null +++ b/templates/oam/workloads/v0.5.0/egress.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Egress", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "egress.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "policy.openservicemesh.io/v1alpha1", + "k8sKind": "Egress", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.5.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.5.0/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.5.0/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..6951d46c --- /dev/null +++ b/templates/oam/workloads/v0.5.0/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,60 @@ +{ + "properties": { + "matches": { + "description": "Match conditions of this route group.", + "items": { + "properties": { + "headers": { + "description": "Header match conditions of this route.", + "items": { + "additionalProperties": { + "type": "string" + }, + "description": "Header match condition of this route.", + "type": "object" + }, + "type": "array" + }, + "methods": { + "description": "The HTTP methods of this HTTP route.", + "items": { + "description": "The HTTP method of this HTTP route.", + "enum": [ + "*", + "GET", + "HEAD", + "PUT", + "POST", + "DELETE", + "CONNECT", + "OPTIONS", + "TRACE", + "PATCH" + ], + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "Name of the HTTP route.", + "type": "string" + }, + "pathRegex": { + "description": "URI path regex of the HTTP route.", + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "matches" + ], + "title": "HTTP Route Group", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.5.0/httproutegroup.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.5.0/httproutegroup.meshery.layer5.io_definition.json new file mode 100755 index 00000000..5c5d9e6e --- /dev/null +++ b/templates/oam/workloads/v0.5.0/httproutegroup.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPRouteGroup", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httproutegroup.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "specs.smi-spec.io/v1alpha4", + "k8sKind": "HTTPRouteGroup", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.5.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.5.0/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.5.0/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..f5535897 --- /dev/null +++ b/templates/oam/workloads/v0.5.0/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,118 @@ +{ + "properties": { + "backends": { + "description": "Backends the IngressBackend policy is applicable to.", + "items": { + "properties": { + "name": { + "description": "Name of the backend.", + "type": "string" + }, + "port": { + "description": "Port of the backend.", + "properties": { + "number": { + "description": "Port number of this port.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "description": "Protocol served by this port.", + "type": "string" + } + }, + "required": [ + "number", + "protocol" + ], + "type": "object" + }, + "tls": { + "description": "TLS configuration for the backend.", + "properties": { + "skipClientCertValidation": { + "description": "Skip client certificate validation.", + "type": "boolean" + }, + "sniHosts": { + "description": "SNI hosts allowed by the backend.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "skipClientCertValidation" + ], + "type": "object" + } + }, + "required": [ + "name", + "port" + ], + "type": "object" + }, + "type": "array" + }, + "matches": { + "description": "The resource references an IngressBackend policy should match on.", + "items": { + "properties": { + "apiGroup": { + "description": "API group for the resource being referenced.", + "type": "string" + }, + "kind": { + "description": "Type of resource being referenced.", + "type": "string" + }, + "name": { + "description": "Name of resource being referenced.", + "type": "string" + } + }, + "required": [ + "apiGroup", + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources the IngressBackend policy is applicable to.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "backends", + "sources" + ], + "title": "Ingress Backend", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.5.0/ingressbackend.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.5.0/ingressbackend.meshery.layer5.io_definition.json new file mode 100755 index 00000000..684303f4 --- /dev/null +++ b/templates/oam/workloads/v0.5.0/ingressbackend.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "IngressBackend", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "ingressbackend.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "policy.openservicemesh.io/v1alpha1", + "k8sKind": "IngressBackend", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.5.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.5.0/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.5.0/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..b607634a --- /dev/null +++ b/templates/oam/workloads/v0.5.0/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,264 @@ +{ + "properties": { + "certificate": { + "description": "Configuration for certificate management", + "properties": { + "certKeyBitSize": { + "description": "Sets the certificate key bit size for data plane certificates.", + "type": "integer" + }, + "ingressGateway": { + "description": "Configuration for the ingress gateway's certificate", + "properties": { + "secret": { + "description": "Secret reference to store the certificate in", + "properties": { + "name": { + "description": "Name of the secret", + "type": "string" + }, + "namespace": { + "description": "Namespace of the secret", + "type": "string" + } + }, + "required": [ + "name", + "namespace" + ], + "type": "object" + }, + "subjectAltNames": { + "description": "Subject Alternative Names secured by the certificate", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "validityDuration": { + "description": "Certificate validity duration, represented as a sequence of decimal numbers each with optional fraction and a unit suffix", + "type": "string" + } + }, + "required": [ + "subjectAltNames", + "validityDuration", + "secret" + ], + "type": "object" + }, + "serviceCertValidityDuration": { + "description": "Sets the service certificate validity duration, represented as a sequence of decimal numbers each with optional fraction and a unit suffix.", + "type": "string" + } + }, + "required": [ + "serviceCertValidityDuration", + "certKeyBitSize" + ], + "type": "object" + }, + "featureFlags": { + "description": "OSM feature flags", + "properties": { + "enableAsyncProxyServiceMapping": { + "type": "boolean" + }, + "enableEgressPolicy": { + "type": "boolean" + }, + "enableEnvoyActiveHealthChecks": { + "type": "boolean" + }, + "enableIngressBackendPolicy": { + "type": "boolean" + }, + "enableMulticlusterMode": { + "type": "boolean" + }, + "enableRetryPolicy": { + "type": "boolean" + }, + "enableSnapshotCacheMode": { + "type": "boolean" + }, + "enableWASMStats": { + "type": "boolean" + } + }, + "type": "object" + }, + "observability": { + "description": "Configuration for observing the service mesh, including metrics, logs, tracing etc,.", + "properties": { + "enableDebugServer": { + "description": "Enables a debug endpoint on the osm-controller pod to list information regarding the mesh such as proxy connections, certificates, and SMI policies.", + "type": "boolean" + }, + "osmLogLevel": { + "description": "Allows setting OSM control plane log level at runtime", + "type": "string" + }, + "tracing": { + "description": "Configuration for distributed tracing", + "properties": { + "address": { + "description": "Address of Jaeger tracing deployment, if tracing is enabled.", + "type": "string" + }, + "enable": { + "description": "Enables Jaeger tracing for the mesh.", + "type": "boolean" + }, + "endpoint": { + "description": "Endpoint for tracing data, if tracing is enabled.", + "type": "string" + }, + "port": { + "description": "Port on which tracing is enabled.", + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "sidecar": { + "description": "Configuration for Envoy sidecar", + "properties": { + "configResyncInterval": { + "description": "Resync interval for regular proxy broadcast updates", + "type": "string" + }, + "enablePrivilegedInitContainer": { + "description": "Enables privileged init containers for pods in mesh. When false, init containers only have NET_ADMIN.", + "type": "boolean" + }, + "envoyImage": { + "description": "Image for the Envoy sidecar", + "type": "string" + }, + "envoyWindowsImage": { + "description": "Image for the Envoy sidecar on Windows workers", + "type": "string" + }, + "initContainerImage": { + "description": "Image for the init container", + "type": "string" + }, + "logLevel": { + "description": "Sets the logging verbosity of Envoy proxy sidecar, only applicable to newly created pods joining the mesh.", + "enum": [ + "trace", + "debug", + "info", + "warning", + "warn", + "error", + "critical", + "off" + ], + "type": "string" + }, + "maxDataPlaneConnections": { + "description": "Max allowed data plane sidecar connections", + "type": "integer" + }, + "resources": { + "properties": { + "limits": { + "additionalProperties": true, + "description": "Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/", + "type": "object" + }, + "requests": { + "additionalProperties": true, + "description": "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/", + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "traffic": { + "description": "Configuration for traffic management", + "properties": { + "enableEgress": { + "description": "Enables egress in the mesh", + "type": "boolean" + }, + "enablePermissiveTrafficPolicyMode": { + "description": "True for allowing traffic to flow between client and service pods within the mesh without SMI traffic policies, i.e. no traffic policy enforcement in the mesh. If set to false, enables deny-all traffic policy in mesh i.e. an SMI Traffic Target is necessary for services to communicate.", + "type": "boolean" + }, + "inboundExternalAuthorization": { + "description": "Configures external authorization for inbound and ingress connections.", + "properties": { + "address": { + "description": "Target destination endpoint that will handle external authorization.", + "type": "string" + }, + "enable": { + "description": "Enables/disables the inbound external authorization policy if present.", + "type": "boolean" + }, + "failureModeAllow": { + "description": "Allows specifying if traffic should succeed or fail if the external authorization endpoint fails to respond.", + "type": "boolean" + }, + "port": { + "description": "Remote destination port for the external authorization endpoint.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "statPrefix": { + "default": "inboundExtAuthz", + "description": "String prefix for inbound external authorization related metrics.", + "type": "string" + }, + "timeout": { + "default": "1s", + "description": "Defines the timeout to consider for the remote endpoint to reply in time.", + "type": "string" + } + }, + "type": "object" + }, + "inboundPortExclusionList": { + "description": "Global list of ports to exclude from inbound traffic interception by the sidecar proxy.", + "items": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "type": "array" + }, + "outboundIPRangeExclusionList": { + "description": "Global list of IP address ranges to exclude from outbound traffic interception by the sidecar proxy.", + "items": { + "pattern": "((?:\\d{1,3}\\.){3}\\d{1,3})\\/(\\d{1,2})$", + "type": "string" + }, + "type": "array" + }, + "outboundPortExclusionList": { + "description": "Global list of ports to exclude from outbound traffic interception by the sidecar proxy.", + "items": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "title": "Mesh Config", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.5.0/meshconfig.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.5.0/meshconfig.meshery.layer5.io_definition.json new file mode 100755 index 00000000..e1a91d59 --- /dev/null +++ b/templates/oam/workloads/v0.5.0/meshconfig.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "MeshConfig", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "meshconfig.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.openservicemesh.io/v1alpha1", + "k8sKind": "MeshConfig", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.5.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.5.0/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.5.0/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..60d4f7dd --- /dev/null +++ b/templates/oam/workloads/v0.5.0/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "properties": { + "clusters": { + "description": "The clusters the service accounts are hosted on.", + "items": { + "properties": { + "address": { + "description": "a routable IP + port", + "pattern": "^(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3}):[0-9]+$", + "type": "string" + }, + "certificate": { + "description": "mTLS certificates (optional)", + "type": "string" + }, + "name": { + "description": "Name of the remote cluster", + "type": "string" + }, + "priority": { + "description": "Priority of the remote cluster in locality based load balancing", + "minimum": 0, + "type": "integer" + }, + "weight": { + "default": 0, + "description": "Load balancing weight of the remote cluster", + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "address", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "ports": { + "description": "The list of ports that are exposed by this service.", + "items": { + "properties": { + "port": { + "description": "The port that will be exposed by this service.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "default": "TCP", + "description": "The IP protocol for this port. Supports \"TCP\", \"UDP\", and \"SCTP\". Default is TCP.", + "enum": [ + "TCP", + "UDP", + "SCTP" + ], + "type": "string" + } + }, + "required": [ + "port", + "protocol" + ], + "type": "object" + }, + "type": "array" + }, + "serviceAccount": { + "type": "string" + } + }, + "required": [ + "serviceAccount", + "clusters" + ], + "title": "Multi Cluster Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.5.0/multiclusterservice.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.5.0/multiclusterservice.meshery.layer5.io_definition.json new file mode 100755 index 00000000..0fdea042 --- /dev/null +++ b/templates/oam/workloads/v0.5.0/multiclusterservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "MultiClusterService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "multiclusterservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.openservicemesh.io/v1alpha1", + "k8sKind": "MultiClusterService", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.5.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.5.0/tcproute.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.5.0/tcproute.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..d0cc9bfe --- /dev/null +++ b/templates/oam/workloads/v0.5.0/tcproute.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,25 @@ +{ + "properties": { + "matches": { + "description": "Match conditions of this route.", + "properties": { + "ports": { + "description": "Port numbers to match TCP traffic.", + "items": { + "type": "integer" + }, + "type": "array" + } + }, + "required": [ + "ports" + ], + "type": "object" + } + }, + "required": [ + "matches" + ], + "title": "TCP Route", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.5.0/tcproute.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.5.0/tcproute.meshery.layer5.io_definition.json new file mode 100755 index 00000000..bdc0c22f --- /dev/null +++ b/templates/oam/workloads/v0.5.0/tcproute.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TCPRoute", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "tcproute.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "specs.smi-spec.io/v1alpha4", + "k8sKind": "TCPRoute", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.5.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.5.0/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.5.0/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..13f0a9a2 --- /dev/null +++ b/templates/oam/workloads/v0.5.0/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,59 @@ +{ + "properties": { + "backends": { + "description": "The backend services of this split.", + "items": { + "properties": { + "service": { + "description": "Name of the Kubernetes service.", + "type": "string" + }, + "weight": { + "description": "Traffic weight value of this backend.", + "type": "number" + } + }, + "required": [ + "service", + "weight" + ], + "type": "object" + }, + "type": "array" + }, + "matches": { + "description": "The HTTP route groups that this traffic split should match.", + "items": { + "properties": { + "kind": { + "description": "Kind of the matching group.", + "enum": [ + "HTTPRouteGroup" + ], + "type": "string" + }, + "name": { + "description": "Name of the matching group.", + "type": "string" + } + }, + "required": [ + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "service": { + "description": "The apex service of this split.", + "type": "string" + } + }, + "required": [ + "service", + "backends" + ], + "title": "Traffic Split", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.5.0/trafficsplit.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.5.0/trafficsplit.meshery.layer5.io_definition.json new file mode 100755 index 00000000..a7843639 --- /dev/null +++ b/templates/oam/workloads/v0.5.0/trafficsplit.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TrafficSplit", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "trafficsplit.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "split.smi-spec.io/v1alpha4", + "k8sKind": "TrafficSplit", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.5.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.5.0/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.5.0/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..83a24559 --- /dev/null +++ b/templates/oam/workloads/v0.5.0/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,91 @@ +{ + "properties": { + "destination": { + "description": "The destination of this traffic target.", + "properties": { + "kind": { + "description": "Kind of the destination.", + "type": "string" + }, + "name": { + "description": "Name of the destination.", + "type": "string" + }, + "namespace": { + "description": "Namespace of the destination.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "rules": { + "description": "Specifications of this traffic target.", + "items": { + "properties": { + "kind": { + "description": "Kind of this spec.", + "enum": [ + "HTTPRouteGroup", + "TCPRoute", + "UDPRoute" + ], + "type": "string" + }, + "matches": { + "description": "Match conditions of this spec.", + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "Name of this spec.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources of this traffic target.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "destination", + "rules", + "sources" + ], + "title": "Traffic Target", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.5.0/traffictarget.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.5.0/traffictarget.meshery.layer5.io_definition.json new file mode 100755 index 00000000..e3da02c9 --- /dev/null +++ b/templates/oam/workloads/v0.5.0/traffictarget.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TrafficTarget", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "traffictarget.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "access.smi-spec.io/v1alpha3", + "k8sKind": "TrafficTarget", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.5.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.6.0-rc.1/egress.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.6.0-rc.1/egress.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..c77de28d --- /dev/null +++ b/templates/oam/workloads/v0.6.0-rc.1/egress.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,103 @@ +{ + "properties": { + "hosts": { + "description": "Hosts that the sources are allowed to direct external traffic to.", + "items": { + "type": "string" + }, + "type": "array" + }, + "ipAddresses": { + "description": "IP address ranges that the sources are allowed to direct external traffic to.", + "items": { + "pattern": "((?:\\d{1,3}\\.){3}\\d{1,3})\\/(\\d{1,2})$", + "type": "string" + }, + "type": "array" + }, + "matches": { + "description": "The resource references an Egress policy should match on.", + "items": { + "properties": { + "apiGroup": { + "description": "API group for the resource being referenced.", + "type": "string" + }, + "kind": { + "description": "Type of resource being referenced.", + "type": "string" + }, + "name": { + "description": "Name of resource being referenced.", + "type": "string" + } + }, + "required": [ + "apiGroup", + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "ports": { + "description": "Ports that the sources are allowed to direct external traffic to.", + "items": { + "properties": { + "number": { + "description": "Port number of this port.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "description": "Protocol served by this port.", + "type": "string" + } + }, + "required": [ + "number", + "protocol" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources the egress policy is applicable to.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "enum": [ + "ServiceAccount" + ], + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "kind", + "name", + "namespace" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "sources", + "ports" + ], + "title": "Egress", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.6.0-rc.1/egress.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.6.0-rc.1/egress.meshery.layer5.io_definition.json new file mode 100755 index 00000000..76e854d5 --- /dev/null +++ b/templates/oam/workloads/v0.6.0-rc.1/egress.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Egress", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "egress.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "policy.openservicemesh.io/v1alpha1", + "k8sKind": "Egress", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.6.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.6.0-rc.1/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.6.0-rc.1/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..6951d46c --- /dev/null +++ b/templates/oam/workloads/v0.6.0-rc.1/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,60 @@ +{ + "properties": { + "matches": { + "description": "Match conditions of this route group.", + "items": { + "properties": { + "headers": { + "description": "Header match conditions of this route.", + "items": { + "additionalProperties": { + "type": "string" + }, + "description": "Header match condition of this route.", + "type": "object" + }, + "type": "array" + }, + "methods": { + "description": "The HTTP methods of this HTTP route.", + "items": { + "description": "The HTTP method of this HTTP route.", + "enum": [ + "*", + "GET", + "HEAD", + "PUT", + "POST", + "DELETE", + "CONNECT", + "OPTIONS", + "TRACE", + "PATCH" + ], + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "Name of the HTTP route.", + "type": "string" + }, + "pathRegex": { + "description": "URI path regex of the HTTP route.", + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "matches" + ], + "title": "HTTP Route Group", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.6.0-rc.1/httproutegroup.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.6.0-rc.1/httproutegroup.meshery.layer5.io_definition.json new file mode 100755 index 00000000..69c2a3a8 --- /dev/null +++ b/templates/oam/workloads/v0.6.0-rc.1/httproutegroup.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPRouteGroup", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httproutegroup.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "specs.smi-spec.io/v1alpha4", + "k8sKind": "HTTPRouteGroup", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.6.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.6.0-rc.1/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.6.0-rc.1/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..f5535897 --- /dev/null +++ b/templates/oam/workloads/v0.6.0-rc.1/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,118 @@ +{ + "properties": { + "backends": { + "description": "Backends the IngressBackend policy is applicable to.", + "items": { + "properties": { + "name": { + "description": "Name of the backend.", + "type": "string" + }, + "port": { + "description": "Port of the backend.", + "properties": { + "number": { + "description": "Port number of this port.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "description": "Protocol served by this port.", + "type": "string" + } + }, + "required": [ + "number", + "protocol" + ], + "type": "object" + }, + "tls": { + "description": "TLS configuration for the backend.", + "properties": { + "skipClientCertValidation": { + "description": "Skip client certificate validation.", + "type": "boolean" + }, + "sniHosts": { + "description": "SNI hosts allowed by the backend.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "skipClientCertValidation" + ], + "type": "object" + } + }, + "required": [ + "name", + "port" + ], + "type": "object" + }, + "type": "array" + }, + "matches": { + "description": "The resource references an IngressBackend policy should match on.", + "items": { + "properties": { + "apiGroup": { + "description": "API group for the resource being referenced.", + "type": "string" + }, + "kind": { + "description": "Type of resource being referenced.", + "type": "string" + }, + "name": { + "description": "Name of resource being referenced.", + "type": "string" + } + }, + "required": [ + "apiGroup", + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources the IngressBackend policy is applicable to.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "backends", + "sources" + ], + "title": "Ingress Backend", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.6.0-rc.1/ingressbackend.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.6.0-rc.1/ingressbackend.meshery.layer5.io_definition.json new file mode 100755 index 00000000..442c6062 --- /dev/null +++ b/templates/oam/workloads/v0.6.0-rc.1/ingressbackend.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "IngressBackend", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "ingressbackend.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "policy.openservicemesh.io/v1alpha1", + "k8sKind": "IngressBackend", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.6.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.6.0-rc.1/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.6.0-rc.1/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..b607634a --- /dev/null +++ b/templates/oam/workloads/v0.6.0-rc.1/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,264 @@ +{ + "properties": { + "certificate": { + "description": "Configuration for certificate management", + "properties": { + "certKeyBitSize": { + "description": "Sets the certificate key bit size for data plane certificates.", + "type": "integer" + }, + "ingressGateway": { + "description": "Configuration for the ingress gateway's certificate", + "properties": { + "secret": { + "description": "Secret reference to store the certificate in", + "properties": { + "name": { + "description": "Name of the secret", + "type": "string" + }, + "namespace": { + "description": "Namespace of the secret", + "type": "string" + } + }, + "required": [ + "name", + "namespace" + ], + "type": "object" + }, + "subjectAltNames": { + "description": "Subject Alternative Names secured by the certificate", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "validityDuration": { + "description": "Certificate validity duration, represented as a sequence of decimal numbers each with optional fraction and a unit suffix", + "type": "string" + } + }, + "required": [ + "subjectAltNames", + "validityDuration", + "secret" + ], + "type": "object" + }, + "serviceCertValidityDuration": { + "description": "Sets the service certificate validity duration, represented as a sequence of decimal numbers each with optional fraction and a unit suffix.", + "type": "string" + } + }, + "required": [ + "serviceCertValidityDuration", + "certKeyBitSize" + ], + "type": "object" + }, + "featureFlags": { + "description": "OSM feature flags", + "properties": { + "enableAsyncProxyServiceMapping": { + "type": "boolean" + }, + "enableEgressPolicy": { + "type": "boolean" + }, + "enableEnvoyActiveHealthChecks": { + "type": "boolean" + }, + "enableIngressBackendPolicy": { + "type": "boolean" + }, + "enableMulticlusterMode": { + "type": "boolean" + }, + "enableRetryPolicy": { + "type": "boolean" + }, + "enableSnapshotCacheMode": { + "type": "boolean" + }, + "enableWASMStats": { + "type": "boolean" + } + }, + "type": "object" + }, + "observability": { + "description": "Configuration for observing the service mesh, including metrics, logs, tracing etc,.", + "properties": { + "enableDebugServer": { + "description": "Enables a debug endpoint on the osm-controller pod to list information regarding the mesh such as proxy connections, certificates, and SMI policies.", + "type": "boolean" + }, + "osmLogLevel": { + "description": "Allows setting OSM control plane log level at runtime", + "type": "string" + }, + "tracing": { + "description": "Configuration for distributed tracing", + "properties": { + "address": { + "description": "Address of Jaeger tracing deployment, if tracing is enabled.", + "type": "string" + }, + "enable": { + "description": "Enables Jaeger tracing for the mesh.", + "type": "boolean" + }, + "endpoint": { + "description": "Endpoint for tracing data, if tracing is enabled.", + "type": "string" + }, + "port": { + "description": "Port on which tracing is enabled.", + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "sidecar": { + "description": "Configuration for Envoy sidecar", + "properties": { + "configResyncInterval": { + "description": "Resync interval for regular proxy broadcast updates", + "type": "string" + }, + "enablePrivilegedInitContainer": { + "description": "Enables privileged init containers for pods in mesh. When false, init containers only have NET_ADMIN.", + "type": "boolean" + }, + "envoyImage": { + "description": "Image for the Envoy sidecar", + "type": "string" + }, + "envoyWindowsImage": { + "description": "Image for the Envoy sidecar on Windows workers", + "type": "string" + }, + "initContainerImage": { + "description": "Image for the init container", + "type": "string" + }, + "logLevel": { + "description": "Sets the logging verbosity of Envoy proxy sidecar, only applicable to newly created pods joining the mesh.", + "enum": [ + "trace", + "debug", + "info", + "warning", + "warn", + "error", + "critical", + "off" + ], + "type": "string" + }, + "maxDataPlaneConnections": { + "description": "Max allowed data plane sidecar connections", + "type": "integer" + }, + "resources": { + "properties": { + "limits": { + "additionalProperties": true, + "description": "Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/", + "type": "object" + }, + "requests": { + "additionalProperties": true, + "description": "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/", + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "traffic": { + "description": "Configuration for traffic management", + "properties": { + "enableEgress": { + "description": "Enables egress in the mesh", + "type": "boolean" + }, + "enablePermissiveTrafficPolicyMode": { + "description": "True for allowing traffic to flow between client and service pods within the mesh without SMI traffic policies, i.e. no traffic policy enforcement in the mesh. If set to false, enables deny-all traffic policy in mesh i.e. an SMI Traffic Target is necessary for services to communicate.", + "type": "boolean" + }, + "inboundExternalAuthorization": { + "description": "Configures external authorization for inbound and ingress connections.", + "properties": { + "address": { + "description": "Target destination endpoint that will handle external authorization.", + "type": "string" + }, + "enable": { + "description": "Enables/disables the inbound external authorization policy if present.", + "type": "boolean" + }, + "failureModeAllow": { + "description": "Allows specifying if traffic should succeed or fail if the external authorization endpoint fails to respond.", + "type": "boolean" + }, + "port": { + "description": "Remote destination port for the external authorization endpoint.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "statPrefix": { + "default": "inboundExtAuthz", + "description": "String prefix for inbound external authorization related metrics.", + "type": "string" + }, + "timeout": { + "default": "1s", + "description": "Defines the timeout to consider for the remote endpoint to reply in time.", + "type": "string" + } + }, + "type": "object" + }, + "inboundPortExclusionList": { + "description": "Global list of ports to exclude from inbound traffic interception by the sidecar proxy.", + "items": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "type": "array" + }, + "outboundIPRangeExclusionList": { + "description": "Global list of IP address ranges to exclude from outbound traffic interception by the sidecar proxy.", + "items": { + "pattern": "((?:\\d{1,3}\\.){3}\\d{1,3})\\/(\\d{1,2})$", + "type": "string" + }, + "type": "array" + }, + "outboundPortExclusionList": { + "description": "Global list of ports to exclude from outbound traffic interception by the sidecar proxy.", + "items": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "title": "Mesh Config", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.6.0-rc.1/meshconfig.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.6.0-rc.1/meshconfig.meshery.layer5.io_definition.json new file mode 100755 index 00000000..a6597b7f --- /dev/null +++ b/templates/oam/workloads/v0.6.0-rc.1/meshconfig.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "MeshConfig", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "meshconfig.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.openservicemesh.io/v1alpha1", + "k8sKind": "MeshConfig", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.6.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.6.0-rc.1/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.6.0-rc.1/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..60d4f7dd --- /dev/null +++ b/templates/oam/workloads/v0.6.0-rc.1/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "properties": { + "clusters": { + "description": "The clusters the service accounts are hosted on.", + "items": { + "properties": { + "address": { + "description": "a routable IP + port", + "pattern": "^(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3}):[0-9]+$", + "type": "string" + }, + "certificate": { + "description": "mTLS certificates (optional)", + "type": "string" + }, + "name": { + "description": "Name of the remote cluster", + "type": "string" + }, + "priority": { + "description": "Priority of the remote cluster in locality based load balancing", + "minimum": 0, + "type": "integer" + }, + "weight": { + "default": 0, + "description": "Load balancing weight of the remote cluster", + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "address", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "ports": { + "description": "The list of ports that are exposed by this service.", + "items": { + "properties": { + "port": { + "description": "The port that will be exposed by this service.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "default": "TCP", + "description": "The IP protocol for this port. Supports \"TCP\", \"UDP\", and \"SCTP\". Default is TCP.", + "enum": [ + "TCP", + "UDP", + "SCTP" + ], + "type": "string" + } + }, + "required": [ + "port", + "protocol" + ], + "type": "object" + }, + "type": "array" + }, + "serviceAccount": { + "type": "string" + } + }, + "required": [ + "serviceAccount", + "clusters" + ], + "title": "Multi Cluster Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.6.0-rc.1/multiclusterservice.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.6.0-rc.1/multiclusterservice.meshery.layer5.io_definition.json new file mode 100755 index 00000000..43852ed5 --- /dev/null +++ b/templates/oam/workloads/v0.6.0-rc.1/multiclusterservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "MultiClusterService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "multiclusterservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.openservicemesh.io/v1alpha1", + "k8sKind": "MultiClusterService", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.6.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.6.0-rc.1/tcproute.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.6.0-rc.1/tcproute.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..d0cc9bfe --- /dev/null +++ b/templates/oam/workloads/v0.6.0-rc.1/tcproute.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,25 @@ +{ + "properties": { + "matches": { + "description": "Match conditions of this route.", + "properties": { + "ports": { + "description": "Port numbers to match TCP traffic.", + "items": { + "type": "integer" + }, + "type": "array" + } + }, + "required": [ + "ports" + ], + "type": "object" + } + }, + "required": [ + "matches" + ], + "title": "TCP Route", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.6.0-rc.1/tcproute.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.6.0-rc.1/tcproute.meshery.layer5.io_definition.json new file mode 100755 index 00000000..33f6cda9 --- /dev/null +++ b/templates/oam/workloads/v0.6.0-rc.1/tcproute.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TCPRoute", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "tcproute.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "specs.smi-spec.io/v1alpha4", + "k8sKind": "TCPRoute", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.6.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.6.0-rc.1/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.6.0-rc.1/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..13f0a9a2 --- /dev/null +++ b/templates/oam/workloads/v0.6.0-rc.1/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,59 @@ +{ + "properties": { + "backends": { + "description": "The backend services of this split.", + "items": { + "properties": { + "service": { + "description": "Name of the Kubernetes service.", + "type": "string" + }, + "weight": { + "description": "Traffic weight value of this backend.", + "type": "number" + } + }, + "required": [ + "service", + "weight" + ], + "type": "object" + }, + "type": "array" + }, + "matches": { + "description": "The HTTP route groups that this traffic split should match.", + "items": { + "properties": { + "kind": { + "description": "Kind of the matching group.", + "enum": [ + "HTTPRouteGroup" + ], + "type": "string" + }, + "name": { + "description": "Name of the matching group.", + "type": "string" + } + }, + "required": [ + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "service": { + "description": "The apex service of this split.", + "type": "string" + } + }, + "required": [ + "service", + "backends" + ], + "title": "Traffic Split", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.6.0-rc.1/trafficsplit.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.6.0-rc.1/trafficsplit.meshery.layer5.io_definition.json new file mode 100755 index 00000000..20e1e1f9 --- /dev/null +++ b/templates/oam/workloads/v0.6.0-rc.1/trafficsplit.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TrafficSplit", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "trafficsplit.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "split.smi-spec.io/v1alpha4", + "k8sKind": "TrafficSplit", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.6.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.6.0-rc.1/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.6.0-rc.1/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..83a24559 --- /dev/null +++ b/templates/oam/workloads/v0.6.0-rc.1/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,91 @@ +{ + "properties": { + "destination": { + "description": "The destination of this traffic target.", + "properties": { + "kind": { + "description": "Kind of the destination.", + "type": "string" + }, + "name": { + "description": "Name of the destination.", + "type": "string" + }, + "namespace": { + "description": "Namespace of the destination.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "rules": { + "description": "Specifications of this traffic target.", + "items": { + "properties": { + "kind": { + "description": "Kind of this spec.", + "enum": [ + "HTTPRouteGroup", + "TCPRoute", + "UDPRoute" + ], + "type": "string" + }, + "matches": { + "description": "Match conditions of this spec.", + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "Name of this spec.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources of this traffic target.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "destination", + "rules", + "sources" + ], + "title": "Traffic Target", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.6.0-rc.1/traffictarget.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.6.0-rc.1/traffictarget.meshery.layer5.io_definition.json new file mode 100755 index 00000000..b0497939 --- /dev/null +++ b/templates/oam/workloads/v0.6.0-rc.1/traffictarget.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TrafficTarget", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "traffictarget.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "access.smi-spec.io/v1alpha3", + "k8sKind": "TrafficTarget", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.6.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.6.0/egress.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.6.0/egress.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..c77de28d --- /dev/null +++ b/templates/oam/workloads/v0.6.0/egress.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,103 @@ +{ + "properties": { + "hosts": { + "description": "Hosts that the sources are allowed to direct external traffic to.", + "items": { + "type": "string" + }, + "type": "array" + }, + "ipAddresses": { + "description": "IP address ranges that the sources are allowed to direct external traffic to.", + "items": { + "pattern": "((?:\\d{1,3}\\.){3}\\d{1,3})\\/(\\d{1,2})$", + "type": "string" + }, + "type": "array" + }, + "matches": { + "description": "The resource references an Egress policy should match on.", + "items": { + "properties": { + "apiGroup": { + "description": "API group for the resource being referenced.", + "type": "string" + }, + "kind": { + "description": "Type of resource being referenced.", + "type": "string" + }, + "name": { + "description": "Name of resource being referenced.", + "type": "string" + } + }, + "required": [ + "apiGroup", + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "ports": { + "description": "Ports that the sources are allowed to direct external traffic to.", + "items": { + "properties": { + "number": { + "description": "Port number of this port.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "description": "Protocol served by this port.", + "type": "string" + } + }, + "required": [ + "number", + "protocol" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources the egress policy is applicable to.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "enum": [ + "ServiceAccount" + ], + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "kind", + "name", + "namespace" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "sources", + "ports" + ], + "title": "Egress", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.6.0/egress.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.6.0/egress.meshery.layer5.io_definition.json new file mode 100755 index 00000000..9312344f --- /dev/null +++ b/templates/oam/workloads/v0.6.0/egress.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Egress", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "egress.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "policy.openservicemesh.io/v1alpha1", + "k8sKind": "Egress", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.6.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.6.0/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.6.0/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..6951d46c --- /dev/null +++ b/templates/oam/workloads/v0.6.0/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,60 @@ +{ + "properties": { + "matches": { + "description": "Match conditions of this route group.", + "items": { + "properties": { + "headers": { + "description": "Header match conditions of this route.", + "items": { + "additionalProperties": { + "type": "string" + }, + "description": "Header match condition of this route.", + "type": "object" + }, + "type": "array" + }, + "methods": { + "description": "The HTTP methods of this HTTP route.", + "items": { + "description": "The HTTP method of this HTTP route.", + "enum": [ + "*", + "GET", + "HEAD", + "PUT", + "POST", + "DELETE", + "CONNECT", + "OPTIONS", + "TRACE", + "PATCH" + ], + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "Name of the HTTP route.", + "type": "string" + }, + "pathRegex": { + "description": "URI path regex of the HTTP route.", + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "matches" + ], + "title": "HTTP Route Group", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.6.0/httproutegroup.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.6.0/httproutegroup.meshery.layer5.io_definition.json new file mode 100755 index 00000000..2dc02425 --- /dev/null +++ b/templates/oam/workloads/v0.6.0/httproutegroup.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPRouteGroup", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httproutegroup.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "specs.smi-spec.io/v1alpha4", + "k8sKind": "HTTPRouteGroup", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.6.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.6.0/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.6.0/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..f5535897 --- /dev/null +++ b/templates/oam/workloads/v0.6.0/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,118 @@ +{ + "properties": { + "backends": { + "description": "Backends the IngressBackend policy is applicable to.", + "items": { + "properties": { + "name": { + "description": "Name of the backend.", + "type": "string" + }, + "port": { + "description": "Port of the backend.", + "properties": { + "number": { + "description": "Port number of this port.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "description": "Protocol served by this port.", + "type": "string" + } + }, + "required": [ + "number", + "protocol" + ], + "type": "object" + }, + "tls": { + "description": "TLS configuration for the backend.", + "properties": { + "skipClientCertValidation": { + "description": "Skip client certificate validation.", + "type": "boolean" + }, + "sniHosts": { + "description": "SNI hosts allowed by the backend.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "skipClientCertValidation" + ], + "type": "object" + } + }, + "required": [ + "name", + "port" + ], + "type": "object" + }, + "type": "array" + }, + "matches": { + "description": "The resource references an IngressBackend policy should match on.", + "items": { + "properties": { + "apiGroup": { + "description": "API group for the resource being referenced.", + "type": "string" + }, + "kind": { + "description": "Type of resource being referenced.", + "type": "string" + }, + "name": { + "description": "Name of resource being referenced.", + "type": "string" + } + }, + "required": [ + "apiGroup", + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources the IngressBackend policy is applicable to.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "backends", + "sources" + ], + "title": "Ingress Backend", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.6.0/ingressbackend.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.6.0/ingressbackend.meshery.layer5.io_definition.json new file mode 100755 index 00000000..fdeca83e --- /dev/null +++ b/templates/oam/workloads/v0.6.0/ingressbackend.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "IngressBackend", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "ingressbackend.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "policy.openservicemesh.io/v1alpha1", + "k8sKind": "IngressBackend", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.6.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.6.0/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.6.0/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..b607634a --- /dev/null +++ b/templates/oam/workloads/v0.6.0/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,264 @@ +{ + "properties": { + "certificate": { + "description": "Configuration for certificate management", + "properties": { + "certKeyBitSize": { + "description": "Sets the certificate key bit size for data plane certificates.", + "type": "integer" + }, + "ingressGateway": { + "description": "Configuration for the ingress gateway's certificate", + "properties": { + "secret": { + "description": "Secret reference to store the certificate in", + "properties": { + "name": { + "description": "Name of the secret", + "type": "string" + }, + "namespace": { + "description": "Namespace of the secret", + "type": "string" + } + }, + "required": [ + "name", + "namespace" + ], + "type": "object" + }, + "subjectAltNames": { + "description": "Subject Alternative Names secured by the certificate", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "validityDuration": { + "description": "Certificate validity duration, represented as a sequence of decimal numbers each with optional fraction and a unit suffix", + "type": "string" + } + }, + "required": [ + "subjectAltNames", + "validityDuration", + "secret" + ], + "type": "object" + }, + "serviceCertValidityDuration": { + "description": "Sets the service certificate validity duration, represented as a sequence of decimal numbers each with optional fraction and a unit suffix.", + "type": "string" + } + }, + "required": [ + "serviceCertValidityDuration", + "certKeyBitSize" + ], + "type": "object" + }, + "featureFlags": { + "description": "OSM feature flags", + "properties": { + "enableAsyncProxyServiceMapping": { + "type": "boolean" + }, + "enableEgressPolicy": { + "type": "boolean" + }, + "enableEnvoyActiveHealthChecks": { + "type": "boolean" + }, + "enableIngressBackendPolicy": { + "type": "boolean" + }, + "enableMulticlusterMode": { + "type": "boolean" + }, + "enableRetryPolicy": { + "type": "boolean" + }, + "enableSnapshotCacheMode": { + "type": "boolean" + }, + "enableWASMStats": { + "type": "boolean" + } + }, + "type": "object" + }, + "observability": { + "description": "Configuration for observing the service mesh, including metrics, logs, tracing etc,.", + "properties": { + "enableDebugServer": { + "description": "Enables a debug endpoint on the osm-controller pod to list information regarding the mesh such as proxy connections, certificates, and SMI policies.", + "type": "boolean" + }, + "osmLogLevel": { + "description": "Allows setting OSM control plane log level at runtime", + "type": "string" + }, + "tracing": { + "description": "Configuration for distributed tracing", + "properties": { + "address": { + "description": "Address of Jaeger tracing deployment, if tracing is enabled.", + "type": "string" + }, + "enable": { + "description": "Enables Jaeger tracing for the mesh.", + "type": "boolean" + }, + "endpoint": { + "description": "Endpoint for tracing data, if tracing is enabled.", + "type": "string" + }, + "port": { + "description": "Port on which tracing is enabled.", + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "sidecar": { + "description": "Configuration for Envoy sidecar", + "properties": { + "configResyncInterval": { + "description": "Resync interval for regular proxy broadcast updates", + "type": "string" + }, + "enablePrivilegedInitContainer": { + "description": "Enables privileged init containers for pods in mesh. When false, init containers only have NET_ADMIN.", + "type": "boolean" + }, + "envoyImage": { + "description": "Image for the Envoy sidecar", + "type": "string" + }, + "envoyWindowsImage": { + "description": "Image for the Envoy sidecar on Windows workers", + "type": "string" + }, + "initContainerImage": { + "description": "Image for the init container", + "type": "string" + }, + "logLevel": { + "description": "Sets the logging verbosity of Envoy proxy sidecar, only applicable to newly created pods joining the mesh.", + "enum": [ + "trace", + "debug", + "info", + "warning", + "warn", + "error", + "critical", + "off" + ], + "type": "string" + }, + "maxDataPlaneConnections": { + "description": "Max allowed data plane sidecar connections", + "type": "integer" + }, + "resources": { + "properties": { + "limits": { + "additionalProperties": true, + "description": "Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/", + "type": "object" + }, + "requests": { + "additionalProperties": true, + "description": "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/", + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "traffic": { + "description": "Configuration for traffic management", + "properties": { + "enableEgress": { + "description": "Enables egress in the mesh", + "type": "boolean" + }, + "enablePermissiveTrafficPolicyMode": { + "description": "True for allowing traffic to flow between client and service pods within the mesh without SMI traffic policies, i.e. no traffic policy enforcement in the mesh. If set to false, enables deny-all traffic policy in mesh i.e. an SMI Traffic Target is necessary for services to communicate.", + "type": "boolean" + }, + "inboundExternalAuthorization": { + "description": "Configures external authorization for inbound and ingress connections.", + "properties": { + "address": { + "description": "Target destination endpoint that will handle external authorization.", + "type": "string" + }, + "enable": { + "description": "Enables/disables the inbound external authorization policy if present.", + "type": "boolean" + }, + "failureModeAllow": { + "description": "Allows specifying if traffic should succeed or fail if the external authorization endpoint fails to respond.", + "type": "boolean" + }, + "port": { + "description": "Remote destination port for the external authorization endpoint.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "statPrefix": { + "default": "inboundExtAuthz", + "description": "String prefix for inbound external authorization related metrics.", + "type": "string" + }, + "timeout": { + "default": "1s", + "description": "Defines the timeout to consider for the remote endpoint to reply in time.", + "type": "string" + } + }, + "type": "object" + }, + "inboundPortExclusionList": { + "description": "Global list of ports to exclude from inbound traffic interception by the sidecar proxy.", + "items": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "type": "array" + }, + "outboundIPRangeExclusionList": { + "description": "Global list of IP address ranges to exclude from outbound traffic interception by the sidecar proxy.", + "items": { + "pattern": "((?:\\d{1,3}\\.){3}\\d{1,3})\\/(\\d{1,2})$", + "type": "string" + }, + "type": "array" + }, + "outboundPortExclusionList": { + "description": "Global list of ports to exclude from outbound traffic interception by the sidecar proxy.", + "items": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "title": "Mesh Config", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.6.0/meshconfig.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.6.0/meshconfig.meshery.layer5.io_definition.json new file mode 100755 index 00000000..ee357abb --- /dev/null +++ b/templates/oam/workloads/v0.6.0/meshconfig.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "MeshConfig", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "meshconfig.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.openservicemesh.io/v1alpha1", + "k8sKind": "MeshConfig", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.6.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.6.0/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.6.0/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..60d4f7dd --- /dev/null +++ b/templates/oam/workloads/v0.6.0/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "properties": { + "clusters": { + "description": "The clusters the service accounts are hosted on.", + "items": { + "properties": { + "address": { + "description": "a routable IP + port", + "pattern": "^(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3}):[0-9]+$", + "type": "string" + }, + "certificate": { + "description": "mTLS certificates (optional)", + "type": "string" + }, + "name": { + "description": "Name of the remote cluster", + "type": "string" + }, + "priority": { + "description": "Priority of the remote cluster in locality based load balancing", + "minimum": 0, + "type": "integer" + }, + "weight": { + "default": 0, + "description": "Load balancing weight of the remote cluster", + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "address", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "ports": { + "description": "The list of ports that are exposed by this service.", + "items": { + "properties": { + "port": { + "description": "The port that will be exposed by this service.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "default": "TCP", + "description": "The IP protocol for this port. Supports \"TCP\", \"UDP\", and \"SCTP\". Default is TCP.", + "enum": [ + "TCP", + "UDP", + "SCTP" + ], + "type": "string" + } + }, + "required": [ + "port", + "protocol" + ], + "type": "object" + }, + "type": "array" + }, + "serviceAccount": { + "type": "string" + } + }, + "required": [ + "serviceAccount", + "clusters" + ], + "title": "Multi Cluster Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.6.0/multiclusterservice.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.6.0/multiclusterservice.meshery.layer5.io_definition.json new file mode 100755 index 00000000..8e320415 --- /dev/null +++ b/templates/oam/workloads/v0.6.0/multiclusterservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "MultiClusterService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "multiclusterservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.openservicemesh.io/v1alpha1", + "k8sKind": "MultiClusterService", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.6.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.6.0/tcproute.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.6.0/tcproute.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..d0cc9bfe --- /dev/null +++ b/templates/oam/workloads/v0.6.0/tcproute.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,25 @@ +{ + "properties": { + "matches": { + "description": "Match conditions of this route.", + "properties": { + "ports": { + "description": "Port numbers to match TCP traffic.", + "items": { + "type": "integer" + }, + "type": "array" + } + }, + "required": [ + "ports" + ], + "type": "object" + } + }, + "required": [ + "matches" + ], + "title": "TCP Route", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.6.0/tcproute.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.6.0/tcproute.meshery.layer5.io_definition.json new file mode 100755 index 00000000..4e51d123 --- /dev/null +++ b/templates/oam/workloads/v0.6.0/tcproute.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TCPRoute", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "tcproute.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "specs.smi-spec.io/v1alpha4", + "k8sKind": "TCPRoute", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.6.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.6.0/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.6.0/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..13f0a9a2 --- /dev/null +++ b/templates/oam/workloads/v0.6.0/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,59 @@ +{ + "properties": { + "backends": { + "description": "The backend services of this split.", + "items": { + "properties": { + "service": { + "description": "Name of the Kubernetes service.", + "type": "string" + }, + "weight": { + "description": "Traffic weight value of this backend.", + "type": "number" + } + }, + "required": [ + "service", + "weight" + ], + "type": "object" + }, + "type": "array" + }, + "matches": { + "description": "The HTTP route groups that this traffic split should match.", + "items": { + "properties": { + "kind": { + "description": "Kind of the matching group.", + "enum": [ + "HTTPRouteGroup" + ], + "type": "string" + }, + "name": { + "description": "Name of the matching group.", + "type": "string" + } + }, + "required": [ + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "service": { + "description": "The apex service of this split.", + "type": "string" + } + }, + "required": [ + "service", + "backends" + ], + "title": "Traffic Split", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.6.0/trafficsplit.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.6.0/trafficsplit.meshery.layer5.io_definition.json new file mode 100755 index 00000000..922e607e --- /dev/null +++ b/templates/oam/workloads/v0.6.0/trafficsplit.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TrafficSplit", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "trafficsplit.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "split.smi-spec.io/v1alpha4", + "k8sKind": "TrafficSplit", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.6.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.6.0/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.6.0/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..83a24559 --- /dev/null +++ b/templates/oam/workloads/v0.6.0/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,91 @@ +{ + "properties": { + "destination": { + "description": "The destination of this traffic target.", + "properties": { + "kind": { + "description": "Kind of the destination.", + "type": "string" + }, + "name": { + "description": "Name of the destination.", + "type": "string" + }, + "namespace": { + "description": "Namespace of the destination.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "rules": { + "description": "Specifications of this traffic target.", + "items": { + "properties": { + "kind": { + "description": "Kind of this spec.", + "enum": [ + "HTTPRouteGroup", + "TCPRoute", + "UDPRoute" + ], + "type": "string" + }, + "matches": { + "description": "Match conditions of this spec.", + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "Name of this spec.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources of this traffic target.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "destination", + "rules", + "sources" + ], + "title": "Traffic Target", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.6.0/traffictarget.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.6.0/traffictarget.meshery.layer5.io_definition.json new file mode 100755 index 00000000..5f6824c8 --- /dev/null +++ b/templates/oam/workloads/v0.6.0/traffictarget.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TrafficTarget", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "traffictarget.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "access.smi-spec.io/v1alpha3", + "k8sKind": "TrafficTarget", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.6.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.6.1/egress.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.6.1/egress.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..c77de28d --- /dev/null +++ b/templates/oam/workloads/v0.6.1/egress.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,103 @@ +{ + "properties": { + "hosts": { + "description": "Hosts that the sources are allowed to direct external traffic to.", + "items": { + "type": "string" + }, + "type": "array" + }, + "ipAddresses": { + "description": "IP address ranges that the sources are allowed to direct external traffic to.", + "items": { + "pattern": "((?:\\d{1,3}\\.){3}\\d{1,3})\\/(\\d{1,2})$", + "type": "string" + }, + "type": "array" + }, + "matches": { + "description": "The resource references an Egress policy should match on.", + "items": { + "properties": { + "apiGroup": { + "description": "API group for the resource being referenced.", + "type": "string" + }, + "kind": { + "description": "Type of resource being referenced.", + "type": "string" + }, + "name": { + "description": "Name of resource being referenced.", + "type": "string" + } + }, + "required": [ + "apiGroup", + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "ports": { + "description": "Ports that the sources are allowed to direct external traffic to.", + "items": { + "properties": { + "number": { + "description": "Port number of this port.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "description": "Protocol served by this port.", + "type": "string" + } + }, + "required": [ + "number", + "protocol" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources the egress policy is applicable to.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "enum": [ + "ServiceAccount" + ], + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "kind", + "name", + "namespace" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "sources", + "ports" + ], + "title": "Egress", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.6.1/egress.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.6.1/egress.meshery.layer5.io_definition.json new file mode 100755 index 00000000..a6a6a900 --- /dev/null +++ b/templates/oam/workloads/v0.6.1/egress.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Egress", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "egress.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "policy.openservicemesh.io/v1alpha1", + "k8sKind": "Egress", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.6.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.6.1/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.6.1/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..6951d46c --- /dev/null +++ b/templates/oam/workloads/v0.6.1/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,60 @@ +{ + "properties": { + "matches": { + "description": "Match conditions of this route group.", + "items": { + "properties": { + "headers": { + "description": "Header match conditions of this route.", + "items": { + "additionalProperties": { + "type": "string" + }, + "description": "Header match condition of this route.", + "type": "object" + }, + "type": "array" + }, + "methods": { + "description": "The HTTP methods of this HTTP route.", + "items": { + "description": "The HTTP method of this HTTP route.", + "enum": [ + "*", + "GET", + "HEAD", + "PUT", + "POST", + "DELETE", + "CONNECT", + "OPTIONS", + "TRACE", + "PATCH" + ], + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "Name of the HTTP route.", + "type": "string" + }, + "pathRegex": { + "description": "URI path regex of the HTTP route.", + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "matches" + ], + "title": "HTTP Route Group", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.6.1/httproutegroup.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.6.1/httproutegroup.meshery.layer5.io_definition.json new file mode 100755 index 00000000..fae6a70a --- /dev/null +++ b/templates/oam/workloads/v0.6.1/httproutegroup.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPRouteGroup", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httproutegroup.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "specs.smi-spec.io/v1alpha4", + "k8sKind": "HTTPRouteGroup", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.6.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.6.1/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.6.1/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..f5535897 --- /dev/null +++ b/templates/oam/workloads/v0.6.1/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,118 @@ +{ + "properties": { + "backends": { + "description": "Backends the IngressBackend policy is applicable to.", + "items": { + "properties": { + "name": { + "description": "Name of the backend.", + "type": "string" + }, + "port": { + "description": "Port of the backend.", + "properties": { + "number": { + "description": "Port number of this port.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "description": "Protocol served by this port.", + "type": "string" + } + }, + "required": [ + "number", + "protocol" + ], + "type": "object" + }, + "tls": { + "description": "TLS configuration for the backend.", + "properties": { + "skipClientCertValidation": { + "description": "Skip client certificate validation.", + "type": "boolean" + }, + "sniHosts": { + "description": "SNI hosts allowed by the backend.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "skipClientCertValidation" + ], + "type": "object" + } + }, + "required": [ + "name", + "port" + ], + "type": "object" + }, + "type": "array" + }, + "matches": { + "description": "The resource references an IngressBackend policy should match on.", + "items": { + "properties": { + "apiGroup": { + "description": "API group for the resource being referenced.", + "type": "string" + }, + "kind": { + "description": "Type of resource being referenced.", + "type": "string" + }, + "name": { + "description": "Name of resource being referenced.", + "type": "string" + } + }, + "required": [ + "apiGroup", + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources the IngressBackend policy is applicable to.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "backends", + "sources" + ], + "title": "Ingress Backend", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.6.1/ingressbackend.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.6.1/ingressbackend.meshery.layer5.io_definition.json new file mode 100755 index 00000000..7d31b654 --- /dev/null +++ b/templates/oam/workloads/v0.6.1/ingressbackend.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "IngressBackend", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "ingressbackend.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "policy.openservicemesh.io/v1alpha1", + "k8sKind": "IngressBackend", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.6.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.6.1/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.6.1/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..b607634a --- /dev/null +++ b/templates/oam/workloads/v0.6.1/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,264 @@ +{ + "properties": { + "certificate": { + "description": "Configuration for certificate management", + "properties": { + "certKeyBitSize": { + "description": "Sets the certificate key bit size for data plane certificates.", + "type": "integer" + }, + "ingressGateway": { + "description": "Configuration for the ingress gateway's certificate", + "properties": { + "secret": { + "description": "Secret reference to store the certificate in", + "properties": { + "name": { + "description": "Name of the secret", + "type": "string" + }, + "namespace": { + "description": "Namespace of the secret", + "type": "string" + } + }, + "required": [ + "name", + "namespace" + ], + "type": "object" + }, + "subjectAltNames": { + "description": "Subject Alternative Names secured by the certificate", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "validityDuration": { + "description": "Certificate validity duration, represented as a sequence of decimal numbers each with optional fraction and a unit suffix", + "type": "string" + } + }, + "required": [ + "subjectAltNames", + "validityDuration", + "secret" + ], + "type": "object" + }, + "serviceCertValidityDuration": { + "description": "Sets the service certificate validity duration, represented as a sequence of decimal numbers each with optional fraction and a unit suffix.", + "type": "string" + } + }, + "required": [ + "serviceCertValidityDuration", + "certKeyBitSize" + ], + "type": "object" + }, + "featureFlags": { + "description": "OSM feature flags", + "properties": { + "enableAsyncProxyServiceMapping": { + "type": "boolean" + }, + "enableEgressPolicy": { + "type": "boolean" + }, + "enableEnvoyActiveHealthChecks": { + "type": "boolean" + }, + "enableIngressBackendPolicy": { + "type": "boolean" + }, + "enableMulticlusterMode": { + "type": "boolean" + }, + "enableRetryPolicy": { + "type": "boolean" + }, + "enableSnapshotCacheMode": { + "type": "boolean" + }, + "enableWASMStats": { + "type": "boolean" + } + }, + "type": "object" + }, + "observability": { + "description": "Configuration for observing the service mesh, including metrics, logs, tracing etc,.", + "properties": { + "enableDebugServer": { + "description": "Enables a debug endpoint on the osm-controller pod to list information regarding the mesh such as proxy connections, certificates, and SMI policies.", + "type": "boolean" + }, + "osmLogLevel": { + "description": "Allows setting OSM control plane log level at runtime", + "type": "string" + }, + "tracing": { + "description": "Configuration for distributed tracing", + "properties": { + "address": { + "description": "Address of Jaeger tracing deployment, if tracing is enabled.", + "type": "string" + }, + "enable": { + "description": "Enables Jaeger tracing for the mesh.", + "type": "boolean" + }, + "endpoint": { + "description": "Endpoint for tracing data, if tracing is enabled.", + "type": "string" + }, + "port": { + "description": "Port on which tracing is enabled.", + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "sidecar": { + "description": "Configuration for Envoy sidecar", + "properties": { + "configResyncInterval": { + "description": "Resync interval for regular proxy broadcast updates", + "type": "string" + }, + "enablePrivilegedInitContainer": { + "description": "Enables privileged init containers for pods in mesh. When false, init containers only have NET_ADMIN.", + "type": "boolean" + }, + "envoyImage": { + "description": "Image for the Envoy sidecar", + "type": "string" + }, + "envoyWindowsImage": { + "description": "Image for the Envoy sidecar on Windows workers", + "type": "string" + }, + "initContainerImage": { + "description": "Image for the init container", + "type": "string" + }, + "logLevel": { + "description": "Sets the logging verbosity of Envoy proxy sidecar, only applicable to newly created pods joining the mesh.", + "enum": [ + "trace", + "debug", + "info", + "warning", + "warn", + "error", + "critical", + "off" + ], + "type": "string" + }, + "maxDataPlaneConnections": { + "description": "Max allowed data plane sidecar connections", + "type": "integer" + }, + "resources": { + "properties": { + "limits": { + "additionalProperties": true, + "description": "Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/", + "type": "object" + }, + "requests": { + "additionalProperties": true, + "description": "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/", + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "traffic": { + "description": "Configuration for traffic management", + "properties": { + "enableEgress": { + "description": "Enables egress in the mesh", + "type": "boolean" + }, + "enablePermissiveTrafficPolicyMode": { + "description": "True for allowing traffic to flow between client and service pods within the mesh without SMI traffic policies, i.e. no traffic policy enforcement in the mesh. If set to false, enables deny-all traffic policy in mesh i.e. an SMI Traffic Target is necessary for services to communicate.", + "type": "boolean" + }, + "inboundExternalAuthorization": { + "description": "Configures external authorization for inbound and ingress connections.", + "properties": { + "address": { + "description": "Target destination endpoint that will handle external authorization.", + "type": "string" + }, + "enable": { + "description": "Enables/disables the inbound external authorization policy if present.", + "type": "boolean" + }, + "failureModeAllow": { + "description": "Allows specifying if traffic should succeed or fail if the external authorization endpoint fails to respond.", + "type": "boolean" + }, + "port": { + "description": "Remote destination port for the external authorization endpoint.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "statPrefix": { + "default": "inboundExtAuthz", + "description": "String prefix for inbound external authorization related metrics.", + "type": "string" + }, + "timeout": { + "default": "1s", + "description": "Defines the timeout to consider for the remote endpoint to reply in time.", + "type": "string" + } + }, + "type": "object" + }, + "inboundPortExclusionList": { + "description": "Global list of ports to exclude from inbound traffic interception by the sidecar proxy.", + "items": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "type": "array" + }, + "outboundIPRangeExclusionList": { + "description": "Global list of IP address ranges to exclude from outbound traffic interception by the sidecar proxy.", + "items": { + "pattern": "((?:\\d{1,3}\\.){3}\\d{1,3})\\/(\\d{1,2})$", + "type": "string" + }, + "type": "array" + }, + "outboundPortExclusionList": { + "description": "Global list of ports to exclude from outbound traffic interception by the sidecar proxy.", + "items": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "title": "Mesh Config", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.6.1/meshconfig.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.6.1/meshconfig.meshery.layer5.io_definition.json new file mode 100755 index 00000000..b53eb7d8 --- /dev/null +++ b/templates/oam/workloads/v0.6.1/meshconfig.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "MeshConfig", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "meshconfig.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.openservicemesh.io/v1alpha1", + "k8sKind": "MeshConfig", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.6.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.6.1/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.6.1/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..60d4f7dd --- /dev/null +++ b/templates/oam/workloads/v0.6.1/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "properties": { + "clusters": { + "description": "The clusters the service accounts are hosted on.", + "items": { + "properties": { + "address": { + "description": "a routable IP + port", + "pattern": "^(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3}):[0-9]+$", + "type": "string" + }, + "certificate": { + "description": "mTLS certificates (optional)", + "type": "string" + }, + "name": { + "description": "Name of the remote cluster", + "type": "string" + }, + "priority": { + "description": "Priority of the remote cluster in locality based load balancing", + "minimum": 0, + "type": "integer" + }, + "weight": { + "default": 0, + "description": "Load balancing weight of the remote cluster", + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "address", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "ports": { + "description": "The list of ports that are exposed by this service.", + "items": { + "properties": { + "port": { + "description": "The port that will be exposed by this service.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "default": "TCP", + "description": "The IP protocol for this port. Supports \"TCP\", \"UDP\", and \"SCTP\". Default is TCP.", + "enum": [ + "TCP", + "UDP", + "SCTP" + ], + "type": "string" + } + }, + "required": [ + "port", + "protocol" + ], + "type": "object" + }, + "type": "array" + }, + "serviceAccount": { + "type": "string" + } + }, + "required": [ + "serviceAccount", + "clusters" + ], + "title": "Multi Cluster Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.6.1/multiclusterservice.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.6.1/multiclusterservice.meshery.layer5.io_definition.json new file mode 100755 index 00000000..6607aa56 --- /dev/null +++ b/templates/oam/workloads/v0.6.1/multiclusterservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "MultiClusterService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "multiclusterservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.openservicemesh.io/v1alpha1", + "k8sKind": "MultiClusterService", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.6.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.6.1/tcproute.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.6.1/tcproute.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..d0cc9bfe --- /dev/null +++ b/templates/oam/workloads/v0.6.1/tcproute.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,25 @@ +{ + "properties": { + "matches": { + "description": "Match conditions of this route.", + "properties": { + "ports": { + "description": "Port numbers to match TCP traffic.", + "items": { + "type": "integer" + }, + "type": "array" + } + }, + "required": [ + "ports" + ], + "type": "object" + } + }, + "required": [ + "matches" + ], + "title": "TCP Route", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.6.1/tcproute.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.6.1/tcproute.meshery.layer5.io_definition.json new file mode 100755 index 00000000..94c41162 --- /dev/null +++ b/templates/oam/workloads/v0.6.1/tcproute.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TCPRoute", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "tcproute.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "specs.smi-spec.io/v1alpha4", + "k8sKind": "TCPRoute", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.6.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.6.1/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.6.1/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..13f0a9a2 --- /dev/null +++ b/templates/oam/workloads/v0.6.1/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,59 @@ +{ + "properties": { + "backends": { + "description": "The backend services of this split.", + "items": { + "properties": { + "service": { + "description": "Name of the Kubernetes service.", + "type": "string" + }, + "weight": { + "description": "Traffic weight value of this backend.", + "type": "number" + } + }, + "required": [ + "service", + "weight" + ], + "type": "object" + }, + "type": "array" + }, + "matches": { + "description": "The HTTP route groups that this traffic split should match.", + "items": { + "properties": { + "kind": { + "description": "Kind of the matching group.", + "enum": [ + "HTTPRouteGroup" + ], + "type": "string" + }, + "name": { + "description": "Name of the matching group.", + "type": "string" + } + }, + "required": [ + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "service": { + "description": "The apex service of this split.", + "type": "string" + } + }, + "required": [ + "service", + "backends" + ], + "title": "Traffic Split", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.6.1/trafficsplit.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.6.1/trafficsplit.meshery.layer5.io_definition.json new file mode 100755 index 00000000..e82cbecb --- /dev/null +++ b/templates/oam/workloads/v0.6.1/trafficsplit.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TrafficSplit", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "trafficsplit.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "split.smi-spec.io/v1alpha4", + "k8sKind": "TrafficSplit", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.6.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.6.1/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.6.1/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..83a24559 --- /dev/null +++ b/templates/oam/workloads/v0.6.1/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,91 @@ +{ + "properties": { + "destination": { + "description": "The destination of this traffic target.", + "properties": { + "kind": { + "description": "Kind of the destination.", + "type": "string" + }, + "name": { + "description": "Name of the destination.", + "type": "string" + }, + "namespace": { + "description": "Namespace of the destination.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "rules": { + "description": "Specifications of this traffic target.", + "items": { + "properties": { + "kind": { + "description": "Kind of this spec.", + "enum": [ + "HTTPRouteGroup", + "TCPRoute", + "UDPRoute" + ], + "type": "string" + }, + "matches": { + "description": "Match conditions of this spec.", + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "Name of this spec.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources of this traffic target.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "destination", + "rules", + "sources" + ], + "title": "Traffic Target", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.6.1/traffictarget.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.6.1/traffictarget.meshery.layer5.io_definition.json new file mode 100755 index 00000000..a0e83d34 --- /dev/null +++ b/templates/oam/workloads/v0.6.1/traffictarget.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TrafficTarget", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "traffictarget.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "access.smi-spec.io/v1alpha3", + "k8sKind": "TrafficTarget", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.6.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.7.0-rc.1/egress.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.7.0-rc.1/egress.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..c77de28d --- /dev/null +++ b/templates/oam/workloads/v0.7.0-rc.1/egress.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,103 @@ +{ + "properties": { + "hosts": { + "description": "Hosts that the sources are allowed to direct external traffic to.", + "items": { + "type": "string" + }, + "type": "array" + }, + "ipAddresses": { + "description": "IP address ranges that the sources are allowed to direct external traffic to.", + "items": { + "pattern": "((?:\\d{1,3}\\.){3}\\d{1,3})\\/(\\d{1,2})$", + "type": "string" + }, + "type": "array" + }, + "matches": { + "description": "The resource references an Egress policy should match on.", + "items": { + "properties": { + "apiGroup": { + "description": "API group for the resource being referenced.", + "type": "string" + }, + "kind": { + "description": "Type of resource being referenced.", + "type": "string" + }, + "name": { + "description": "Name of resource being referenced.", + "type": "string" + } + }, + "required": [ + "apiGroup", + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "ports": { + "description": "Ports that the sources are allowed to direct external traffic to.", + "items": { + "properties": { + "number": { + "description": "Port number of this port.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "description": "Protocol served by this port.", + "type": "string" + } + }, + "required": [ + "number", + "protocol" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources the egress policy is applicable to.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "enum": [ + "ServiceAccount" + ], + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "kind", + "name", + "namespace" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "sources", + "ports" + ], + "title": "Egress", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.7.0-rc.1/egress.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.7.0-rc.1/egress.meshery.layer5.io_definition.json new file mode 100755 index 00000000..a9ef7142 --- /dev/null +++ b/templates/oam/workloads/v0.7.0-rc.1/egress.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Egress", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "egress.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "policy.openservicemesh.io/v1alpha1", + "k8sKind": "Egress", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.7.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.7.0-rc.1/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.7.0-rc.1/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..6951d46c --- /dev/null +++ b/templates/oam/workloads/v0.7.0-rc.1/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,60 @@ +{ + "properties": { + "matches": { + "description": "Match conditions of this route group.", + "items": { + "properties": { + "headers": { + "description": "Header match conditions of this route.", + "items": { + "additionalProperties": { + "type": "string" + }, + "description": "Header match condition of this route.", + "type": "object" + }, + "type": "array" + }, + "methods": { + "description": "The HTTP methods of this HTTP route.", + "items": { + "description": "The HTTP method of this HTTP route.", + "enum": [ + "*", + "GET", + "HEAD", + "PUT", + "POST", + "DELETE", + "CONNECT", + "OPTIONS", + "TRACE", + "PATCH" + ], + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "Name of the HTTP route.", + "type": "string" + }, + "pathRegex": { + "description": "URI path regex of the HTTP route.", + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "matches" + ], + "title": "HTTP Route Group", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.7.0-rc.1/httproutegroup.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.7.0-rc.1/httproutegroup.meshery.layer5.io_definition.json new file mode 100755 index 00000000..cbc921ac --- /dev/null +++ b/templates/oam/workloads/v0.7.0-rc.1/httproutegroup.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPRouteGroup", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httproutegroup.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "specs.smi-spec.io/v1alpha4", + "k8sKind": "HTTPRouteGroup", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.7.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.7.0-rc.1/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.7.0-rc.1/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..f5535897 --- /dev/null +++ b/templates/oam/workloads/v0.7.0-rc.1/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,118 @@ +{ + "properties": { + "backends": { + "description": "Backends the IngressBackend policy is applicable to.", + "items": { + "properties": { + "name": { + "description": "Name of the backend.", + "type": "string" + }, + "port": { + "description": "Port of the backend.", + "properties": { + "number": { + "description": "Port number of this port.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "description": "Protocol served by this port.", + "type": "string" + } + }, + "required": [ + "number", + "protocol" + ], + "type": "object" + }, + "tls": { + "description": "TLS configuration for the backend.", + "properties": { + "skipClientCertValidation": { + "description": "Skip client certificate validation.", + "type": "boolean" + }, + "sniHosts": { + "description": "SNI hosts allowed by the backend.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "skipClientCertValidation" + ], + "type": "object" + } + }, + "required": [ + "name", + "port" + ], + "type": "object" + }, + "type": "array" + }, + "matches": { + "description": "The resource references an IngressBackend policy should match on.", + "items": { + "properties": { + "apiGroup": { + "description": "API group for the resource being referenced.", + "type": "string" + }, + "kind": { + "description": "Type of resource being referenced.", + "type": "string" + }, + "name": { + "description": "Name of resource being referenced.", + "type": "string" + } + }, + "required": [ + "apiGroup", + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources the IngressBackend policy is applicable to.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "backends", + "sources" + ], + "title": "Ingress Backend", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.7.0-rc.1/ingressbackend.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.7.0-rc.1/ingressbackend.meshery.layer5.io_definition.json new file mode 100755 index 00000000..cd921fb4 --- /dev/null +++ b/templates/oam/workloads/v0.7.0-rc.1/ingressbackend.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "IngressBackend", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "ingressbackend.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "policy.openservicemesh.io/v1alpha1", + "k8sKind": "IngressBackend", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.7.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.7.0-rc.1/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.7.0-rc.1/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..b607634a --- /dev/null +++ b/templates/oam/workloads/v0.7.0-rc.1/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,264 @@ +{ + "properties": { + "certificate": { + "description": "Configuration for certificate management", + "properties": { + "certKeyBitSize": { + "description": "Sets the certificate key bit size for data plane certificates.", + "type": "integer" + }, + "ingressGateway": { + "description": "Configuration for the ingress gateway's certificate", + "properties": { + "secret": { + "description": "Secret reference to store the certificate in", + "properties": { + "name": { + "description": "Name of the secret", + "type": "string" + }, + "namespace": { + "description": "Namespace of the secret", + "type": "string" + } + }, + "required": [ + "name", + "namespace" + ], + "type": "object" + }, + "subjectAltNames": { + "description": "Subject Alternative Names secured by the certificate", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "validityDuration": { + "description": "Certificate validity duration, represented as a sequence of decimal numbers each with optional fraction and a unit suffix", + "type": "string" + } + }, + "required": [ + "subjectAltNames", + "validityDuration", + "secret" + ], + "type": "object" + }, + "serviceCertValidityDuration": { + "description": "Sets the service certificate validity duration, represented as a sequence of decimal numbers each with optional fraction and a unit suffix.", + "type": "string" + } + }, + "required": [ + "serviceCertValidityDuration", + "certKeyBitSize" + ], + "type": "object" + }, + "featureFlags": { + "description": "OSM feature flags", + "properties": { + "enableAsyncProxyServiceMapping": { + "type": "boolean" + }, + "enableEgressPolicy": { + "type": "boolean" + }, + "enableEnvoyActiveHealthChecks": { + "type": "boolean" + }, + "enableIngressBackendPolicy": { + "type": "boolean" + }, + "enableMulticlusterMode": { + "type": "boolean" + }, + "enableRetryPolicy": { + "type": "boolean" + }, + "enableSnapshotCacheMode": { + "type": "boolean" + }, + "enableWASMStats": { + "type": "boolean" + } + }, + "type": "object" + }, + "observability": { + "description": "Configuration for observing the service mesh, including metrics, logs, tracing etc,.", + "properties": { + "enableDebugServer": { + "description": "Enables a debug endpoint on the osm-controller pod to list information regarding the mesh such as proxy connections, certificates, and SMI policies.", + "type": "boolean" + }, + "osmLogLevel": { + "description": "Allows setting OSM control plane log level at runtime", + "type": "string" + }, + "tracing": { + "description": "Configuration for distributed tracing", + "properties": { + "address": { + "description": "Address of Jaeger tracing deployment, if tracing is enabled.", + "type": "string" + }, + "enable": { + "description": "Enables Jaeger tracing for the mesh.", + "type": "boolean" + }, + "endpoint": { + "description": "Endpoint for tracing data, if tracing is enabled.", + "type": "string" + }, + "port": { + "description": "Port on which tracing is enabled.", + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "sidecar": { + "description": "Configuration for Envoy sidecar", + "properties": { + "configResyncInterval": { + "description": "Resync interval for regular proxy broadcast updates", + "type": "string" + }, + "enablePrivilegedInitContainer": { + "description": "Enables privileged init containers for pods in mesh. When false, init containers only have NET_ADMIN.", + "type": "boolean" + }, + "envoyImage": { + "description": "Image for the Envoy sidecar", + "type": "string" + }, + "envoyWindowsImage": { + "description": "Image for the Envoy sidecar on Windows workers", + "type": "string" + }, + "initContainerImage": { + "description": "Image for the init container", + "type": "string" + }, + "logLevel": { + "description": "Sets the logging verbosity of Envoy proxy sidecar, only applicable to newly created pods joining the mesh.", + "enum": [ + "trace", + "debug", + "info", + "warning", + "warn", + "error", + "critical", + "off" + ], + "type": "string" + }, + "maxDataPlaneConnections": { + "description": "Max allowed data plane sidecar connections", + "type": "integer" + }, + "resources": { + "properties": { + "limits": { + "additionalProperties": true, + "description": "Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/", + "type": "object" + }, + "requests": { + "additionalProperties": true, + "description": "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/", + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "traffic": { + "description": "Configuration for traffic management", + "properties": { + "enableEgress": { + "description": "Enables egress in the mesh", + "type": "boolean" + }, + "enablePermissiveTrafficPolicyMode": { + "description": "True for allowing traffic to flow between client and service pods within the mesh without SMI traffic policies, i.e. no traffic policy enforcement in the mesh. If set to false, enables deny-all traffic policy in mesh i.e. an SMI Traffic Target is necessary for services to communicate.", + "type": "boolean" + }, + "inboundExternalAuthorization": { + "description": "Configures external authorization for inbound and ingress connections.", + "properties": { + "address": { + "description": "Target destination endpoint that will handle external authorization.", + "type": "string" + }, + "enable": { + "description": "Enables/disables the inbound external authorization policy if present.", + "type": "boolean" + }, + "failureModeAllow": { + "description": "Allows specifying if traffic should succeed or fail if the external authorization endpoint fails to respond.", + "type": "boolean" + }, + "port": { + "description": "Remote destination port for the external authorization endpoint.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "statPrefix": { + "default": "inboundExtAuthz", + "description": "String prefix for inbound external authorization related metrics.", + "type": "string" + }, + "timeout": { + "default": "1s", + "description": "Defines the timeout to consider for the remote endpoint to reply in time.", + "type": "string" + } + }, + "type": "object" + }, + "inboundPortExclusionList": { + "description": "Global list of ports to exclude from inbound traffic interception by the sidecar proxy.", + "items": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "type": "array" + }, + "outboundIPRangeExclusionList": { + "description": "Global list of IP address ranges to exclude from outbound traffic interception by the sidecar proxy.", + "items": { + "pattern": "((?:\\d{1,3}\\.){3}\\d{1,3})\\/(\\d{1,2})$", + "type": "string" + }, + "type": "array" + }, + "outboundPortExclusionList": { + "description": "Global list of ports to exclude from outbound traffic interception by the sidecar proxy.", + "items": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "title": "Mesh Config", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.7.0-rc.1/meshconfig.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.7.0-rc.1/meshconfig.meshery.layer5.io_definition.json new file mode 100755 index 00000000..2eb9af3a --- /dev/null +++ b/templates/oam/workloads/v0.7.0-rc.1/meshconfig.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "MeshConfig", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "meshconfig.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.openservicemesh.io/v1alpha1", + "k8sKind": "MeshConfig", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.7.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.7.0-rc.1/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.7.0-rc.1/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..60d4f7dd --- /dev/null +++ b/templates/oam/workloads/v0.7.0-rc.1/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "properties": { + "clusters": { + "description": "The clusters the service accounts are hosted on.", + "items": { + "properties": { + "address": { + "description": "a routable IP + port", + "pattern": "^(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3}):[0-9]+$", + "type": "string" + }, + "certificate": { + "description": "mTLS certificates (optional)", + "type": "string" + }, + "name": { + "description": "Name of the remote cluster", + "type": "string" + }, + "priority": { + "description": "Priority of the remote cluster in locality based load balancing", + "minimum": 0, + "type": "integer" + }, + "weight": { + "default": 0, + "description": "Load balancing weight of the remote cluster", + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "address", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "ports": { + "description": "The list of ports that are exposed by this service.", + "items": { + "properties": { + "port": { + "description": "The port that will be exposed by this service.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "default": "TCP", + "description": "The IP protocol for this port. Supports \"TCP\", \"UDP\", and \"SCTP\". Default is TCP.", + "enum": [ + "TCP", + "UDP", + "SCTP" + ], + "type": "string" + } + }, + "required": [ + "port", + "protocol" + ], + "type": "object" + }, + "type": "array" + }, + "serviceAccount": { + "type": "string" + } + }, + "required": [ + "serviceAccount", + "clusters" + ], + "title": "Multi Cluster Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.7.0-rc.1/multiclusterservice.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.7.0-rc.1/multiclusterservice.meshery.layer5.io_definition.json new file mode 100755 index 00000000..2a30acff --- /dev/null +++ b/templates/oam/workloads/v0.7.0-rc.1/multiclusterservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "MultiClusterService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "multiclusterservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.openservicemesh.io/v1alpha1", + "k8sKind": "MultiClusterService", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.7.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.7.0-rc.1/tcproute.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.7.0-rc.1/tcproute.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..d0cc9bfe --- /dev/null +++ b/templates/oam/workloads/v0.7.0-rc.1/tcproute.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,25 @@ +{ + "properties": { + "matches": { + "description": "Match conditions of this route.", + "properties": { + "ports": { + "description": "Port numbers to match TCP traffic.", + "items": { + "type": "integer" + }, + "type": "array" + } + }, + "required": [ + "ports" + ], + "type": "object" + } + }, + "required": [ + "matches" + ], + "title": "TCP Route", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.7.0-rc.1/tcproute.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.7.0-rc.1/tcproute.meshery.layer5.io_definition.json new file mode 100755 index 00000000..423e4575 --- /dev/null +++ b/templates/oam/workloads/v0.7.0-rc.1/tcproute.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TCPRoute", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "tcproute.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "specs.smi-spec.io/v1alpha4", + "k8sKind": "TCPRoute", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.7.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.7.0-rc.1/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.7.0-rc.1/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..13f0a9a2 --- /dev/null +++ b/templates/oam/workloads/v0.7.0-rc.1/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,59 @@ +{ + "properties": { + "backends": { + "description": "The backend services of this split.", + "items": { + "properties": { + "service": { + "description": "Name of the Kubernetes service.", + "type": "string" + }, + "weight": { + "description": "Traffic weight value of this backend.", + "type": "number" + } + }, + "required": [ + "service", + "weight" + ], + "type": "object" + }, + "type": "array" + }, + "matches": { + "description": "The HTTP route groups that this traffic split should match.", + "items": { + "properties": { + "kind": { + "description": "Kind of the matching group.", + "enum": [ + "HTTPRouteGroup" + ], + "type": "string" + }, + "name": { + "description": "Name of the matching group.", + "type": "string" + } + }, + "required": [ + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "service": { + "description": "The apex service of this split.", + "type": "string" + } + }, + "required": [ + "service", + "backends" + ], + "title": "Traffic Split", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.7.0-rc.1/trafficsplit.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.7.0-rc.1/trafficsplit.meshery.layer5.io_definition.json new file mode 100755 index 00000000..d618e797 --- /dev/null +++ b/templates/oam/workloads/v0.7.0-rc.1/trafficsplit.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TrafficSplit", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "trafficsplit.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "split.smi-spec.io/v1alpha4", + "k8sKind": "TrafficSplit", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.7.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.7.0-rc.1/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.7.0-rc.1/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..83a24559 --- /dev/null +++ b/templates/oam/workloads/v0.7.0-rc.1/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,91 @@ +{ + "properties": { + "destination": { + "description": "The destination of this traffic target.", + "properties": { + "kind": { + "description": "Kind of the destination.", + "type": "string" + }, + "name": { + "description": "Name of the destination.", + "type": "string" + }, + "namespace": { + "description": "Namespace of the destination.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "rules": { + "description": "Specifications of this traffic target.", + "items": { + "properties": { + "kind": { + "description": "Kind of this spec.", + "enum": [ + "HTTPRouteGroup", + "TCPRoute", + "UDPRoute" + ], + "type": "string" + }, + "matches": { + "description": "Match conditions of this spec.", + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "Name of this spec.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources of this traffic target.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "destination", + "rules", + "sources" + ], + "title": "Traffic Target", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.7.0-rc.1/traffictarget.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.7.0-rc.1/traffictarget.meshery.layer5.io_definition.json new file mode 100755 index 00000000..8100cbeb --- /dev/null +++ b/templates/oam/workloads/v0.7.0-rc.1/traffictarget.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TrafficTarget", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "traffictarget.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "access.smi-spec.io/v1alpha3", + "k8sKind": "TrafficTarget", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.7.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.7.0/egress.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.7.0/egress.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..c77de28d --- /dev/null +++ b/templates/oam/workloads/v0.7.0/egress.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,103 @@ +{ + "properties": { + "hosts": { + "description": "Hosts that the sources are allowed to direct external traffic to.", + "items": { + "type": "string" + }, + "type": "array" + }, + "ipAddresses": { + "description": "IP address ranges that the sources are allowed to direct external traffic to.", + "items": { + "pattern": "((?:\\d{1,3}\\.){3}\\d{1,3})\\/(\\d{1,2})$", + "type": "string" + }, + "type": "array" + }, + "matches": { + "description": "The resource references an Egress policy should match on.", + "items": { + "properties": { + "apiGroup": { + "description": "API group for the resource being referenced.", + "type": "string" + }, + "kind": { + "description": "Type of resource being referenced.", + "type": "string" + }, + "name": { + "description": "Name of resource being referenced.", + "type": "string" + } + }, + "required": [ + "apiGroup", + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "ports": { + "description": "Ports that the sources are allowed to direct external traffic to.", + "items": { + "properties": { + "number": { + "description": "Port number of this port.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "description": "Protocol served by this port.", + "type": "string" + } + }, + "required": [ + "number", + "protocol" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources the egress policy is applicable to.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "enum": [ + "ServiceAccount" + ], + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "kind", + "name", + "namespace" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "sources", + "ports" + ], + "title": "Egress", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.7.0/egress.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.7.0/egress.meshery.layer5.io_definition.json new file mode 100755 index 00000000..6b330f8a --- /dev/null +++ b/templates/oam/workloads/v0.7.0/egress.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Egress", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "egress.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "policy.openservicemesh.io/v1alpha1", + "k8sKind": "Egress", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.7.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.7.0/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.7.0/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..6951d46c --- /dev/null +++ b/templates/oam/workloads/v0.7.0/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,60 @@ +{ + "properties": { + "matches": { + "description": "Match conditions of this route group.", + "items": { + "properties": { + "headers": { + "description": "Header match conditions of this route.", + "items": { + "additionalProperties": { + "type": "string" + }, + "description": "Header match condition of this route.", + "type": "object" + }, + "type": "array" + }, + "methods": { + "description": "The HTTP methods of this HTTP route.", + "items": { + "description": "The HTTP method of this HTTP route.", + "enum": [ + "*", + "GET", + "HEAD", + "PUT", + "POST", + "DELETE", + "CONNECT", + "OPTIONS", + "TRACE", + "PATCH" + ], + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "Name of the HTTP route.", + "type": "string" + }, + "pathRegex": { + "description": "URI path regex of the HTTP route.", + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "matches" + ], + "title": "HTTP Route Group", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.7.0/httproutegroup.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.7.0/httproutegroup.meshery.layer5.io_definition.json new file mode 100755 index 00000000..d0d74cc4 --- /dev/null +++ b/templates/oam/workloads/v0.7.0/httproutegroup.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPRouteGroup", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httproutegroup.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "specs.smi-spec.io/v1alpha4", + "k8sKind": "HTTPRouteGroup", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.7.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.7.0/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.7.0/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..f5535897 --- /dev/null +++ b/templates/oam/workloads/v0.7.0/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,118 @@ +{ + "properties": { + "backends": { + "description": "Backends the IngressBackend policy is applicable to.", + "items": { + "properties": { + "name": { + "description": "Name of the backend.", + "type": "string" + }, + "port": { + "description": "Port of the backend.", + "properties": { + "number": { + "description": "Port number of this port.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "description": "Protocol served by this port.", + "type": "string" + } + }, + "required": [ + "number", + "protocol" + ], + "type": "object" + }, + "tls": { + "description": "TLS configuration for the backend.", + "properties": { + "skipClientCertValidation": { + "description": "Skip client certificate validation.", + "type": "boolean" + }, + "sniHosts": { + "description": "SNI hosts allowed by the backend.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "skipClientCertValidation" + ], + "type": "object" + } + }, + "required": [ + "name", + "port" + ], + "type": "object" + }, + "type": "array" + }, + "matches": { + "description": "The resource references an IngressBackend policy should match on.", + "items": { + "properties": { + "apiGroup": { + "description": "API group for the resource being referenced.", + "type": "string" + }, + "kind": { + "description": "Type of resource being referenced.", + "type": "string" + }, + "name": { + "description": "Name of resource being referenced.", + "type": "string" + } + }, + "required": [ + "apiGroup", + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources the IngressBackend policy is applicable to.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "backends", + "sources" + ], + "title": "Ingress Backend", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.7.0/ingressbackend.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.7.0/ingressbackend.meshery.layer5.io_definition.json new file mode 100755 index 00000000..5e0f1d12 --- /dev/null +++ b/templates/oam/workloads/v0.7.0/ingressbackend.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "IngressBackend", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "ingressbackend.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "policy.openservicemesh.io/v1alpha1", + "k8sKind": "IngressBackend", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.7.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.7.0/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.7.0/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..b607634a --- /dev/null +++ b/templates/oam/workloads/v0.7.0/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,264 @@ +{ + "properties": { + "certificate": { + "description": "Configuration for certificate management", + "properties": { + "certKeyBitSize": { + "description": "Sets the certificate key bit size for data plane certificates.", + "type": "integer" + }, + "ingressGateway": { + "description": "Configuration for the ingress gateway's certificate", + "properties": { + "secret": { + "description": "Secret reference to store the certificate in", + "properties": { + "name": { + "description": "Name of the secret", + "type": "string" + }, + "namespace": { + "description": "Namespace of the secret", + "type": "string" + } + }, + "required": [ + "name", + "namespace" + ], + "type": "object" + }, + "subjectAltNames": { + "description": "Subject Alternative Names secured by the certificate", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "validityDuration": { + "description": "Certificate validity duration, represented as a sequence of decimal numbers each with optional fraction and a unit suffix", + "type": "string" + } + }, + "required": [ + "subjectAltNames", + "validityDuration", + "secret" + ], + "type": "object" + }, + "serviceCertValidityDuration": { + "description": "Sets the service certificate validity duration, represented as a sequence of decimal numbers each with optional fraction and a unit suffix.", + "type": "string" + } + }, + "required": [ + "serviceCertValidityDuration", + "certKeyBitSize" + ], + "type": "object" + }, + "featureFlags": { + "description": "OSM feature flags", + "properties": { + "enableAsyncProxyServiceMapping": { + "type": "boolean" + }, + "enableEgressPolicy": { + "type": "boolean" + }, + "enableEnvoyActiveHealthChecks": { + "type": "boolean" + }, + "enableIngressBackendPolicy": { + "type": "boolean" + }, + "enableMulticlusterMode": { + "type": "boolean" + }, + "enableRetryPolicy": { + "type": "boolean" + }, + "enableSnapshotCacheMode": { + "type": "boolean" + }, + "enableWASMStats": { + "type": "boolean" + } + }, + "type": "object" + }, + "observability": { + "description": "Configuration for observing the service mesh, including metrics, logs, tracing etc,.", + "properties": { + "enableDebugServer": { + "description": "Enables a debug endpoint on the osm-controller pod to list information regarding the mesh such as proxy connections, certificates, and SMI policies.", + "type": "boolean" + }, + "osmLogLevel": { + "description": "Allows setting OSM control plane log level at runtime", + "type": "string" + }, + "tracing": { + "description": "Configuration for distributed tracing", + "properties": { + "address": { + "description": "Address of Jaeger tracing deployment, if tracing is enabled.", + "type": "string" + }, + "enable": { + "description": "Enables Jaeger tracing for the mesh.", + "type": "boolean" + }, + "endpoint": { + "description": "Endpoint for tracing data, if tracing is enabled.", + "type": "string" + }, + "port": { + "description": "Port on which tracing is enabled.", + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "sidecar": { + "description": "Configuration for Envoy sidecar", + "properties": { + "configResyncInterval": { + "description": "Resync interval for regular proxy broadcast updates", + "type": "string" + }, + "enablePrivilegedInitContainer": { + "description": "Enables privileged init containers for pods in mesh. When false, init containers only have NET_ADMIN.", + "type": "boolean" + }, + "envoyImage": { + "description": "Image for the Envoy sidecar", + "type": "string" + }, + "envoyWindowsImage": { + "description": "Image for the Envoy sidecar on Windows workers", + "type": "string" + }, + "initContainerImage": { + "description": "Image for the init container", + "type": "string" + }, + "logLevel": { + "description": "Sets the logging verbosity of Envoy proxy sidecar, only applicable to newly created pods joining the mesh.", + "enum": [ + "trace", + "debug", + "info", + "warning", + "warn", + "error", + "critical", + "off" + ], + "type": "string" + }, + "maxDataPlaneConnections": { + "description": "Max allowed data plane sidecar connections", + "type": "integer" + }, + "resources": { + "properties": { + "limits": { + "additionalProperties": true, + "description": "Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/", + "type": "object" + }, + "requests": { + "additionalProperties": true, + "description": "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/", + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "traffic": { + "description": "Configuration for traffic management", + "properties": { + "enableEgress": { + "description": "Enables egress in the mesh", + "type": "boolean" + }, + "enablePermissiveTrafficPolicyMode": { + "description": "True for allowing traffic to flow between client and service pods within the mesh without SMI traffic policies, i.e. no traffic policy enforcement in the mesh. If set to false, enables deny-all traffic policy in mesh i.e. an SMI Traffic Target is necessary for services to communicate.", + "type": "boolean" + }, + "inboundExternalAuthorization": { + "description": "Configures external authorization for inbound and ingress connections.", + "properties": { + "address": { + "description": "Target destination endpoint that will handle external authorization.", + "type": "string" + }, + "enable": { + "description": "Enables/disables the inbound external authorization policy if present.", + "type": "boolean" + }, + "failureModeAllow": { + "description": "Allows specifying if traffic should succeed or fail if the external authorization endpoint fails to respond.", + "type": "boolean" + }, + "port": { + "description": "Remote destination port for the external authorization endpoint.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "statPrefix": { + "default": "inboundExtAuthz", + "description": "String prefix for inbound external authorization related metrics.", + "type": "string" + }, + "timeout": { + "default": "1s", + "description": "Defines the timeout to consider for the remote endpoint to reply in time.", + "type": "string" + } + }, + "type": "object" + }, + "inboundPortExclusionList": { + "description": "Global list of ports to exclude from inbound traffic interception by the sidecar proxy.", + "items": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "type": "array" + }, + "outboundIPRangeExclusionList": { + "description": "Global list of IP address ranges to exclude from outbound traffic interception by the sidecar proxy.", + "items": { + "pattern": "((?:\\d{1,3}\\.){3}\\d{1,3})\\/(\\d{1,2})$", + "type": "string" + }, + "type": "array" + }, + "outboundPortExclusionList": { + "description": "Global list of ports to exclude from outbound traffic interception by the sidecar proxy.", + "items": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "title": "Mesh Config", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.7.0/meshconfig.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.7.0/meshconfig.meshery.layer5.io_definition.json new file mode 100755 index 00000000..abc33583 --- /dev/null +++ b/templates/oam/workloads/v0.7.0/meshconfig.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "MeshConfig", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "meshconfig.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.openservicemesh.io/v1alpha1", + "k8sKind": "MeshConfig", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.7.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.7.0/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.7.0/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..60d4f7dd --- /dev/null +++ b/templates/oam/workloads/v0.7.0/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "properties": { + "clusters": { + "description": "The clusters the service accounts are hosted on.", + "items": { + "properties": { + "address": { + "description": "a routable IP + port", + "pattern": "^(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3}):[0-9]+$", + "type": "string" + }, + "certificate": { + "description": "mTLS certificates (optional)", + "type": "string" + }, + "name": { + "description": "Name of the remote cluster", + "type": "string" + }, + "priority": { + "description": "Priority of the remote cluster in locality based load balancing", + "minimum": 0, + "type": "integer" + }, + "weight": { + "default": 0, + "description": "Load balancing weight of the remote cluster", + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "address", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "ports": { + "description": "The list of ports that are exposed by this service.", + "items": { + "properties": { + "port": { + "description": "The port that will be exposed by this service.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "default": "TCP", + "description": "The IP protocol for this port. Supports \"TCP\", \"UDP\", and \"SCTP\". Default is TCP.", + "enum": [ + "TCP", + "UDP", + "SCTP" + ], + "type": "string" + } + }, + "required": [ + "port", + "protocol" + ], + "type": "object" + }, + "type": "array" + }, + "serviceAccount": { + "type": "string" + } + }, + "required": [ + "serviceAccount", + "clusters" + ], + "title": "Multi Cluster Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.7.0/multiclusterservice.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.7.0/multiclusterservice.meshery.layer5.io_definition.json new file mode 100755 index 00000000..cae67c9a --- /dev/null +++ b/templates/oam/workloads/v0.7.0/multiclusterservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "MultiClusterService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "multiclusterservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.openservicemesh.io/v1alpha1", + "k8sKind": "MultiClusterService", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.7.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.7.0/tcproute.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.7.0/tcproute.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..d0cc9bfe --- /dev/null +++ b/templates/oam/workloads/v0.7.0/tcproute.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,25 @@ +{ + "properties": { + "matches": { + "description": "Match conditions of this route.", + "properties": { + "ports": { + "description": "Port numbers to match TCP traffic.", + "items": { + "type": "integer" + }, + "type": "array" + } + }, + "required": [ + "ports" + ], + "type": "object" + } + }, + "required": [ + "matches" + ], + "title": "TCP Route", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.7.0/tcproute.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.7.0/tcproute.meshery.layer5.io_definition.json new file mode 100755 index 00000000..878243d7 --- /dev/null +++ b/templates/oam/workloads/v0.7.0/tcproute.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TCPRoute", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "tcproute.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "specs.smi-spec.io/v1alpha4", + "k8sKind": "TCPRoute", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.7.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.7.0/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.7.0/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..13f0a9a2 --- /dev/null +++ b/templates/oam/workloads/v0.7.0/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,59 @@ +{ + "properties": { + "backends": { + "description": "The backend services of this split.", + "items": { + "properties": { + "service": { + "description": "Name of the Kubernetes service.", + "type": "string" + }, + "weight": { + "description": "Traffic weight value of this backend.", + "type": "number" + } + }, + "required": [ + "service", + "weight" + ], + "type": "object" + }, + "type": "array" + }, + "matches": { + "description": "The HTTP route groups that this traffic split should match.", + "items": { + "properties": { + "kind": { + "description": "Kind of the matching group.", + "enum": [ + "HTTPRouteGroup" + ], + "type": "string" + }, + "name": { + "description": "Name of the matching group.", + "type": "string" + } + }, + "required": [ + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "service": { + "description": "The apex service of this split.", + "type": "string" + } + }, + "required": [ + "service", + "backends" + ], + "title": "Traffic Split", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.7.0/trafficsplit.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.7.0/trafficsplit.meshery.layer5.io_definition.json new file mode 100755 index 00000000..a50bcf46 --- /dev/null +++ b/templates/oam/workloads/v0.7.0/trafficsplit.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TrafficSplit", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "trafficsplit.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "split.smi-spec.io/v1alpha4", + "k8sKind": "TrafficSplit", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.7.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.7.0/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.7.0/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..83a24559 --- /dev/null +++ b/templates/oam/workloads/v0.7.0/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,91 @@ +{ + "properties": { + "destination": { + "description": "The destination of this traffic target.", + "properties": { + "kind": { + "description": "Kind of the destination.", + "type": "string" + }, + "name": { + "description": "Name of the destination.", + "type": "string" + }, + "namespace": { + "description": "Namespace of the destination.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "rules": { + "description": "Specifications of this traffic target.", + "items": { + "properties": { + "kind": { + "description": "Kind of this spec.", + "enum": [ + "HTTPRouteGroup", + "TCPRoute", + "UDPRoute" + ], + "type": "string" + }, + "matches": { + "description": "Match conditions of this spec.", + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "Name of this spec.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources of this traffic target.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "destination", + "rules", + "sources" + ], + "title": "Traffic Target", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.7.0/traffictarget.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.7.0/traffictarget.meshery.layer5.io_definition.json new file mode 100755 index 00000000..3ad6f242 --- /dev/null +++ b/templates/oam/workloads/v0.7.0/traffictarget.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TrafficTarget", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "traffictarget.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "access.smi-spec.io/v1alpha3", + "k8sKind": "TrafficTarget", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.7.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.0-rc.1/egress.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.8.0-rc.1/egress.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..c77de28d --- /dev/null +++ b/templates/oam/workloads/v0.8.0-rc.1/egress.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,103 @@ +{ + "properties": { + "hosts": { + "description": "Hosts that the sources are allowed to direct external traffic to.", + "items": { + "type": "string" + }, + "type": "array" + }, + "ipAddresses": { + "description": "IP address ranges that the sources are allowed to direct external traffic to.", + "items": { + "pattern": "((?:\\d{1,3}\\.){3}\\d{1,3})\\/(\\d{1,2})$", + "type": "string" + }, + "type": "array" + }, + "matches": { + "description": "The resource references an Egress policy should match on.", + "items": { + "properties": { + "apiGroup": { + "description": "API group for the resource being referenced.", + "type": "string" + }, + "kind": { + "description": "Type of resource being referenced.", + "type": "string" + }, + "name": { + "description": "Name of resource being referenced.", + "type": "string" + } + }, + "required": [ + "apiGroup", + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "ports": { + "description": "Ports that the sources are allowed to direct external traffic to.", + "items": { + "properties": { + "number": { + "description": "Port number of this port.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "description": "Protocol served by this port.", + "type": "string" + } + }, + "required": [ + "number", + "protocol" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources the egress policy is applicable to.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "enum": [ + "ServiceAccount" + ], + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "kind", + "name", + "namespace" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "sources", + "ports" + ], + "title": "Egress", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.0-rc.1/egress.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.8.0-rc.1/egress.meshery.layer5.io_definition.json new file mode 100755 index 00000000..0c1a045a --- /dev/null +++ b/templates/oam/workloads/v0.8.0-rc.1/egress.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Egress", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "egress.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "policy.openservicemesh.io/v1alpha1", + "k8sKind": "Egress", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.8.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.0-rc.1/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.8.0-rc.1/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..6951d46c --- /dev/null +++ b/templates/oam/workloads/v0.8.0-rc.1/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,60 @@ +{ + "properties": { + "matches": { + "description": "Match conditions of this route group.", + "items": { + "properties": { + "headers": { + "description": "Header match conditions of this route.", + "items": { + "additionalProperties": { + "type": "string" + }, + "description": "Header match condition of this route.", + "type": "object" + }, + "type": "array" + }, + "methods": { + "description": "The HTTP methods of this HTTP route.", + "items": { + "description": "The HTTP method of this HTTP route.", + "enum": [ + "*", + "GET", + "HEAD", + "PUT", + "POST", + "DELETE", + "CONNECT", + "OPTIONS", + "TRACE", + "PATCH" + ], + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "Name of the HTTP route.", + "type": "string" + }, + "pathRegex": { + "description": "URI path regex of the HTTP route.", + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "matches" + ], + "title": "HTTP Route Group", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.0-rc.1/httproutegroup.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.8.0-rc.1/httproutegroup.meshery.layer5.io_definition.json new file mode 100755 index 00000000..f2656583 --- /dev/null +++ b/templates/oam/workloads/v0.8.0-rc.1/httproutegroup.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPRouteGroup", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httproutegroup.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "specs.smi-spec.io/v1alpha4", + "k8sKind": "HTTPRouteGroup", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.8.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.0-rc.1/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.8.0-rc.1/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..f5535897 --- /dev/null +++ b/templates/oam/workloads/v0.8.0-rc.1/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,118 @@ +{ + "properties": { + "backends": { + "description": "Backends the IngressBackend policy is applicable to.", + "items": { + "properties": { + "name": { + "description": "Name of the backend.", + "type": "string" + }, + "port": { + "description": "Port of the backend.", + "properties": { + "number": { + "description": "Port number of this port.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "description": "Protocol served by this port.", + "type": "string" + } + }, + "required": [ + "number", + "protocol" + ], + "type": "object" + }, + "tls": { + "description": "TLS configuration for the backend.", + "properties": { + "skipClientCertValidation": { + "description": "Skip client certificate validation.", + "type": "boolean" + }, + "sniHosts": { + "description": "SNI hosts allowed by the backend.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "skipClientCertValidation" + ], + "type": "object" + } + }, + "required": [ + "name", + "port" + ], + "type": "object" + }, + "type": "array" + }, + "matches": { + "description": "The resource references an IngressBackend policy should match on.", + "items": { + "properties": { + "apiGroup": { + "description": "API group for the resource being referenced.", + "type": "string" + }, + "kind": { + "description": "Type of resource being referenced.", + "type": "string" + }, + "name": { + "description": "Name of resource being referenced.", + "type": "string" + } + }, + "required": [ + "apiGroup", + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources the IngressBackend policy is applicable to.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "backends", + "sources" + ], + "title": "Ingress Backend", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.0-rc.1/ingressbackend.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.8.0-rc.1/ingressbackend.meshery.layer5.io_definition.json new file mode 100755 index 00000000..f117f6ea --- /dev/null +++ b/templates/oam/workloads/v0.8.0-rc.1/ingressbackend.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "IngressBackend", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "ingressbackend.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "policy.openservicemesh.io/v1alpha1", + "k8sKind": "IngressBackend", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.8.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.0-rc.1/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.8.0-rc.1/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..b607634a --- /dev/null +++ b/templates/oam/workloads/v0.8.0-rc.1/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,264 @@ +{ + "properties": { + "certificate": { + "description": "Configuration for certificate management", + "properties": { + "certKeyBitSize": { + "description": "Sets the certificate key bit size for data plane certificates.", + "type": "integer" + }, + "ingressGateway": { + "description": "Configuration for the ingress gateway's certificate", + "properties": { + "secret": { + "description": "Secret reference to store the certificate in", + "properties": { + "name": { + "description": "Name of the secret", + "type": "string" + }, + "namespace": { + "description": "Namespace of the secret", + "type": "string" + } + }, + "required": [ + "name", + "namespace" + ], + "type": "object" + }, + "subjectAltNames": { + "description": "Subject Alternative Names secured by the certificate", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "validityDuration": { + "description": "Certificate validity duration, represented as a sequence of decimal numbers each with optional fraction and a unit suffix", + "type": "string" + } + }, + "required": [ + "subjectAltNames", + "validityDuration", + "secret" + ], + "type": "object" + }, + "serviceCertValidityDuration": { + "description": "Sets the service certificate validity duration, represented as a sequence of decimal numbers each with optional fraction and a unit suffix.", + "type": "string" + } + }, + "required": [ + "serviceCertValidityDuration", + "certKeyBitSize" + ], + "type": "object" + }, + "featureFlags": { + "description": "OSM feature flags", + "properties": { + "enableAsyncProxyServiceMapping": { + "type": "boolean" + }, + "enableEgressPolicy": { + "type": "boolean" + }, + "enableEnvoyActiveHealthChecks": { + "type": "boolean" + }, + "enableIngressBackendPolicy": { + "type": "boolean" + }, + "enableMulticlusterMode": { + "type": "boolean" + }, + "enableRetryPolicy": { + "type": "boolean" + }, + "enableSnapshotCacheMode": { + "type": "boolean" + }, + "enableWASMStats": { + "type": "boolean" + } + }, + "type": "object" + }, + "observability": { + "description": "Configuration for observing the service mesh, including metrics, logs, tracing etc,.", + "properties": { + "enableDebugServer": { + "description": "Enables a debug endpoint on the osm-controller pod to list information regarding the mesh such as proxy connections, certificates, and SMI policies.", + "type": "boolean" + }, + "osmLogLevel": { + "description": "Allows setting OSM control plane log level at runtime", + "type": "string" + }, + "tracing": { + "description": "Configuration for distributed tracing", + "properties": { + "address": { + "description": "Address of Jaeger tracing deployment, if tracing is enabled.", + "type": "string" + }, + "enable": { + "description": "Enables Jaeger tracing for the mesh.", + "type": "boolean" + }, + "endpoint": { + "description": "Endpoint for tracing data, if tracing is enabled.", + "type": "string" + }, + "port": { + "description": "Port on which tracing is enabled.", + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "sidecar": { + "description": "Configuration for Envoy sidecar", + "properties": { + "configResyncInterval": { + "description": "Resync interval for regular proxy broadcast updates", + "type": "string" + }, + "enablePrivilegedInitContainer": { + "description": "Enables privileged init containers for pods in mesh. When false, init containers only have NET_ADMIN.", + "type": "boolean" + }, + "envoyImage": { + "description": "Image for the Envoy sidecar", + "type": "string" + }, + "envoyWindowsImage": { + "description": "Image for the Envoy sidecar on Windows workers", + "type": "string" + }, + "initContainerImage": { + "description": "Image for the init container", + "type": "string" + }, + "logLevel": { + "description": "Sets the logging verbosity of Envoy proxy sidecar, only applicable to newly created pods joining the mesh.", + "enum": [ + "trace", + "debug", + "info", + "warning", + "warn", + "error", + "critical", + "off" + ], + "type": "string" + }, + "maxDataPlaneConnections": { + "description": "Max allowed data plane sidecar connections", + "type": "integer" + }, + "resources": { + "properties": { + "limits": { + "additionalProperties": true, + "description": "Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/", + "type": "object" + }, + "requests": { + "additionalProperties": true, + "description": "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/", + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "traffic": { + "description": "Configuration for traffic management", + "properties": { + "enableEgress": { + "description": "Enables egress in the mesh", + "type": "boolean" + }, + "enablePermissiveTrafficPolicyMode": { + "description": "True for allowing traffic to flow between client and service pods within the mesh without SMI traffic policies, i.e. no traffic policy enforcement in the mesh. If set to false, enables deny-all traffic policy in mesh i.e. an SMI Traffic Target is necessary for services to communicate.", + "type": "boolean" + }, + "inboundExternalAuthorization": { + "description": "Configures external authorization for inbound and ingress connections.", + "properties": { + "address": { + "description": "Target destination endpoint that will handle external authorization.", + "type": "string" + }, + "enable": { + "description": "Enables/disables the inbound external authorization policy if present.", + "type": "boolean" + }, + "failureModeAllow": { + "description": "Allows specifying if traffic should succeed or fail if the external authorization endpoint fails to respond.", + "type": "boolean" + }, + "port": { + "description": "Remote destination port for the external authorization endpoint.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "statPrefix": { + "default": "inboundExtAuthz", + "description": "String prefix for inbound external authorization related metrics.", + "type": "string" + }, + "timeout": { + "default": "1s", + "description": "Defines the timeout to consider for the remote endpoint to reply in time.", + "type": "string" + } + }, + "type": "object" + }, + "inboundPortExclusionList": { + "description": "Global list of ports to exclude from inbound traffic interception by the sidecar proxy.", + "items": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "type": "array" + }, + "outboundIPRangeExclusionList": { + "description": "Global list of IP address ranges to exclude from outbound traffic interception by the sidecar proxy.", + "items": { + "pattern": "((?:\\d{1,3}\\.){3}\\d{1,3})\\/(\\d{1,2})$", + "type": "string" + }, + "type": "array" + }, + "outboundPortExclusionList": { + "description": "Global list of ports to exclude from outbound traffic interception by the sidecar proxy.", + "items": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "title": "Mesh Config", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.0-rc.1/meshconfig.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.8.0-rc.1/meshconfig.meshery.layer5.io_definition.json new file mode 100755 index 00000000..f69c6b3e --- /dev/null +++ b/templates/oam/workloads/v0.8.0-rc.1/meshconfig.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "MeshConfig", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "meshconfig.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.openservicemesh.io/v1alpha1", + "k8sKind": "MeshConfig", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.8.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.0-rc.1/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.8.0-rc.1/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..60d4f7dd --- /dev/null +++ b/templates/oam/workloads/v0.8.0-rc.1/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "properties": { + "clusters": { + "description": "The clusters the service accounts are hosted on.", + "items": { + "properties": { + "address": { + "description": "a routable IP + port", + "pattern": "^(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3}):[0-9]+$", + "type": "string" + }, + "certificate": { + "description": "mTLS certificates (optional)", + "type": "string" + }, + "name": { + "description": "Name of the remote cluster", + "type": "string" + }, + "priority": { + "description": "Priority of the remote cluster in locality based load balancing", + "minimum": 0, + "type": "integer" + }, + "weight": { + "default": 0, + "description": "Load balancing weight of the remote cluster", + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "address", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "ports": { + "description": "The list of ports that are exposed by this service.", + "items": { + "properties": { + "port": { + "description": "The port that will be exposed by this service.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "default": "TCP", + "description": "The IP protocol for this port. Supports \"TCP\", \"UDP\", and \"SCTP\". Default is TCP.", + "enum": [ + "TCP", + "UDP", + "SCTP" + ], + "type": "string" + } + }, + "required": [ + "port", + "protocol" + ], + "type": "object" + }, + "type": "array" + }, + "serviceAccount": { + "type": "string" + } + }, + "required": [ + "serviceAccount", + "clusters" + ], + "title": "Multi Cluster Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.0-rc.1/multiclusterservice.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.8.0-rc.1/multiclusterservice.meshery.layer5.io_definition.json new file mode 100755 index 00000000..81d57293 --- /dev/null +++ b/templates/oam/workloads/v0.8.0-rc.1/multiclusterservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "MultiClusterService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "multiclusterservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.openservicemesh.io/v1alpha1", + "k8sKind": "MultiClusterService", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.8.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.0-rc.1/tcproute.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.8.0-rc.1/tcproute.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..d0cc9bfe --- /dev/null +++ b/templates/oam/workloads/v0.8.0-rc.1/tcproute.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,25 @@ +{ + "properties": { + "matches": { + "description": "Match conditions of this route.", + "properties": { + "ports": { + "description": "Port numbers to match TCP traffic.", + "items": { + "type": "integer" + }, + "type": "array" + } + }, + "required": [ + "ports" + ], + "type": "object" + } + }, + "required": [ + "matches" + ], + "title": "TCP Route", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.0-rc.1/tcproute.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.8.0-rc.1/tcproute.meshery.layer5.io_definition.json new file mode 100755 index 00000000..f77ca93a --- /dev/null +++ b/templates/oam/workloads/v0.8.0-rc.1/tcproute.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TCPRoute", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "tcproute.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "specs.smi-spec.io/v1alpha4", + "k8sKind": "TCPRoute", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.8.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.0-rc.1/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.8.0-rc.1/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..13f0a9a2 --- /dev/null +++ b/templates/oam/workloads/v0.8.0-rc.1/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,59 @@ +{ + "properties": { + "backends": { + "description": "The backend services of this split.", + "items": { + "properties": { + "service": { + "description": "Name of the Kubernetes service.", + "type": "string" + }, + "weight": { + "description": "Traffic weight value of this backend.", + "type": "number" + } + }, + "required": [ + "service", + "weight" + ], + "type": "object" + }, + "type": "array" + }, + "matches": { + "description": "The HTTP route groups that this traffic split should match.", + "items": { + "properties": { + "kind": { + "description": "Kind of the matching group.", + "enum": [ + "HTTPRouteGroup" + ], + "type": "string" + }, + "name": { + "description": "Name of the matching group.", + "type": "string" + } + }, + "required": [ + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "service": { + "description": "The apex service of this split.", + "type": "string" + } + }, + "required": [ + "service", + "backends" + ], + "title": "Traffic Split", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.0-rc.1/trafficsplit.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.8.0-rc.1/trafficsplit.meshery.layer5.io_definition.json new file mode 100755 index 00000000..c93bad06 --- /dev/null +++ b/templates/oam/workloads/v0.8.0-rc.1/trafficsplit.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TrafficSplit", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "trafficsplit.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "split.smi-spec.io/v1alpha4", + "k8sKind": "TrafficSplit", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.8.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.0-rc.1/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.8.0-rc.1/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..83a24559 --- /dev/null +++ b/templates/oam/workloads/v0.8.0-rc.1/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,91 @@ +{ + "properties": { + "destination": { + "description": "The destination of this traffic target.", + "properties": { + "kind": { + "description": "Kind of the destination.", + "type": "string" + }, + "name": { + "description": "Name of the destination.", + "type": "string" + }, + "namespace": { + "description": "Namespace of the destination.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "rules": { + "description": "Specifications of this traffic target.", + "items": { + "properties": { + "kind": { + "description": "Kind of this spec.", + "enum": [ + "HTTPRouteGroup", + "TCPRoute", + "UDPRoute" + ], + "type": "string" + }, + "matches": { + "description": "Match conditions of this spec.", + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "Name of this spec.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources of this traffic target.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "destination", + "rules", + "sources" + ], + "title": "Traffic Target", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.0-rc.1/traffictarget.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.8.0-rc.1/traffictarget.meshery.layer5.io_definition.json new file mode 100755 index 00000000..fd874d4e --- /dev/null +++ b/templates/oam/workloads/v0.8.0-rc.1/traffictarget.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TrafficTarget", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "traffictarget.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "access.smi-spec.io/v1alpha3", + "k8sKind": "TrafficTarget", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.8.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.0-rc.2/egress.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.8.0-rc.2/egress.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..c77de28d --- /dev/null +++ b/templates/oam/workloads/v0.8.0-rc.2/egress.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,103 @@ +{ + "properties": { + "hosts": { + "description": "Hosts that the sources are allowed to direct external traffic to.", + "items": { + "type": "string" + }, + "type": "array" + }, + "ipAddresses": { + "description": "IP address ranges that the sources are allowed to direct external traffic to.", + "items": { + "pattern": "((?:\\d{1,3}\\.){3}\\d{1,3})\\/(\\d{1,2})$", + "type": "string" + }, + "type": "array" + }, + "matches": { + "description": "The resource references an Egress policy should match on.", + "items": { + "properties": { + "apiGroup": { + "description": "API group for the resource being referenced.", + "type": "string" + }, + "kind": { + "description": "Type of resource being referenced.", + "type": "string" + }, + "name": { + "description": "Name of resource being referenced.", + "type": "string" + } + }, + "required": [ + "apiGroup", + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "ports": { + "description": "Ports that the sources are allowed to direct external traffic to.", + "items": { + "properties": { + "number": { + "description": "Port number of this port.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "description": "Protocol served by this port.", + "type": "string" + } + }, + "required": [ + "number", + "protocol" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources the egress policy is applicable to.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "enum": [ + "ServiceAccount" + ], + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "kind", + "name", + "namespace" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "sources", + "ports" + ], + "title": "Egress", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.0-rc.2/egress.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.8.0-rc.2/egress.meshery.layer5.io_definition.json new file mode 100755 index 00000000..0dccfd2a --- /dev/null +++ b/templates/oam/workloads/v0.8.0-rc.2/egress.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Egress", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "egress.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "policy.openservicemesh.io/v1alpha1", + "k8sKind": "Egress", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.8.0-rc.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.0-rc.2/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.8.0-rc.2/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..6951d46c --- /dev/null +++ b/templates/oam/workloads/v0.8.0-rc.2/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,60 @@ +{ + "properties": { + "matches": { + "description": "Match conditions of this route group.", + "items": { + "properties": { + "headers": { + "description": "Header match conditions of this route.", + "items": { + "additionalProperties": { + "type": "string" + }, + "description": "Header match condition of this route.", + "type": "object" + }, + "type": "array" + }, + "methods": { + "description": "The HTTP methods of this HTTP route.", + "items": { + "description": "The HTTP method of this HTTP route.", + "enum": [ + "*", + "GET", + "HEAD", + "PUT", + "POST", + "DELETE", + "CONNECT", + "OPTIONS", + "TRACE", + "PATCH" + ], + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "Name of the HTTP route.", + "type": "string" + }, + "pathRegex": { + "description": "URI path regex of the HTTP route.", + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "matches" + ], + "title": "HTTP Route Group", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.0-rc.2/httproutegroup.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.8.0-rc.2/httproutegroup.meshery.layer5.io_definition.json new file mode 100755 index 00000000..623ab503 --- /dev/null +++ b/templates/oam/workloads/v0.8.0-rc.2/httproutegroup.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPRouteGroup", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httproutegroup.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "specs.smi-spec.io/v1alpha4", + "k8sKind": "HTTPRouteGroup", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.8.0-rc.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.0-rc.2/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.8.0-rc.2/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..f5535897 --- /dev/null +++ b/templates/oam/workloads/v0.8.0-rc.2/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,118 @@ +{ + "properties": { + "backends": { + "description": "Backends the IngressBackend policy is applicable to.", + "items": { + "properties": { + "name": { + "description": "Name of the backend.", + "type": "string" + }, + "port": { + "description": "Port of the backend.", + "properties": { + "number": { + "description": "Port number of this port.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "description": "Protocol served by this port.", + "type": "string" + } + }, + "required": [ + "number", + "protocol" + ], + "type": "object" + }, + "tls": { + "description": "TLS configuration for the backend.", + "properties": { + "skipClientCertValidation": { + "description": "Skip client certificate validation.", + "type": "boolean" + }, + "sniHosts": { + "description": "SNI hosts allowed by the backend.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "skipClientCertValidation" + ], + "type": "object" + } + }, + "required": [ + "name", + "port" + ], + "type": "object" + }, + "type": "array" + }, + "matches": { + "description": "The resource references an IngressBackend policy should match on.", + "items": { + "properties": { + "apiGroup": { + "description": "API group for the resource being referenced.", + "type": "string" + }, + "kind": { + "description": "Type of resource being referenced.", + "type": "string" + }, + "name": { + "description": "Name of resource being referenced.", + "type": "string" + } + }, + "required": [ + "apiGroup", + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources the IngressBackend policy is applicable to.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "backends", + "sources" + ], + "title": "Ingress Backend", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.0-rc.2/ingressbackend.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.8.0-rc.2/ingressbackend.meshery.layer5.io_definition.json new file mode 100755 index 00000000..bdec784f --- /dev/null +++ b/templates/oam/workloads/v0.8.0-rc.2/ingressbackend.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "IngressBackend", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "ingressbackend.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "policy.openservicemesh.io/v1alpha1", + "k8sKind": "IngressBackend", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.8.0-rc.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.0-rc.2/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.8.0-rc.2/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..b607634a --- /dev/null +++ b/templates/oam/workloads/v0.8.0-rc.2/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,264 @@ +{ + "properties": { + "certificate": { + "description": "Configuration for certificate management", + "properties": { + "certKeyBitSize": { + "description": "Sets the certificate key bit size for data plane certificates.", + "type": "integer" + }, + "ingressGateway": { + "description": "Configuration for the ingress gateway's certificate", + "properties": { + "secret": { + "description": "Secret reference to store the certificate in", + "properties": { + "name": { + "description": "Name of the secret", + "type": "string" + }, + "namespace": { + "description": "Namespace of the secret", + "type": "string" + } + }, + "required": [ + "name", + "namespace" + ], + "type": "object" + }, + "subjectAltNames": { + "description": "Subject Alternative Names secured by the certificate", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "validityDuration": { + "description": "Certificate validity duration, represented as a sequence of decimal numbers each with optional fraction and a unit suffix", + "type": "string" + } + }, + "required": [ + "subjectAltNames", + "validityDuration", + "secret" + ], + "type": "object" + }, + "serviceCertValidityDuration": { + "description": "Sets the service certificate validity duration, represented as a sequence of decimal numbers each with optional fraction and a unit suffix.", + "type": "string" + } + }, + "required": [ + "serviceCertValidityDuration", + "certKeyBitSize" + ], + "type": "object" + }, + "featureFlags": { + "description": "OSM feature flags", + "properties": { + "enableAsyncProxyServiceMapping": { + "type": "boolean" + }, + "enableEgressPolicy": { + "type": "boolean" + }, + "enableEnvoyActiveHealthChecks": { + "type": "boolean" + }, + "enableIngressBackendPolicy": { + "type": "boolean" + }, + "enableMulticlusterMode": { + "type": "boolean" + }, + "enableRetryPolicy": { + "type": "boolean" + }, + "enableSnapshotCacheMode": { + "type": "boolean" + }, + "enableWASMStats": { + "type": "boolean" + } + }, + "type": "object" + }, + "observability": { + "description": "Configuration for observing the service mesh, including metrics, logs, tracing etc,.", + "properties": { + "enableDebugServer": { + "description": "Enables a debug endpoint on the osm-controller pod to list information regarding the mesh such as proxy connections, certificates, and SMI policies.", + "type": "boolean" + }, + "osmLogLevel": { + "description": "Allows setting OSM control plane log level at runtime", + "type": "string" + }, + "tracing": { + "description": "Configuration for distributed tracing", + "properties": { + "address": { + "description": "Address of Jaeger tracing deployment, if tracing is enabled.", + "type": "string" + }, + "enable": { + "description": "Enables Jaeger tracing for the mesh.", + "type": "boolean" + }, + "endpoint": { + "description": "Endpoint for tracing data, if tracing is enabled.", + "type": "string" + }, + "port": { + "description": "Port on which tracing is enabled.", + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "sidecar": { + "description": "Configuration for Envoy sidecar", + "properties": { + "configResyncInterval": { + "description": "Resync interval for regular proxy broadcast updates", + "type": "string" + }, + "enablePrivilegedInitContainer": { + "description": "Enables privileged init containers for pods in mesh. When false, init containers only have NET_ADMIN.", + "type": "boolean" + }, + "envoyImage": { + "description": "Image for the Envoy sidecar", + "type": "string" + }, + "envoyWindowsImage": { + "description": "Image for the Envoy sidecar on Windows workers", + "type": "string" + }, + "initContainerImage": { + "description": "Image for the init container", + "type": "string" + }, + "logLevel": { + "description": "Sets the logging verbosity of Envoy proxy sidecar, only applicable to newly created pods joining the mesh.", + "enum": [ + "trace", + "debug", + "info", + "warning", + "warn", + "error", + "critical", + "off" + ], + "type": "string" + }, + "maxDataPlaneConnections": { + "description": "Max allowed data plane sidecar connections", + "type": "integer" + }, + "resources": { + "properties": { + "limits": { + "additionalProperties": true, + "description": "Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/", + "type": "object" + }, + "requests": { + "additionalProperties": true, + "description": "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/", + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "traffic": { + "description": "Configuration for traffic management", + "properties": { + "enableEgress": { + "description": "Enables egress in the mesh", + "type": "boolean" + }, + "enablePermissiveTrafficPolicyMode": { + "description": "True for allowing traffic to flow between client and service pods within the mesh without SMI traffic policies, i.e. no traffic policy enforcement in the mesh. If set to false, enables deny-all traffic policy in mesh i.e. an SMI Traffic Target is necessary for services to communicate.", + "type": "boolean" + }, + "inboundExternalAuthorization": { + "description": "Configures external authorization for inbound and ingress connections.", + "properties": { + "address": { + "description": "Target destination endpoint that will handle external authorization.", + "type": "string" + }, + "enable": { + "description": "Enables/disables the inbound external authorization policy if present.", + "type": "boolean" + }, + "failureModeAllow": { + "description": "Allows specifying if traffic should succeed or fail if the external authorization endpoint fails to respond.", + "type": "boolean" + }, + "port": { + "description": "Remote destination port for the external authorization endpoint.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "statPrefix": { + "default": "inboundExtAuthz", + "description": "String prefix for inbound external authorization related metrics.", + "type": "string" + }, + "timeout": { + "default": "1s", + "description": "Defines the timeout to consider for the remote endpoint to reply in time.", + "type": "string" + } + }, + "type": "object" + }, + "inboundPortExclusionList": { + "description": "Global list of ports to exclude from inbound traffic interception by the sidecar proxy.", + "items": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "type": "array" + }, + "outboundIPRangeExclusionList": { + "description": "Global list of IP address ranges to exclude from outbound traffic interception by the sidecar proxy.", + "items": { + "pattern": "((?:\\d{1,3}\\.){3}\\d{1,3})\\/(\\d{1,2})$", + "type": "string" + }, + "type": "array" + }, + "outboundPortExclusionList": { + "description": "Global list of ports to exclude from outbound traffic interception by the sidecar proxy.", + "items": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "title": "Mesh Config", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.0-rc.2/meshconfig.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.8.0-rc.2/meshconfig.meshery.layer5.io_definition.json new file mode 100755 index 00000000..69c8f3c0 --- /dev/null +++ b/templates/oam/workloads/v0.8.0-rc.2/meshconfig.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "MeshConfig", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "meshconfig.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.openservicemesh.io/v1alpha1", + "k8sKind": "MeshConfig", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.8.0-rc.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.0-rc.2/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.8.0-rc.2/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..60d4f7dd --- /dev/null +++ b/templates/oam/workloads/v0.8.0-rc.2/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "properties": { + "clusters": { + "description": "The clusters the service accounts are hosted on.", + "items": { + "properties": { + "address": { + "description": "a routable IP + port", + "pattern": "^(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3}):[0-9]+$", + "type": "string" + }, + "certificate": { + "description": "mTLS certificates (optional)", + "type": "string" + }, + "name": { + "description": "Name of the remote cluster", + "type": "string" + }, + "priority": { + "description": "Priority of the remote cluster in locality based load balancing", + "minimum": 0, + "type": "integer" + }, + "weight": { + "default": 0, + "description": "Load balancing weight of the remote cluster", + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "address", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "ports": { + "description": "The list of ports that are exposed by this service.", + "items": { + "properties": { + "port": { + "description": "The port that will be exposed by this service.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "default": "TCP", + "description": "The IP protocol for this port. Supports \"TCP\", \"UDP\", and \"SCTP\". Default is TCP.", + "enum": [ + "TCP", + "UDP", + "SCTP" + ], + "type": "string" + } + }, + "required": [ + "port", + "protocol" + ], + "type": "object" + }, + "type": "array" + }, + "serviceAccount": { + "type": "string" + } + }, + "required": [ + "serviceAccount", + "clusters" + ], + "title": "Multi Cluster Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.0-rc.2/multiclusterservice.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.8.0-rc.2/multiclusterservice.meshery.layer5.io_definition.json new file mode 100755 index 00000000..1a7b13d2 --- /dev/null +++ b/templates/oam/workloads/v0.8.0-rc.2/multiclusterservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "MultiClusterService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "multiclusterservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.openservicemesh.io/v1alpha1", + "k8sKind": "MultiClusterService", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.8.0-rc.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.0-rc.2/tcproute.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.8.0-rc.2/tcproute.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..d0cc9bfe --- /dev/null +++ b/templates/oam/workloads/v0.8.0-rc.2/tcproute.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,25 @@ +{ + "properties": { + "matches": { + "description": "Match conditions of this route.", + "properties": { + "ports": { + "description": "Port numbers to match TCP traffic.", + "items": { + "type": "integer" + }, + "type": "array" + } + }, + "required": [ + "ports" + ], + "type": "object" + } + }, + "required": [ + "matches" + ], + "title": "TCP Route", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.0-rc.2/tcproute.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.8.0-rc.2/tcproute.meshery.layer5.io_definition.json new file mode 100755 index 00000000..8f0d8987 --- /dev/null +++ b/templates/oam/workloads/v0.8.0-rc.2/tcproute.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TCPRoute", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "tcproute.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "specs.smi-spec.io/v1alpha4", + "k8sKind": "TCPRoute", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.8.0-rc.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.0-rc.2/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.8.0-rc.2/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..13f0a9a2 --- /dev/null +++ b/templates/oam/workloads/v0.8.0-rc.2/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,59 @@ +{ + "properties": { + "backends": { + "description": "The backend services of this split.", + "items": { + "properties": { + "service": { + "description": "Name of the Kubernetes service.", + "type": "string" + }, + "weight": { + "description": "Traffic weight value of this backend.", + "type": "number" + } + }, + "required": [ + "service", + "weight" + ], + "type": "object" + }, + "type": "array" + }, + "matches": { + "description": "The HTTP route groups that this traffic split should match.", + "items": { + "properties": { + "kind": { + "description": "Kind of the matching group.", + "enum": [ + "HTTPRouteGroup" + ], + "type": "string" + }, + "name": { + "description": "Name of the matching group.", + "type": "string" + } + }, + "required": [ + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "service": { + "description": "The apex service of this split.", + "type": "string" + } + }, + "required": [ + "service", + "backends" + ], + "title": "Traffic Split", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.0-rc.2/trafficsplit.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.8.0-rc.2/trafficsplit.meshery.layer5.io_definition.json new file mode 100755 index 00000000..38c24e1b --- /dev/null +++ b/templates/oam/workloads/v0.8.0-rc.2/trafficsplit.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TrafficSplit", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "trafficsplit.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "split.smi-spec.io/v1alpha4", + "k8sKind": "TrafficSplit", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.8.0-rc.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.0-rc.2/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.8.0-rc.2/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..83a24559 --- /dev/null +++ b/templates/oam/workloads/v0.8.0-rc.2/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,91 @@ +{ + "properties": { + "destination": { + "description": "The destination of this traffic target.", + "properties": { + "kind": { + "description": "Kind of the destination.", + "type": "string" + }, + "name": { + "description": "Name of the destination.", + "type": "string" + }, + "namespace": { + "description": "Namespace of the destination.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "rules": { + "description": "Specifications of this traffic target.", + "items": { + "properties": { + "kind": { + "description": "Kind of this spec.", + "enum": [ + "HTTPRouteGroup", + "TCPRoute", + "UDPRoute" + ], + "type": "string" + }, + "matches": { + "description": "Match conditions of this spec.", + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "Name of this spec.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources of this traffic target.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "destination", + "rules", + "sources" + ], + "title": "Traffic Target", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.0-rc.2/traffictarget.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.8.0-rc.2/traffictarget.meshery.layer5.io_definition.json new file mode 100755 index 00000000..e84c41e4 --- /dev/null +++ b/templates/oam/workloads/v0.8.0-rc.2/traffictarget.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TrafficTarget", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "traffictarget.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "access.smi-spec.io/v1alpha3", + "k8sKind": "TrafficTarget", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.8.0-rc.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.0/egress.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.8.0/egress.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..c77de28d --- /dev/null +++ b/templates/oam/workloads/v0.8.0/egress.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,103 @@ +{ + "properties": { + "hosts": { + "description": "Hosts that the sources are allowed to direct external traffic to.", + "items": { + "type": "string" + }, + "type": "array" + }, + "ipAddresses": { + "description": "IP address ranges that the sources are allowed to direct external traffic to.", + "items": { + "pattern": "((?:\\d{1,3}\\.){3}\\d{1,3})\\/(\\d{1,2})$", + "type": "string" + }, + "type": "array" + }, + "matches": { + "description": "The resource references an Egress policy should match on.", + "items": { + "properties": { + "apiGroup": { + "description": "API group for the resource being referenced.", + "type": "string" + }, + "kind": { + "description": "Type of resource being referenced.", + "type": "string" + }, + "name": { + "description": "Name of resource being referenced.", + "type": "string" + } + }, + "required": [ + "apiGroup", + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "ports": { + "description": "Ports that the sources are allowed to direct external traffic to.", + "items": { + "properties": { + "number": { + "description": "Port number of this port.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "description": "Protocol served by this port.", + "type": "string" + } + }, + "required": [ + "number", + "protocol" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources the egress policy is applicable to.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "enum": [ + "ServiceAccount" + ], + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "kind", + "name", + "namespace" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "sources", + "ports" + ], + "title": "Egress", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.0/egress.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.8.0/egress.meshery.layer5.io_definition.json new file mode 100755 index 00000000..25a46463 --- /dev/null +++ b/templates/oam/workloads/v0.8.0/egress.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Egress", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "egress.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "policy.openservicemesh.io/v1alpha1", + "k8sKind": "Egress", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.8.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.0/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.8.0/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..6951d46c --- /dev/null +++ b/templates/oam/workloads/v0.8.0/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,60 @@ +{ + "properties": { + "matches": { + "description": "Match conditions of this route group.", + "items": { + "properties": { + "headers": { + "description": "Header match conditions of this route.", + "items": { + "additionalProperties": { + "type": "string" + }, + "description": "Header match condition of this route.", + "type": "object" + }, + "type": "array" + }, + "methods": { + "description": "The HTTP methods of this HTTP route.", + "items": { + "description": "The HTTP method of this HTTP route.", + "enum": [ + "*", + "GET", + "HEAD", + "PUT", + "POST", + "DELETE", + "CONNECT", + "OPTIONS", + "TRACE", + "PATCH" + ], + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "Name of the HTTP route.", + "type": "string" + }, + "pathRegex": { + "description": "URI path regex of the HTTP route.", + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "matches" + ], + "title": "HTTP Route Group", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.0/httproutegroup.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.8.0/httproutegroup.meshery.layer5.io_definition.json new file mode 100755 index 00000000..95302a29 --- /dev/null +++ b/templates/oam/workloads/v0.8.0/httproutegroup.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPRouteGroup", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httproutegroup.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "specs.smi-spec.io/v1alpha4", + "k8sKind": "HTTPRouteGroup", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.8.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.0/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.8.0/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..f5535897 --- /dev/null +++ b/templates/oam/workloads/v0.8.0/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,118 @@ +{ + "properties": { + "backends": { + "description": "Backends the IngressBackend policy is applicable to.", + "items": { + "properties": { + "name": { + "description": "Name of the backend.", + "type": "string" + }, + "port": { + "description": "Port of the backend.", + "properties": { + "number": { + "description": "Port number of this port.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "description": "Protocol served by this port.", + "type": "string" + } + }, + "required": [ + "number", + "protocol" + ], + "type": "object" + }, + "tls": { + "description": "TLS configuration for the backend.", + "properties": { + "skipClientCertValidation": { + "description": "Skip client certificate validation.", + "type": "boolean" + }, + "sniHosts": { + "description": "SNI hosts allowed by the backend.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "skipClientCertValidation" + ], + "type": "object" + } + }, + "required": [ + "name", + "port" + ], + "type": "object" + }, + "type": "array" + }, + "matches": { + "description": "The resource references an IngressBackend policy should match on.", + "items": { + "properties": { + "apiGroup": { + "description": "API group for the resource being referenced.", + "type": "string" + }, + "kind": { + "description": "Type of resource being referenced.", + "type": "string" + }, + "name": { + "description": "Name of resource being referenced.", + "type": "string" + } + }, + "required": [ + "apiGroup", + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources the IngressBackend policy is applicable to.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "backends", + "sources" + ], + "title": "Ingress Backend", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.0/ingressbackend.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.8.0/ingressbackend.meshery.layer5.io_definition.json new file mode 100755 index 00000000..ff83bffd --- /dev/null +++ b/templates/oam/workloads/v0.8.0/ingressbackend.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "IngressBackend", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "ingressbackend.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "policy.openservicemesh.io/v1alpha1", + "k8sKind": "IngressBackend", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.8.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.0/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.8.0/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..b607634a --- /dev/null +++ b/templates/oam/workloads/v0.8.0/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,264 @@ +{ + "properties": { + "certificate": { + "description": "Configuration for certificate management", + "properties": { + "certKeyBitSize": { + "description": "Sets the certificate key bit size for data plane certificates.", + "type": "integer" + }, + "ingressGateway": { + "description": "Configuration for the ingress gateway's certificate", + "properties": { + "secret": { + "description": "Secret reference to store the certificate in", + "properties": { + "name": { + "description": "Name of the secret", + "type": "string" + }, + "namespace": { + "description": "Namespace of the secret", + "type": "string" + } + }, + "required": [ + "name", + "namespace" + ], + "type": "object" + }, + "subjectAltNames": { + "description": "Subject Alternative Names secured by the certificate", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "validityDuration": { + "description": "Certificate validity duration, represented as a sequence of decimal numbers each with optional fraction and a unit suffix", + "type": "string" + } + }, + "required": [ + "subjectAltNames", + "validityDuration", + "secret" + ], + "type": "object" + }, + "serviceCertValidityDuration": { + "description": "Sets the service certificate validity duration, represented as a sequence of decimal numbers each with optional fraction and a unit suffix.", + "type": "string" + } + }, + "required": [ + "serviceCertValidityDuration", + "certKeyBitSize" + ], + "type": "object" + }, + "featureFlags": { + "description": "OSM feature flags", + "properties": { + "enableAsyncProxyServiceMapping": { + "type": "boolean" + }, + "enableEgressPolicy": { + "type": "boolean" + }, + "enableEnvoyActiveHealthChecks": { + "type": "boolean" + }, + "enableIngressBackendPolicy": { + "type": "boolean" + }, + "enableMulticlusterMode": { + "type": "boolean" + }, + "enableRetryPolicy": { + "type": "boolean" + }, + "enableSnapshotCacheMode": { + "type": "boolean" + }, + "enableWASMStats": { + "type": "boolean" + } + }, + "type": "object" + }, + "observability": { + "description": "Configuration for observing the service mesh, including metrics, logs, tracing etc,.", + "properties": { + "enableDebugServer": { + "description": "Enables a debug endpoint on the osm-controller pod to list information regarding the mesh such as proxy connections, certificates, and SMI policies.", + "type": "boolean" + }, + "osmLogLevel": { + "description": "Allows setting OSM control plane log level at runtime", + "type": "string" + }, + "tracing": { + "description": "Configuration for distributed tracing", + "properties": { + "address": { + "description": "Address of Jaeger tracing deployment, if tracing is enabled.", + "type": "string" + }, + "enable": { + "description": "Enables Jaeger tracing for the mesh.", + "type": "boolean" + }, + "endpoint": { + "description": "Endpoint for tracing data, if tracing is enabled.", + "type": "string" + }, + "port": { + "description": "Port on which tracing is enabled.", + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "sidecar": { + "description": "Configuration for Envoy sidecar", + "properties": { + "configResyncInterval": { + "description": "Resync interval for regular proxy broadcast updates", + "type": "string" + }, + "enablePrivilegedInitContainer": { + "description": "Enables privileged init containers for pods in mesh. When false, init containers only have NET_ADMIN.", + "type": "boolean" + }, + "envoyImage": { + "description": "Image for the Envoy sidecar", + "type": "string" + }, + "envoyWindowsImage": { + "description": "Image for the Envoy sidecar on Windows workers", + "type": "string" + }, + "initContainerImage": { + "description": "Image for the init container", + "type": "string" + }, + "logLevel": { + "description": "Sets the logging verbosity of Envoy proxy sidecar, only applicable to newly created pods joining the mesh.", + "enum": [ + "trace", + "debug", + "info", + "warning", + "warn", + "error", + "critical", + "off" + ], + "type": "string" + }, + "maxDataPlaneConnections": { + "description": "Max allowed data plane sidecar connections", + "type": "integer" + }, + "resources": { + "properties": { + "limits": { + "additionalProperties": true, + "description": "Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/", + "type": "object" + }, + "requests": { + "additionalProperties": true, + "description": "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/", + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "traffic": { + "description": "Configuration for traffic management", + "properties": { + "enableEgress": { + "description": "Enables egress in the mesh", + "type": "boolean" + }, + "enablePermissiveTrafficPolicyMode": { + "description": "True for allowing traffic to flow between client and service pods within the mesh without SMI traffic policies, i.e. no traffic policy enforcement in the mesh. If set to false, enables deny-all traffic policy in mesh i.e. an SMI Traffic Target is necessary for services to communicate.", + "type": "boolean" + }, + "inboundExternalAuthorization": { + "description": "Configures external authorization for inbound and ingress connections.", + "properties": { + "address": { + "description": "Target destination endpoint that will handle external authorization.", + "type": "string" + }, + "enable": { + "description": "Enables/disables the inbound external authorization policy if present.", + "type": "boolean" + }, + "failureModeAllow": { + "description": "Allows specifying if traffic should succeed or fail if the external authorization endpoint fails to respond.", + "type": "boolean" + }, + "port": { + "description": "Remote destination port for the external authorization endpoint.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "statPrefix": { + "default": "inboundExtAuthz", + "description": "String prefix for inbound external authorization related metrics.", + "type": "string" + }, + "timeout": { + "default": "1s", + "description": "Defines the timeout to consider for the remote endpoint to reply in time.", + "type": "string" + } + }, + "type": "object" + }, + "inboundPortExclusionList": { + "description": "Global list of ports to exclude from inbound traffic interception by the sidecar proxy.", + "items": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "type": "array" + }, + "outboundIPRangeExclusionList": { + "description": "Global list of IP address ranges to exclude from outbound traffic interception by the sidecar proxy.", + "items": { + "pattern": "((?:\\d{1,3}\\.){3}\\d{1,3})\\/(\\d{1,2})$", + "type": "string" + }, + "type": "array" + }, + "outboundPortExclusionList": { + "description": "Global list of ports to exclude from outbound traffic interception by the sidecar proxy.", + "items": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "title": "Mesh Config", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.0/meshconfig.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.8.0/meshconfig.meshery.layer5.io_definition.json new file mode 100755 index 00000000..7a7a708e --- /dev/null +++ b/templates/oam/workloads/v0.8.0/meshconfig.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "MeshConfig", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "meshconfig.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.openservicemesh.io/v1alpha1", + "k8sKind": "MeshConfig", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.8.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.0/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.8.0/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..60d4f7dd --- /dev/null +++ b/templates/oam/workloads/v0.8.0/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "properties": { + "clusters": { + "description": "The clusters the service accounts are hosted on.", + "items": { + "properties": { + "address": { + "description": "a routable IP + port", + "pattern": "^(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3}):[0-9]+$", + "type": "string" + }, + "certificate": { + "description": "mTLS certificates (optional)", + "type": "string" + }, + "name": { + "description": "Name of the remote cluster", + "type": "string" + }, + "priority": { + "description": "Priority of the remote cluster in locality based load balancing", + "minimum": 0, + "type": "integer" + }, + "weight": { + "default": 0, + "description": "Load balancing weight of the remote cluster", + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "address", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "ports": { + "description": "The list of ports that are exposed by this service.", + "items": { + "properties": { + "port": { + "description": "The port that will be exposed by this service.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "default": "TCP", + "description": "The IP protocol for this port. Supports \"TCP\", \"UDP\", and \"SCTP\". Default is TCP.", + "enum": [ + "TCP", + "UDP", + "SCTP" + ], + "type": "string" + } + }, + "required": [ + "port", + "protocol" + ], + "type": "object" + }, + "type": "array" + }, + "serviceAccount": { + "type": "string" + } + }, + "required": [ + "serviceAccount", + "clusters" + ], + "title": "Multi Cluster Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.0/multiclusterservice.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.8.0/multiclusterservice.meshery.layer5.io_definition.json new file mode 100755 index 00000000..ddf66e8c --- /dev/null +++ b/templates/oam/workloads/v0.8.0/multiclusterservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "MultiClusterService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "multiclusterservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.openservicemesh.io/v1alpha1", + "k8sKind": "MultiClusterService", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.8.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.0/tcproute.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.8.0/tcproute.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..d0cc9bfe --- /dev/null +++ b/templates/oam/workloads/v0.8.0/tcproute.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,25 @@ +{ + "properties": { + "matches": { + "description": "Match conditions of this route.", + "properties": { + "ports": { + "description": "Port numbers to match TCP traffic.", + "items": { + "type": "integer" + }, + "type": "array" + } + }, + "required": [ + "ports" + ], + "type": "object" + } + }, + "required": [ + "matches" + ], + "title": "TCP Route", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.0/tcproute.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.8.0/tcproute.meshery.layer5.io_definition.json new file mode 100755 index 00000000..560f0546 --- /dev/null +++ b/templates/oam/workloads/v0.8.0/tcproute.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TCPRoute", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "tcproute.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "specs.smi-spec.io/v1alpha4", + "k8sKind": "TCPRoute", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.8.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.0/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.8.0/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..13f0a9a2 --- /dev/null +++ b/templates/oam/workloads/v0.8.0/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,59 @@ +{ + "properties": { + "backends": { + "description": "The backend services of this split.", + "items": { + "properties": { + "service": { + "description": "Name of the Kubernetes service.", + "type": "string" + }, + "weight": { + "description": "Traffic weight value of this backend.", + "type": "number" + } + }, + "required": [ + "service", + "weight" + ], + "type": "object" + }, + "type": "array" + }, + "matches": { + "description": "The HTTP route groups that this traffic split should match.", + "items": { + "properties": { + "kind": { + "description": "Kind of the matching group.", + "enum": [ + "HTTPRouteGroup" + ], + "type": "string" + }, + "name": { + "description": "Name of the matching group.", + "type": "string" + } + }, + "required": [ + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "service": { + "description": "The apex service of this split.", + "type": "string" + } + }, + "required": [ + "service", + "backends" + ], + "title": "Traffic Split", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.0/trafficsplit.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.8.0/trafficsplit.meshery.layer5.io_definition.json new file mode 100755 index 00000000..c820e596 --- /dev/null +++ b/templates/oam/workloads/v0.8.0/trafficsplit.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TrafficSplit", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "trafficsplit.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "split.smi-spec.io/v1alpha4", + "k8sKind": "TrafficSplit", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.8.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.0/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.8.0/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..83a24559 --- /dev/null +++ b/templates/oam/workloads/v0.8.0/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,91 @@ +{ + "properties": { + "destination": { + "description": "The destination of this traffic target.", + "properties": { + "kind": { + "description": "Kind of the destination.", + "type": "string" + }, + "name": { + "description": "Name of the destination.", + "type": "string" + }, + "namespace": { + "description": "Namespace of the destination.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "rules": { + "description": "Specifications of this traffic target.", + "items": { + "properties": { + "kind": { + "description": "Kind of this spec.", + "enum": [ + "HTTPRouteGroup", + "TCPRoute", + "UDPRoute" + ], + "type": "string" + }, + "matches": { + "description": "Match conditions of this spec.", + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "Name of this spec.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources of this traffic target.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "destination", + "rules", + "sources" + ], + "title": "Traffic Target", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.0/traffictarget.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.8.0/traffictarget.meshery.layer5.io_definition.json new file mode 100755 index 00000000..0b5f1220 --- /dev/null +++ b/templates/oam/workloads/v0.8.0/traffictarget.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TrafficTarget", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "traffictarget.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "access.smi-spec.io/v1alpha3", + "k8sKind": "TrafficTarget", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.8.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.1-rc.1/egress.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.8.1-rc.1/egress.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..c77de28d --- /dev/null +++ b/templates/oam/workloads/v0.8.1-rc.1/egress.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,103 @@ +{ + "properties": { + "hosts": { + "description": "Hosts that the sources are allowed to direct external traffic to.", + "items": { + "type": "string" + }, + "type": "array" + }, + "ipAddresses": { + "description": "IP address ranges that the sources are allowed to direct external traffic to.", + "items": { + "pattern": "((?:\\d{1,3}\\.){3}\\d{1,3})\\/(\\d{1,2})$", + "type": "string" + }, + "type": "array" + }, + "matches": { + "description": "The resource references an Egress policy should match on.", + "items": { + "properties": { + "apiGroup": { + "description": "API group for the resource being referenced.", + "type": "string" + }, + "kind": { + "description": "Type of resource being referenced.", + "type": "string" + }, + "name": { + "description": "Name of resource being referenced.", + "type": "string" + } + }, + "required": [ + "apiGroup", + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "ports": { + "description": "Ports that the sources are allowed to direct external traffic to.", + "items": { + "properties": { + "number": { + "description": "Port number of this port.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "description": "Protocol served by this port.", + "type": "string" + } + }, + "required": [ + "number", + "protocol" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources the egress policy is applicable to.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "enum": [ + "ServiceAccount" + ], + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "kind", + "name", + "namespace" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "sources", + "ports" + ], + "title": "Egress", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.1-rc.1/egress.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.8.1-rc.1/egress.meshery.layer5.io_definition.json new file mode 100755 index 00000000..17bc4206 --- /dev/null +++ b/templates/oam/workloads/v0.8.1-rc.1/egress.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Egress", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "egress.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "policy.openservicemesh.io/v1alpha1", + "k8sKind": "Egress", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.8.1-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.1-rc.1/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.8.1-rc.1/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..6951d46c --- /dev/null +++ b/templates/oam/workloads/v0.8.1-rc.1/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,60 @@ +{ + "properties": { + "matches": { + "description": "Match conditions of this route group.", + "items": { + "properties": { + "headers": { + "description": "Header match conditions of this route.", + "items": { + "additionalProperties": { + "type": "string" + }, + "description": "Header match condition of this route.", + "type": "object" + }, + "type": "array" + }, + "methods": { + "description": "The HTTP methods of this HTTP route.", + "items": { + "description": "The HTTP method of this HTTP route.", + "enum": [ + "*", + "GET", + "HEAD", + "PUT", + "POST", + "DELETE", + "CONNECT", + "OPTIONS", + "TRACE", + "PATCH" + ], + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "Name of the HTTP route.", + "type": "string" + }, + "pathRegex": { + "description": "URI path regex of the HTTP route.", + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "matches" + ], + "title": "HTTP Route Group", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.1-rc.1/httproutegroup.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.8.1-rc.1/httproutegroup.meshery.layer5.io_definition.json new file mode 100755 index 00000000..24506f2a --- /dev/null +++ b/templates/oam/workloads/v0.8.1-rc.1/httproutegroup.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPRouteGroup", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httproutegroup.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "specs.smi-spec.io/v1alpha4", + "k8sKind": "HTTPRouteGroup", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.8.1-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.1-rc.1/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.8.1-rc.1/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..f5535897 --- /dev/null +++ b/templates/oam/workloads/v0.8.1-rc.1/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,118 @@ +{ + "properties": { + "backends": { + "description": "Backends the IngressBackend policy is applicable to.", + "items": { + "properties": { + "name": { + "description": "Name of the backend.", + "type": "string" + }, + "port": { + "description": "Port of the backend.", + "properties": { + "number": { + "description": "Port number of this port.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "description": "Protocol served by this port.", + "type": "string" + } + }, + "required": [ + "number", + "protocol" + ], + "type": "object" + }, + "tls": { + "description": "TLS configuration for the backend.", + "properties": { + "skipClientCertValidation": { + "description": "Skip client certificate validation.", + "type": "boolean" + }, + "sniHosts": { + "description": "SNI hosts allowed by the backend.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "skipClientCertValidation" + ], + "type": "object" + } + }, + "required": [ + "name", + "port" + ], + "type": "object" + }, + "type": "array" + }, + "matches": { + "description": "The resource references an IngressBackend policy should match on.", + "items": { + "properties": { + "apiGroup": { + "description": "API group for the resource being referenced.", + "type": "string" + }, + "kind": { + "description": "Type of resource being referenced.", + "type": "string" + }, + "name": { + "description": "Name of resource being referenced.", + "type": "string" + } + }, + "required": [ + "apiGroup", + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources the IngressBackend policy is applicable to.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "backends", + "sources" + ], + "title": "Ingress Backend", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.1-rc.1/ingressbackend.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.8.1-rc.1/ingressbackend.meshery.layer5.io_definition.json new file mode 100755 index 00000000..ac63cdde --- /dev/null +++ b/templates/oam/workloads/v0.8.1-rc.1/ingressbackend.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "IngressBackend", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "ingressbackend.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "policy.openservicemesh.io/v1alpha1", + "k8sKind": "IngressBackend", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.8.1-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.1-rc.1/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.8.1-rc.1/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..b607634a --- /dev/null +++ b/templates/oam/workloads/v0.8.1-rc.1/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,264 @@ +{ + "properties": { + "certificate": { + "description": "Configuration for certificate management", + "properties": { + "certKeyBitSize": { + "description": "Sets the certificate key bit size for data plane certificates.", + "type": "integer" + }, + "ingressGateway": { + "description": "Configuration for the ingress gateway's certificate", + "properties": { + "secret": { + "description": "Secret reference to store the certificate in", + "properties": { + "name": { + "description": "Name of the secret", + "type": "string" + }, + "namespace": { + "description": "Namespace of the secret", + "type": "string" + } + }, + "required": [ + "name", + "namespace" + ], + "type": "object" + }, + "subjectAltNames": { + "description": "Subject Alternative Names secured by the certificate", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "validityDuration": { + "description": "Certificate validity duration, represented as a sequence of decimal numbers each with optional fraction and a unit suffix", + "type": "string" + } + }, + "required": [ + "subjectAltNames", + "validityDuration", + "secret" + ], + "type": "object" + }, + "serviceCertValidityDuration": { + "description": "Sets the service certificate validity duration, represented as a sequence of decimal numbers each with optional fraction and a unit suffix.", + "type": "string" + } + }, + "required": [ + "serviceCertValidityDuration", + "certKeyBitSize" + ], + "type": "object" + }, + "featureFlags": { + "description": "OSM feature flags", + "properties": { + "enableAsyncProxyServiceMapping": { + "type": "boolean" + }, + "enableEgressPolicy": { + "type": "boolean" + }, + "enableEnvoyActiveHealthChecks": { + "type": "boolean" + }, + "enableIngressBackendPolicy": { + "type": "boolean" + }, + "enableMulticlusterMode": { + "type": "boolean" + }, + "enableRetryPolicy": { + "type": "boolean" + }, + "enableSnapshotCacheMode": { + "type": "boolean" + }, + "enableWASMStats": { + "type": "boolean" + } + }, + "type": "object" + }, + "observability": { + "description": "Configuration for observing the service mesh, including metrics, logs, tracing etc,.", + "properties": { + "enableDebugServer": { + "description": "Enables a debug endpoint on the osm-controller pod to list information regarding the mesh such as proxy connections, certificates, and SMI policies.", + "type": "boolean" + }, + "osmLogLevel": { + "description": "Allows setting OSM control plane log level at runtime", + "type": "string" + }, + "tracing": { + "description": "Configuration for distributed tracing", + "properties": { + "address": { + "description": "Address of Jaeger tracing deployment, if tracing is enabled.", + "type": "string" + }, + "enable": { + "description": "Enables Jaeger tracing for the mesh.", + "type": "boolean" + }, + "endpoint": { + "description": "Endpoint for tracing data, if tracing is enabled.", + "type": "string" + }, + "port": { + "description": "Port on which tracing is enabled.", + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "sidecar": { + "description": "Configuration for Envoy sidecar", + "properties": { + "configResyncInterval": { + "description": "Resync interval for regular proxy broadcast updates", + "type": "string" + }, + "enablePrivilegedInitContainer": { + "description": "Enables privileged init containers for pods in mesh. When false, init containers only have NET_ADMIN.", + "type": "boolean" + }, + "envoyImage": { + "description": "Image for the Envoy sidecar", + "type": "string" + }, + "envoyWindowsImage": { + "description": "Image for the Envoy sidecar on Windows workers", + "type": "string" + }, + "initContainerImage": { + "description": "Image for the init container", + "type": "string" + }, + "logLevel": { + "description": "Sets the logging verbosity of Envoy proxy sidecar, only applicable to newly created pods joining the mesh.", + "enum": [ + "trace", + "debug", + "info", + "warning", + "warn", + "error", + "critical", + "off" + ], + "type": "string" + }, + "maxDataPlaneConnections": { + "description": "Max allowed data plane sidecar connections", + "type": "integer" + }, + "resources": { + "properties": { + "limits": { + "additionalProperties": true, + "description": "Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/", + "type": "object" + }, + "requests": { + "additionalProperties": true, + "description": "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/", + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "traffic": { + "description": "Configuration for traffic management", + "properties": { + "enableEgress": { + "description": "Enables egress in the mesh", + "type": "boolean" + }, + "enablePermissiveTrafficPolicyMode": { + "description": "True for allowing traffic to flow between client and service pods within the mesh without SMI traffic policies, i.e. no traffic policy enforcement in the mesh. If set to false, enables deny-all traffic policy in mesh i.e. an SMI Traffic Target is necessary for services to communicate.", + "type": "boolean" + }, + "inboundExternalAuthorization": { + "description": "Configures external authorization for inbound and ingress connections.", + "properties": { + "address": { + "description": "Target destination endpoint that will handle external authorization.", + "type": "string" + }, + "enable": { + "description": "Enables/disables the inbound external authorization policy if present.", + "type": "boolean" + }, + "failureModeAllow": { + "description": "Allows specifying if traffic should succeed or fail if the external authorization endpoint fails to respond.", + "type": "boolean" + }, + "port": { + "description": "Remote destination port for the external authorization endpoint.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "statPrefix": { + "default": "inboundExtAuthz", + "description": "String prefix for inbound external authorization related metrics.", + "type": "string" + }, + "timeout": { + "default": "1s", + "description": "Defines the timeout to consider for the remote endpoint to reply in time.", + "type": "string" + } + }, + "type": "object" + }, + "inboundPortExclusionList": { + "description": "Global list of ports to exclude from inbound traffic interception by the sidecar proxy.", + "items": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "type": "array" + }, + "outboundIPRangeExclusionList": { + "description": "Global list of IP address ranges to exclude from outbound traffic interception by the sidecar proxy.", + "items": { + "pattern": "((?:\\d{1,3}\\.){3}\\d{1,3})\\/(\\d{1,2})$", + "type": "string" + }, + "type": "array" + }, + "outboundPortExclusionList": { + "description": "Global list of ports to exclude from outbound traffic interception by the sidecar proxy.", + "items": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "title": "Mesh Config", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.1-rc.1/meshconfig.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.8.1-rc.1/meshconfig.meshery.layer5.io_definition.json new file mode 100755 index 00000000..d98c05a3 --- /dev/null +++ b/templates/oam/workloads/v0.8.1-rc.1/meshconfig.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "MeshConfig", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "meshconfig.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.openservicemesh.io/v1alpha1", + "k8sKind": "MeshConfig", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.8.1-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.1-rc.1/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.8.1-rc.1/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..60d4f7dd --- /dev/null +++ b/templates/oam/workloads/v0.8.1-rc.1/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "properties": { + "clusters": { + "description": "The clusters the service accounts are hosted on.", + "items": { + "properties": { + "address": { + "description": "a routable IP + port", + "pattern": "^(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3}):[0-9]+$", + "type": "string" + }, + "certificate": { + "description": "mTLS certificates (optional)", + "type": "string" + }, + "name": { + "description": "Name of the remote cluster", + "type": "string" + }, + "priority": { + "description": "Priority of the remote cluster in locality based load balancing", + "minimum": 0, + "type": "integer" + }, + "weight": { + "default": 0, + "description": "Load balancing weight of the remote cluster", + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "address", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "ports": { + "description": "The list of ports that are exposed by this service.", + "items": { + "properties": { + "port": { + "description": "The port that will be exposed by this service.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "default": "TCP", + "description": "The IP protocol for this port. Supports \"TCP\", \"UDP\", and \"SCTP\". Default is TCP.", + "enum": [ + "TCP", + "UDP", + "SCTP" + ], + "type": "string" + } + }, + "required": [ + "port", + "protocol" + ], + "type": "object" + }, + "type": "array" + }, + "serviceAccount": { + "type": "string" + } + }, + "required": [ + "serviceAccount", + "clusters" + ], + "title": "Multi Cluster Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.1-rc.1/multiclusterservice.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.8.1-rc.1/multiclusterservice.meshery.layer5.io_definition.json new file mode 100755 index 00000000..abc22bb7 --- /dev/null +++ b/templates/oam/workloads/v0.8.1-rc.1/multiclusterservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "MultiClusterService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "multiclusterservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.openservicemesh.io/v1alpha1", + "k8sKind": "MultiClusterService", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.8.1-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.1-rc.1/tcproute.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.8.1-rc.1/tcproute.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..d0cc9bfe --- /dev/null +++ b/templates/oam/workloads/v0.8.1-rc.1/tcproute.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,25 @@ +{ + "properties": { + "matches": { + "description": "Match conditions of this route.", + "properties": { + "ports": { + "description": "Port numbers to match TCP traffic.", + "items": { + "type": "integer" + }, + "type": "array" + } + }, + "required": [ + "ports" + ], + "type": "object" + } + }, + "required": [ + "matches" + ], + "title": "TCP Route", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.1-rc.1/tcproute.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.8.1-rc.1/tcproute.meshery.layer5.io_definition.json new file mode 100755 index 00000000..72092c19 --- /dev/null +++ b/templates/oam/workloads/v0.8.1-rc.1/tcproute.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TCPRoute", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "tcproute.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "specs.smi-spec.io/v1alpha4", + "k8sKind": "TCPRoute", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.8.1-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.1-rc.1/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.8.1-rc.1/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..13f0a9a2 --- /dev/null +++ b/templates/oam/workloads/v0.8.1-rc.1/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,59 @@ +{ + "properties": { + "backends": { + "description": "The backend services of this split.", + "items": { + "properties": { + "service": { + "description": "Name of the Kubernetes service.", + "type": "string" + }, + "weight": { + "description": "Traffic weight value of this backend.", + "type": "number" + } + }, + "required": [ + "service", + "weight" + ], + "type": "object" + }, + "type": "array" + }, + "matches": { + "description": "The HTTP route groups that this traffic split should match.", + "items": { + "properties": { + "kind": { + "description": "Kind of the matching group.", + "enum": [ + "HTTPRouteGroup" + ], + "type": "string" + }, + "name": { + "description": "Name of the matching group.", + "type": "string" + } + }, + "required": [ + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "service": { + "description": "The apex service of this split.", + "type": "string" + } + }, + "required": [ + "service", + "backends" + ], + "title": "Traffic Split", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.1-rc.1/trafficsplit.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.8.1-rc.1/trafficsplit.meshery.layer5.io_definition.json new file mode 100755 index 00000000..658e2c20 --- /dev/null +++ b/templates/oam/workloads/v0.8.1-rc.1/trafficsplit.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TrafficSplit", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "trafficsplit.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "split.smi-spec.io/v1alpha4", + "k8sKind": "TrafficSplit", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.8.1-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.1-rc.1/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.8.1-rc.1/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..83a24559 --- /dev/null +++ b/templates/oam/workloads/v0.8.1-rc.1/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,91 @@ +{ + "properties": { + "destination": { + "description": "The destination of this traffic target.", + "properties": { + "kind": { + "description": "Kind of the destination.", + "type": "string" + }, + "name": { + "description": "Name of the destination.", + "type": "string" + }, + "namespace": { + "description": "Namespace of the destination.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "rules": { + "description": "Specifications of this traffic target.", + "items": { + "properties": { + "kind": { + "description": "Kind of this spec.", + "enum": [ + "HTTPRouteGroup", + "TCPRoute", + "UDPRoute" + ], + "type": "string" + }, + "matches": { + "description": "Match conditions of this spec.", + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "Name of this spec.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources of this traffic target.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "destination", + "rules", + "sources" + ], + "title": "Traffic Target", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.1-rc.1/traffictarget.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.8.1-rc.1/traffictarget.meshery.layer5.io_definition.json new file mode 100755 index 00000000..c1cf94c3 --- /dev/null +++ b/templates/oam/workloads/v0.8.1-rc.1/traffictarget.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TrafficTarget", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "traffictarget.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "access.smi-spec.io/v1alpha3", + "k8sKind": "TrafficTarget", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.8.1-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.1-rc.2/egress.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.8.1-rc.2/egress.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..c77de28d --- /dev/null +++ b/templates/oam/workloads/v0.8.1-rc.2/egress.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,103 @@ +{ + "properties": { + "hosts": { + "description": "Hosts that the sources are allowed to direct external traffic to.", + "items": { + "type": "string" + }, + "type": "array" + }, + "ipAddresses": { + "description": "IP address ranges that the sources are allowed to direct external traffic to.", + "items": { + "pattern": "((?:\\d{1,3}\\.){3}\\d{1,3})\\/(\\d{1,2})$", + "type": "string" + }, + "type": "array" + }, + "matches": { + "description": "The resource references an Egress policy should match on.", + "items": { + "properties": { + "apiGroup": { + "description": "API group for the resource being referenced.", + "type": "string" + }, + "kind": { + "description": "Type of resource being referenced.", + "type": "string" + }, + "name": { + "description": "Name of resource being referenced.", + "type": "string" + } + }, + "required": [ + "apiGroup", + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "ports": { + "description": "Ports that the sources are allowed to direct external traffic to.", + "items": { + "properties": { + "number": { + "description": "Port number of this port.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "description": "Protocol served by this port.", + "type": "string" + } + }, + "required": [ + "number", + "protocol" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources the egress policy is applicable to.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "enum": [ + "ServiceAccount" + ], + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "kind", + "name", + "namespace" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "sources", + "ports" + ], + "title": "Egress", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.1-rc.2/egress.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.8.1-rc.2/egress.meshery.layer5.io_definition.json new file mode 100755 index 00000000..e6d32730 --- /dev/null +++ b/templates/oam/workloads/v0.8.1-rc.2/egress.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Egress", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "egress.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "policy.openservicemesh.io/v1alpha1", + "k8sKind": "Egress", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.8.1-rc.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.1-rc.2/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.8.1-rc.2/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..6951d46c --- /dev/null +++ b/templates/oam/workloads/v0.8.1-rc.2/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,60 @@ +{ + "properties": { + "matches": { + "description": "Match conditions of this route group.", + "items": { + "properties": { + "headers": { + "description": "Header match conditions of this route.", + "items": { + "additionalProperties": { + "type": "string" + }, + "description": "Header match condition of this route.", + "type": "object" + }, + "type": "array" + }, + "methods": { + "description": "The HTTP methods of this HTTP route.", + "items": { + "description": "The HTTP method of this HTTP route.", + "enum": [ + "*", + "GET", + "HEAD", + "PUT", + "POST", + "DELETE", + "CONNECT", + "OPTIONS", + "TRACE", + "PATCH" + ], + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "Name of the HTTP route.", + "type": "string" + }, + "pathRegex": { + "description": "URI path regex of the HTTP route.", + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "matches" + ], + "title": "HTTP Route Group", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.1-rc.2/httproutegroup.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.8.1-rc.2/httproutegroup.meshery.layer5.io_definition.json new file mode 100755 index 00000000..276a3e6f --- /dev/null +++ b/templates/oam/workloads/v0.8.1-rc.2/httproutegroup.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPRouteGroup", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httproutegroup.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "specs.smi-spec.io/v1alpha4", + "k8sKind": "HTTPRouteGroup", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.8.1-rc.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.1-rc.2/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.8.1-rc.2/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..f5535897 --- /dev/null +++ b/templates/oam/workloads/v0.8.1-rc.2/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,118 @@ +{ + "properties": { + "backends": { + "description": "Backends the IngressBackend policy is applicable to.", + "items": { + "properties": { + "name": { + "description": "Name of the backend.", + "type": "string" + }, + "port": { + "description": "Port of the backend.", + "properties": { + "number": { + "description": "Port number of this port.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "description": "Protocol served by this port.", + "type": "string" + } + }, + "required": [ + "number", + "protocol" + ], + "type": "object" + }, + "tls": { + "description": "TLS configuration for the backend.", + "properties": { + "skipClientCertValidation": { + "description": "Skip client certificate validation.", + "type": "boolean" + }, + "sniHosts": { + "description": "SNI hosts allowed by the backend.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "skipClientCertValidation" + ], + "type": "object" + } + }, + "required": [ + "name", + "port" + ], + "type": "object" + }, + "type": "array" + }, + "matches": { + "description": "The resource references an IngressBackend policy should match on.", + "items": { + "properties": { + "apiGroup": { + "description": "API group for the resource being referenced.", + "type": "string" + }, + "kind": { + "description": "Type of resource being referenced.", + "type": "string" + }, + "name": { + "description": "Name of resource being referenced.", + "type": "string" + } + }, + "required": [ + "apiGroup", + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources the IngressBackend policy is applicable to.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "backends", + "sources" + ], + "title": "Ingress Backend", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.1-rc.2/ingressbackend.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.8.1-rc.2/ingressbackend.meshery.layer5.io_definition.json new file mode 100755 index 00000000..882af4fe --- /dev/null +++ b/templates/oam/workloads/v0.8.1-rc.2/ingressbackend.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "IngressBackend", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "ingressbackend.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "policy.openservicemesh.io/v1alpha1", + "k8sKind": "IngressBackend", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.8.1-rc.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.1-rc.2/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.8.1-rc.2/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..b607634a --- /dev/null +++ b/templates/oam/workloads/v0.8.1-rc.2/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,264 @@ +{ + "properties": { + "certificate": { + "description": "Configuration for certificate management", + "properties": { + "certKeyBitSize": { + "description": "Sets the certificate key bit size for data plane certificates.", + "type": "integer" + }, + "ingressGateway": { + "description": "Configuration for the ingress gateway's certificate", + "properties": { + "secret": { + "description": "Secret reference to store the certificate in", + "properties": { + "name": { + "description": "Name of the secret", + "type": "string" + }, + "namespace": { + "description": "Namespace of the secret", + "type": "string" + } + }, + "required": [ + "name", + "namespace" + ], + "type": "object" + }, + "subjectAltNames": { + "description": "Subject Alternative Names secured by the certificate", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "validityDuration": { + "description": "Certificate validity duration, represented as a sequence of decimal numbers each with optional fraction and a unit suffix", + "type": "string" + } + }, + "required": [ + "subjectAltNames", + "validityDuration", + "secret" + ], + "type": "object" + }, + "serviceCertValidityDuration": { + "description": "Sets the service certificate validity duration, represented as a sequence of decimal numbers each with optional fraction and a unit suffix.", + "type": "string" + } + }, + "required": [ + "serviceCertValidityDuration", + "certKeyBitSize" + ], + "type": "object" + }, + "featureFlags": { + "description": "OSM feature flags", + "properties": { + "enableAsyncProxyServiceMapping": { + "type": "boolean" + }, + "enableEgressPolicy": { + "type": "boolean" + }, + "enableEnvoyActiveHealthChecks": { + "type": "boolean" + }, + "enableIngressBackendPolicy": { + "type": "boolean" + }, + "enableMulticlusterMode": { + "type": "boolean" + }, + "enableRetryPolicy": { + "type": "boolean" + }, + "enableSnapshotCacheMode": { + "type": "boolean" + }, + "enableWASMStats": { + "type": "boolean" + } + }, + "type": "object" + }, + "observability": { + "description": "Configuration for observing the service mesh, including metrics, logs, tracing etc,.", + "properties": { + "enableDebugServer": { + "description": "Enables a debug endpoint on the osm-controller pod to list information regarding the mesh such as proxy connections, certificates, and SMI policies.", + "type": "boolean" + }, + "osmLogLevel": { + "description": "Allows setting OSM control plane log level at runtime", + "type": "string" + }, + "tracing": { + "description": "Configuration for distributed tracing", + "properties": { + "address": { + "description": "Address of Jaeger tracing deployment, if tracing is enabled.", + "type": "string" + }, + "enable": { + "description": "Enables Jaeger tracing for the mesh.", + "type": "boolean" + }, + "endpoint": { + "description": "Endpoint for tracing data, if tracing is enabled.", + "type": "string" + }, + "port": { + "description": "Port on which tracing is enabled.", + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "sidecar": { + "description": "Configuration for Envoy sidecar", + "properties": { + "configResyncInterval": { + "description": "Resync interval for regular proxy broadcast updates", + "type": "string" + }, + "enablePrivilegedInitContainer": { + "description": "Enables privileged init containers for pods in mesh. When false, init containers only have NET_ADMIN.", + "type": "boolean" + }, + "envoyImage": { + "description": "Image for the Envoy sidecar", + "type": "string" + }, + "envoyWindowsImage": { + "description": "Image for the Envoy sidecar on Windows workers", + "type": "string" + }, + "initContainerImage": { + "description": "Image for the init container", + "type": "string" + }, + "logLevel": { + "description": "Sets the logging verbosity of Envoy proxy sidecar, only applicable to newly created pods joining the mesh.", + "enum": [ + "trace", + "debug", + "info", + "warning", + "warn", + "error", + "critical", + "off" + ], + "type": "string" + }, + "maxDataPlaneConnections": { + "description": "Max allowed data plane sidecar connections", + "type": "integer" + }, + "resources": { + "properties": { + "limits": { + "additionalProperties": true, + "description": "Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/", + "type": "object" + }, + "requests": { + "additionalProperties": true, + "description": "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/", + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "traffic": { + "description": "Configuration for traffic management", + "properties": { + "enableEgress": { + "description": "Enables egress in the mesh", + "type": "boolean" + }, + "enablePermissiveTrafficPolicyMode": { + "description": "True for allowing traffic to flow between client and service pods within the mesh without SMI traffic policies, i.e. no traffic policy enforcement in the mesh. If set to false, enables deny-all traffic policy in mesh i.e. an SMI Traffic Target is necessary for services to communicate.", + "type": "boolean" + }, + "inboundExternalAuthorization": { + "description": "Configures external authorization for inbound and ingress connections.", + "properties": { + "address": { + "description": "Target destination endpoint that will handle external authorization.", + "type": "string" + }, + "enable": { + "description": "Enables/disables the inbound external authorization policy if present.", + "type": "boolean" + }, + "failureModeAllow": { + "description": "Allows specifying if traffic should succeed or fail if the external authorization endpoint fails to respond.", + "type": "boolean" + }, + "port": { + "description": "Remote destination port for the external authorization endpoint.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "statPrefix": { + "default": "inboundExtAuthz", + "description": "String prefix for inbound external authorization related metrics.", + "type": "string" + }, + "timeout": { + "default": "1s", + "description": "Defines the timeout to consider for the remote endpoint to reply in time.", + "type": "string" + } + }, + "type": "object" + }, + "inboundPortExclusionList": { + "description": "Global list of ports to exclude from inbound traffic interception by the sidecar proxy.", + "items": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "type": "array" + }, + "outboundIPRangeExclusionList": { + "description": "Global list of IP address ranges to exclude from outbound traffic interception by the sidecar proxy.", + "items": { + "pattern": "((?:\\d{1,3}\\.){3}\\d{1,3})\\/(\\d{1,2})$", + "type": "string" + }, + "type": "array" + }, + "outboundPortExclusionList": { + "description": "Global list of ports to exclude from outbound traffic interception by the sidecar proxy.", + "items": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "title": "Mesh Config", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.1-rc.2/meshconfig.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.8.1-rc.2/meshconfig.meshery.layer5.io_definition.json new file mode 100755 index 00000000..624fdc7a --- /dev/null +++ b/templates/oam/workloads/v0.8.1-rc.2/meshconfig.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "MeshConfig", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "meshconfig.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.openservicemesh.io/v1alpha1", + "k8sKind": "MeshConfig", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.8.1-rc.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.1-rc.2/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.8.1-rc.2/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..60d4f7dd --- /dev/null +++ b/templates/oam/workloads/v0.8.1-rc.2/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "properties": { + "clusters": { + "description": "The clusters the service accounts are hosted on.", + "items": { + "properties": { + "address": { + "description": "a routable IP + port", + "pattern": "^(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3}):[0-9]+$", + "type": "string" + }, + "certificate": { + "description": "mTLS certificates (optional)", + "type": "string" + }, + "name": { + "description": "Name of the remote cluster", + "type": "string" + }, + "priority": { + "description": "Priority of the remote cluster in locality based load balancing", + "minimum": 0, + "type": "integer" + }, + "weight": { + "default": 0, + "description": "Load balancing weight of the remote cluster", + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "address", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "ports": { + "description": "The list of ports that are exposed by this service.", + "items": { + "properties": { + "port": { + "description": "The port that will be exposed by this service.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "default": "TCP", + "description": "The IP protocol for this port. Supports \"TCP\", \"UDP\", and \"SCTP\". Default is TCP.", + "enum": [ + "TCP", + "UDP", + "SCTP" + ], + "type": "string" + } + }, + "required": [ + "port", + "protocol" + ], + "type": "object" + }, + "type": "array" + }, + "serviceAccount": { + "type": "string" + } + }, + "required": [ + "serviceAccount", + "clusters" + ], + "title": "Multi Cluster Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.1-rc.2/multiclusterservice.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.8.1-rc.2/multiclusterservice.meshery.layer5.io_definition.json new file mode 100755 index 00000000..4679f0d4 --- /dev/null +++ b/templates/oam/workloads/v0.8.1-rc.2/multiclusterservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "MultiClusterService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "multiclusterservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.openservicemesh.io/v1alpha1", + "k8sKind": "MultiClusterService", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.8.1-rc.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.1-rc.2/tcproute.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.8.1-rc.2/tcproute.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..d0cc9bfe --- /dev/null +++ b/templates/oam/workloads/v0.8.1-rc.2/tcproute.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,25 @@ +{ + "properties": { + "matches": { + "description": "Match conditions of this route.", + "properties": { + "ports": { + "description": "Port numbers to match TCP traffic.", + "items": { + "type": "integer" + }, + "type": "array" + } + }, + "required": [ + "ports" + ], + "type": "object" + } + }, + "required": [ + "matches" + ], + "title": "TCP Route", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.1-rc.2/tcproute.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.8.1-rc.2/tcproute.meshery.layer5.io_definition.json new file mode 100755 index 00000000..08711253 --- /dev/null +++ b/templates/oam/workloads/v0.8.1-rc.2/tcproute.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TCPRoute", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "tcproute.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "specs.smi-spec.io/v1alpha4", + "k8sKind": "TCPRoute", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.8.1-rc.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.1-rc.2/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.8.1-rc.2/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..13f0a9a2 --- /dev/null +++ b/templates/oam/workloads/v0.8.1-rc.2/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,59 @@ +{ + "properties": { + "backends": { + "description": "The backend services of this split.", + "items": { + "properties": { + "service": { + "description": "Name of the Kubernetes service.", + "type": "string" + }, + "weight": { + "description": "Traffic weight value of this backend.", + "type": "number" + } + }, + "required": [ + "service", + "weight" + ], + "type": "object" + }, + "type": "array" + }, + "matches": { + "description": "The HTTP route groups that this traffic split should match.", + "items": { + "properties": { + "kind": { + "description": "Kind of the matching group.", + "enum": [ + "HTTPRouteGroup" + ], + "type": "string" + }, + "name": { + "description": "Name of the matching group.", + "type": "string" + } + }, + "required": [ + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "service": { + "description": "The apex service of this split.", + "type": "string" + } + }, + "required": [ + "service", + "backends" + ], + "title": "Traffic Split", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.1-rc.2/trafficsplit.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.8.1-rc.2/trafficsplit.meshery.layer5.io_definition.json new file mode 100755 index 00000000..6cf90af9 --- /dev/null +++ b/templates/oam/workloads/v0.8.1-rc.2/trafficsplit.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TrafficSplit", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "trafficsplit.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "split.smi-spec.io/v1alpha4", + "k8sKind": "TrafficSplit", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.8.1-rc.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.1-rc.2/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.8.1-rc.2/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..83a24559 --- /dev/null +++ b/templates/oam/workloads/v0.8.1-rc.2/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,91 @@ +{ + "properties": { + "destination": { + "description": "The destination of this traffic target.", + "properties": { + "kind": { + "description": "Kind of the destination.", + "type": "string" + }, + "name": { + "description": "Name of the destination.", + "type": "string" + }, + "namespace": { + "description": "Namespace of the destination.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "rules": { + "description": "Specifications of this traffic target.", + "items": { + "properties": { + "kind": { + "description": "Kind of this spec.", + "enum": [ + "HTTPRouteGroup", + "TCPRoute", + "UDPRoute" + ], + "type": "string" + }, + "matches": { + "description": "Match conditions of this spec.", + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "Name of this spec.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources of this traffic target.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "destination", + "rules", + "sources" + ], + "title": "Traffic Target", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.1-rc.2/traffictarget.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.8.1-rc.2/traffictarget.meshery.layer5.io_definition.json new file mode 100755 index 00000000..c398e701 --- /dev/null +++ b/templates/oam/workloads/v0.8.1-rc.2/traffictarget.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TrafficTarget", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "traffictarget.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "access.smi-spec.io/v1alpha3", + "k8sKind": "TrafficTarget", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.8.1-rc.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.1/egress.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.8.1/egress.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..c77de28d --- /dev/null +++ b/templates/oam/workloads/v0.8.1/egress.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,103 @@ +{ + "properties": { + "hosts": { + "description": "Hosts that the sources are allowed to direct external traffic to.", + "items": { + "type": "string" + }, + "type": "array" + }, + "ipAddresses": { + "description": "IP address ranges that the sources are allowed to direct external traffic to.", + "items": { + "pattern": "((?:\\d{1,3}\\.){3}\\d{1,3})\\/(\\d{1,2})$", + "type": "string" + }, + "type": "array" + }, + "matches": { + "description": "The resource references an Egress policy should match on.", + "items": { + "properties": { + "apiGroup": { + "description": "API group for the resource being referenced.", + "type": "string" + }, + "kind": { + "description": "Type of resource being referenced.", + "type": "string" + }, + "name": { + "description": "Name of resource being referenced.", + "type": "string" + } + }, + "required": [ + "apiGroup", + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "ports": { + "description": "Ports that the sources are allowed to direct external traffic to.", + "items": { + "properties": { + "number": { + "description": "Port number of this port.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "description": "Protocol served by this port.", + "type": "string" + } + }, + "required": [ + "number", + "protocol" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources the egress policy is applicable to.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "enum": [ + "ServiceAccount" + ], + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "kind", + "name", + "namespace" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "sources", + "ports" + ], + "title": "Egress", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.1/egress.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.8.1/egress.meshery.layer5.io_definition.json new file mode 100755 index 00000000..9cd6d371 --- /dev/null +++ b/templates/oam/workloads/v0.8.1/egress.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Egress", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "egress.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "policy.openservicemesh.io/v1alpha1", + "k8sKind": "Egress", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.8.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.1/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.8.1/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..6951d46c --- /dev/null +++ b/templates/oam/workloads/v0.8.1/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,60 @@ +{ + "properties": { + "matches": { + "description": "Match conditions of this route group.", + "items": { + "properties": { + "headers": { + "description": "Header match conditions of this route.", + "items": { + "additionalProperties": { + "type": "string" + }, + "description": "Header match condition of this route.", + "type": "object" + }, + "type": "array" + }, + "methods": { + "description": "The HTTP methods of this HTTP route.", + "items": { + "description": "The HTTP method of this HTTP route.", + "enum": [ + "*", + "GET", + "HEAD", + "PUT", + "POST", + "DELETE", + "CONNECT", + "OPTIONS", + "TRACE", + "PATCH" + ], + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "Name of the HTTP route.", + "type": "string" + }, + "pathRegex": { + "description": "URI path regex of the HTTP route.", + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "matches" + ], + "title": "HTTP Route Group", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.1/httproutegroup.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.8.1/httproutegroup.meshery.layer5.io_definition.json new file mode 100755 index 00000000..15bae8d5 --- /dev/null +++ b/templates/oam/workloads/v0.8.1/httproutegroup.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPRouteGroup", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httproutegroup.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "specs.smi-spec.io/v1alpha4", + "k8sKind": "HTTPRouteGroup", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.8.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.1/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.8.1/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..f5535897 --- /dev/null +++ b/templates/oam/workloads/v0.8.1/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,118 @@ +{ + "properties": { + "backends": { + "description": "Backends the IngressBackend policy is applicable to.", + "items": { + "properties": { + "name": { + "description": "Name of the backend.", + "type": "string" + }, + "port": { + "description": "Port of the backend.", + "properties": { + "number": { + "description": "Port number of this port.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "description": "Protocol served by this port.", + "type": "string" + } + }, + "required": [ + "number", + "protocol" + ], + "type": "object" + }, + "tls": { + "description": "TLS configuration for the backend.", + "properties": { + "skipClientCertValidation": { + "description": "Skip client certificate validation.", + "type": "boolean" + }, + "sniHosts": { + "description": "SNI hosts allowed by the backend.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "skipClientCertValidation" + ], + "type": "object" + } + }, + "required": [ + "name", + "port" + ], + "type": "object" + }, + "type": "array" + }, + "matches": { + "description": "The resource references an IngressBackend policy should match on.", + "items": { + "properties": { + "apiGroup": { + "description": "API group for the resource being referenced.", + "type": "string" + }, + "kind": { + "description": "Type of resource being referenced.", + "type": "string" + }, + "name": { + "description": "Name of resource being referenced.", + "type": "string" + } + }, + "required": [ + "apiGroup", + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources the IngressBackend policy is applicable to.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "backends", + "sources" + ], + "title": "Ingress Backend", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.1/ingressbackend.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.8.1/ingressbackend.meshery.layer5.io_definition.json new file mode 100755 index 00000000..3867c1d9 --- /dev/null +++ b/templates/oam/workloads/v0.8.1/ingressbackend.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "IngressBackend", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "ingressbackend.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "policy.openservicemesh.io/v1alpha1", + "k8sKind": "IngressBackend", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.8.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.1/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.8.1/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..b607634a --- /dev/null +++ b/templates/oam/workloads/v0.8.1/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,264 @@ +{ + "properties": { + "certificate": { + "description": "Configuration for certificate management", + "properties": { + "certKeyBitSize": { + "description": "Sets the certificate key bit size for data plane certificates.", + "type": "integer" + }, + "ingressGateway": { + "description": "Configuration for the ingress gateway's certificate", + "properties": { + "secret": { + "description": "Secret reference to store the certificate in", + "properties": { + "name": { + "description": "Name of the secret", + "type": "string" + }, + "namespace": { + "description": "Namespace of the secret", + "type": "string" + } + }, + "required": [ + "name", + "namespace" + ], + "type": "object" + }, + "subjectAltNames": { + "description": "Subject Alternative Names secured by the certificate", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "validityDuration": { + "description": "Certificate validity duration, represented as a sequence of decimal numbers each with optional fraction and a unit suffix", + "type": "string" + } + }, + "required": [ + "subjectAltNames", + "validityDuration", + "secret" + ], + "type": "object" + }, + "serviceCertValidityDuration": { + "description": "Sets the service certificate validity duration, represented as a sequence of decimal numbers each with optional fraction and a unit suffix.", + "type": "string" + } + }, + "required": [ + "serviceCertValidityDuration", + "certKeyBitSize" + ], + "type": "object" + }, + "featureFlags": { + "description": "OSM feature flags", + "properties": { + "enableAsyncProxyServiceMapping": { + "type": "boolean" + }, + "enableEgressPolicy": { + "type": "boolean" + }, + "enableEnvoyActiveHealthChecks": { + "type": "boolean" + }, + "enableIngressBackendPolicy": { + "type": "boolean" + }, + "enableMulticlusterMode": { + "type": "boolean" + }, + "enableRetryPolicy": { + "type": "boolean" + }, + "enableSnapshotCacheMode": { + "type": "boolean" + }, + "enableWASMStats": { + "type": "boolean" + } + }, + "type": "object" + }, + "observability": { + "description": "Configuration for observing the service mesh, including metrics, logs, tracing etc,.", + "properties": { + "enableDebugServer": { + "description": "Enables a debug endpoint on the osm-controller pod to list information regarding the mesh such as proxy connections, certificates, and SMI policies.", + "type": "boolean" + }, + "osmLogLevel": { + "description": "Allows setting OSM control plane log level at runtime", + "type": "string" + }, + "tracing": { + "description": "Configuration for distributed tracing", + "properties": { + "address": { + "description": "Address of Jaeger tracing deployment, if tracing is enabled.", + "type": "string" + }, + "enable": { + "description": "Enables Jaeger tracing for the mesh.", + "type": "boolean" + }, + "endpoint": { + "description": "Endpoint for tracing data, if tracing is enabled.", + "type": "string" + }, + "port": { + "description": "Port on which tracing is enabled.", + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "sidecar": { + "description": "Configuration for Envoy sidecar", + "properties": { + "configResyncInterval": { + "description": "Resync interval for regular proxy broadcast updates", + "type": "string" + }, + "enablePrivilegedInitContainer": { + "description": "Enables privileged init containers for pods in mesh. When false, init containers only have NET_ADMIN.", + "type": "boolean" + }, + "envoyImage": { + "description": "Image for the Envoy sidecar", + "type": "string" + }, + "envoyWindowsImage": { + "description": "Image for the Envoy sidecar on Windows workers", + "type": "string" + }, + "initContainerImage": { + "description": "Image for the init container", + "type": "string" + }, + "logLevel": { + "description": "Sets the logging verbosity of Envoy proxy sidecar, only applicable to newly created pods joining the mesh.", + "enum": [ + "trace", + "debug", + "info", + "warning", + "warn", + "error", + "critical", + "off" + ], + "type": "string" + }, + "maxDataPlaneConnections": { + "description": "Max allowed data plane sidecar connections", + "type": "integer" + }, + "resources": { + "properties": { + "limits": { + "additionalProperties": true, + "description": "Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/", + "type": "object" + }, + "requests": { + "additionalProperties": true, + "description": "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/", + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "traffic": { + "description": "Configuration for traffic management", + "properties": { + "enableEgress": { + "description": "Enables egress in the mesh", + "type": "boolean" + }, + "enablePermissiveTrafficPolicyMode": { + "description": "True for allowing traffic to flow between client and service pods within the mesh without SMI traffic policies, i.e. no traffic policy enforcement in the mesh. If set to false, enables deny-all traffic policy in mesh i.e. an SMI Traffic Target is necessary for services to communicate.", + "type": "boolean" + }, + "inboundExternalAuthorization": { + "description": "Configures external authorization for inbound and ingress connections.", + "properties": { + "address": { + "description": "Target destination endpoint that will handle external authorization.", + "type": "string" + }, + "enable": { + "description": "Enables/disables the inbound external authorization policy if present.", + "type": "boolean" + }, + "failureModeAllow": { + "description": "Allows specifying if traffic should succeed or fail if the external authorization endpoint fails to respond.", + "type": "boolean" + }, + "port": { + "description": "Remote destination port for the external authorization endpoint.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "statPrefix": { + "default": "inboundExtAuthz", + "description": "String prefix for inbound external authorization related metrics.", + "type": "string" + }, + "timeout": { + "default": "1s", + "description": "Defines the timeout to consider for the remote endpoint to reply in time.", + "type": "string" + } + }, + "type": "object" + }, + "inboundPortExclusionList": { + "description": "Global list of ports to exclude from inbound traffic interception by the sidecar proxy.", + "items": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "type": "array" + }, + "outboundIPRangeExclusionList": { + "description": "Global list of IP address ranges to exclude from outbound traffic interception by the sidecar proxy.", + "items": { + "pattern": "((?:\\d{1,3}\\.){3}\\d{1,3})\\/(\\d{1,2})$", + "type": "string" + }, + "type": "array" + }, + "outboundPortExclusionList": { + "description": "Global list of ports to exclude from outbound traffic interception by the sidecar proxy.", + "items": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "title": "Mesh Config", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.1/meshconfig.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.8.1/meshconfig.meshery.layer5.io_definition.json new file mode 100755 index 00000000..ff0994eb --- /dev/null +++ b/templates/oam/workloads/v0.8.1/meshconfig.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "MeshConfig", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "meshconfig.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.openservicemesh.io/v1alpha1", + "k8sKind": "MeshConfig", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.8.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.1/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.8.1/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..60d4f7dd --- /dev/null +++ b/templates/oam/workloads/v0.8.1/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "properties": { + "clusters": { + "description": "The clusters the service accounts are hosted on.", + "items": { + "properties": { + "address": { + "description": "a routable IP + port", + "pattern": "^(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3}):[0-9]+$", + "type": "string" + }, + "certificate": { + "description": "mTLS certificates (optional)", + "type": "string" + }, + "name": { + "description": "Name of the remote cluster", + "type": "string" + }, + "priority": { + "description": "Priority of the remote cluster in locality based load balancing", + "minimum": 0, + "type": "integer" + }, + "weight": { + "default": 0, + "description": "Load balancing weight of the remote cluster", + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "address", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "ports": { + "description": "The list of ports that are exposed by this service.", + "items": { + "properties": { + "port": { + "description": "The port that will be exposed by this service.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "default": "TCP", + "description": "The IP protocol for this port. Supports \"TCP\", \"UDP\", and \"SCTP\". Default is TCP.", + "enum": [ + "TCP", + "UDP", + "SCTP" + ], + "type": "string" + } + }, + "required": [ + "port", + "protocol" + ], + "type": "object" + }, + "type": "array" + }, + "serviceAccount": { + "type": "string" + } + }, + "required": [ + "serviceAccount", + "clusters" + ], + "title": "Multi Cluster Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.1/multiclusterservice.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.8.1/multiclusterservice.meshery.layer5.io_definition.json new file mode 100755 index 00000000..bbcad3fc --- /dev/null +++ b/templates/oam/workloads/v0.8.1/multiclusterservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "MultiClusterService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "multiclusterservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.openservicemesh.io/v1alpha1", + "k8sKind": "MultiClusterService", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.8.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.1/tcproute.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.8.1/tcproute.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..d0cc9bfe --- /dev/null +++ b/templates/oam/workloads/v0.8.1/tcproute.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,25 @@ +{ + "properties": { + "matches": { + "description": "Match conditions of this route.", + "properties": { + "ports": { + "description": "Port numbers to match TCP traffic.", + "items": { + "type": "integer" + }, + "type": "array" + } + }, + "required": [ + "ports" + ], + "type": "object" + } + }, + "required": [ + "matches" + ], + "title": "TCP Route", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.1/tcproute.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.8.1/tcproute.meshery.layer5.io_definition.json new file mode 100755 index 00000000..d3d870d0 --- /dev/null +++ b/templates/oam/workloads/v0.8.1/tcproute.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TCPRoute", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "tcproute.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "specs.smi-spec.io/v1alpha4", + "k8sKind": "TCPRoute", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.8.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.1/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.8.1/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..13f0a9a2 --- /dev/null +++ b/templates/oam/workloads/v0.8.1/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,59 @@ +{ + "properties": { + "backends": { + "description": "The backend services of this split.", + "items": { + "properties": { + "service": { + "description": "Name of the Kubernetes service.", + "type": "string" + }, + "weight": { + "description": "Traffic weight value of this backend.", + "type": "number" + } + }, + "required": [ + "service", + "weight" + ], + "type": "object" + }, + "type": "array" + }, + "matches": { + "description": "The HTTP route groups that this traffic split should match.", + "items": { + "properties": { + "kind": { + "description": "Kind of the matching group.", + "enum": [ + "HTTPRouteGroup" + ], + "type": "string" + }, + "name": { + "description": "Name of the matching group.", + "type": "string" + } + }, + "required": [ + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "service": { + "description": "The apex service of this split.", + "type": "string" + } + }, + "required": [ + "service", + "backends" + ], + "title": "Traffic Split", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.1/trafficsplit.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.8.1/trafficsplit.meshery.layer5.io_definition.json new file mode 100755 index 00000000..1d2fda71 --- /dev/null +++ b/templates/oam/workloads/v0.8.1/trafficsplit.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TrafficSplit", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "trafficsplit.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "split.smi-spec.io/v1alpha4", + "k8sKind": "TrafficSplit", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.8.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.1/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.8.1/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..83a24559 --- /dev/null +++ b/templates/oam/workloads/v0.8.1/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,91 @@ +{ + "properties": { + "destination": { + "description": "The destination of this traffic target.", + "properties": { + "kind": { + "description": "Kind of the destination.", + "type": "string" + }, + "name": { + "description": "Name of the destination.", + "type": "string" + }, + "namespace": { + "description": "Namespace of the destination.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "rules": { + "description": "Specifications of this traffic target.", + "items": { + "properties": { + "kind": { + "description": "Kind of this spec.", + "enum": [ + "HTTPRouteGroup", + "TCPRoute", + "UDPRoute" + ], + "type": "string" + }, + "matches": { + "description": "Match conditions of this spec.", + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "Name of this spec.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources of this traffic target.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "destination", + "rules", + "sources" + ], + "title": "Traffic Target", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.1/traffictarget.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.8.1/traffictarget.meshery.layer5.io_definition.json new file mode 100755 index 00000000..2f7c9a5b --- /dev/null +++ b/templates/oam/workloads/v0.8.1/traffictarget.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TrafficTarget", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "traffictarget.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "access.smi-spec.io/v1alpha3", + "k8sKind": "TrafficTarget", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.8.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.2/egress.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.8.2/egress.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..c77de28d --- /dev/null +++ b/templates/oam/workloads/v0.8.2/egress.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,103 @@ +{ + "properties": { + "hosts": { + "description": "Hosts that the sources are allowed to direct external traffic to.", + "items": { + "type": "string" + }, + "type": "array" + }, + "ipAddresses": { + "description": "IP address ranges that the sources are allowed to direct external traffic to.", + "items": { + "pattern": "((?:\\d{1,3}\\.){3}\\d{1,3})\\/(\\d{1,2})$", + "type": "string" + }, + "type": "array" + }, + "matches": { + "description": "The resource references an Egress policy should match on.", + "items": { + "properties": { + "apiGroup": { + "description": "API group for the resource being referenced.", + "type": "string" + }, + "kind": { + "description": "Type of resource being referenced.", + "type": "string" + }, + "name": { + "description": "Name of resource being referenced.", + "type": "string" + } + }, + "required": [ + "apiGroup", + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "ports": { + "description": "Ports that the sources are allowed to direct external traffic to.", + "items": { + "properties": { + "number": { + "description": "Port number of this port.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "description": "Protocol served by this port.", + "type": "string" + } + }, + "required": [ + "number", + "protocol" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources the egress policy is applicable to.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "enum": [ + "ServiceAccount" + ], + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "kind", + "name", + "namespace" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "sources", + "ports" + ], + "title": "Egress", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.2/egress.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.8.2/egress.meshery.layer5.io_definition.json new file mode 100755 index 00000000..436733cf --- /dev/null +++ b/templates/oam/workloads/v0.8.2/egress.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Egress", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "egress.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "policy.openservicemesh.io/v1alpha1", + "k8sKind": "Egress", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.8.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.2/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.8.2/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..6951d46c --- /dev/null +++ b/templates/oam/workloads/v0.8.2/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,60 @@ +{ + "properties": { + "matches": { + "description": "Match conditions of this route group.", + "items": { + "properties": { + "headers": { + "description": "Header match conditions of this route.", + "items": { + "additionalProperties": { + "type": "string" + }, + "description": "Header match condition of this route.", + "type": "object" + }, + "type": "array" + }, + "methods": { + "description": "The HTTP methods of this HTTP route.", + "items": { + "description": "The HTTP method of this HTTP route.", + "enum": [ + "*", + "GET", + "HEAD", + "PUT", + "POST", + "DELETE", + "CONNECT", + "OPTIONS", + "TRACE", + "PATCH" + ], + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "Name of the HTTP route.", + "type": "string" + }, + "pathRegex": { + "description": "URI path regex of the HTTP route.", + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "matches" + ], + "title": "HTTP Route Group", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.2/httproutegroup.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.8.2/httproutegroup.meshery.layer5.io_definition.json new file mode 100755 index 00000000..b1d02ad8 --- /dev/null +++ b/templates/oam/workloads/v0.8.2/httproutegroup.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPRouteGroup", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httproutegroup.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "specs.smi-spec.io/v1alpha4", + "k8sKind": "HTTPRouteGroup", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.8.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.2/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.8.2/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..f5535897 --- /dev/null +++ b/templates/oam/workloads/v0.8.2/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,118 @@ +{ + "properties": { + "backends": { + "description": "Backends the IngressBackend policy is applicable to.", + "items": { + "properties": { + "name": { + "description": "Name of the backend.", + "type": "string" + }, + "port": { + "description": "Port of the backend.", + "properties": { + "number": { + "description": "Port number of this port.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "description": "Protocol served by this port.", + "type": "string" + } + }, + "required": [ + "number", + "protocol" + ], + "type": "object" + }, + "tls": { + "description": "TLS configuration for the backend.", + "properties": { + "skipClientCertValidation": { + "description": "Skip client certificate validation.", + "type": "boolean" + }, + "sniHosts": { + "description": "SNI hosts allowed by the backend.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "skipClientCertValidation" + ], + "type": "object" + } + }, + "required": [ + "name", + "port" + ], + "type": "object" + }, + "type": "array" + }, + "matches": { + "description": "The resource references an IngressBackend policy should match on.", + "items": { + "properties": { + "apiGroup": { + "description": "API group for the resource being referenced.", + "type": "string" + }, + "kind": { + "description": "Type of resource being referenced.", + "type": "string" + }, + "name": { + "description": "Name of resource being referenced.", + "type": "string" + } + }, + "required": [ + "apiGroup", + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources the IngressBackend policy is applicable to.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "backends", + "sources" + ], + "title": "Ingress Backend", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.2/ingressbackend.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.8.2/ingressbackend.meshery.layer5.io_definition.json new file mode 100755 index 00000000..53e20a18 --- /dev/null +++ b/templates/oam/workloads/v0.8.2/ingressbackend.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "IngressBackend", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "ingressbackend.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "policy.openservicemesh.io/v1alpha1", + "k8sKind": "IngressBackend", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.8.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.2/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.8.2/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..b607634a --- /dev/null +++ b/templates/oam/workloads/v0.8.2/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,264 @@ +{ + "properties": { + "certificate": { + "description": "Configuration for certificate management", + "properties": { + "certKeyBitSize": { + "description": "Sets the certificate key bit size for data plane certificates.", + "type": "integer" + }, + "ingressGateway": { + "description": "Configuration for the ingress gateway's certificate", + "properties": { + "secret": { + "description": "Secret reference to store the certificate in", + "properties": { + "name": { + "description": "Name of the secret", + "type": "string" + }, + "namespace": { + "description": "Namespace of the secret", + "type": "string" + } + }, + "required": [ + "name", + "namespace" + ], + "type": "object" + }, + "subjectAltNames": { + "description": "Subject Alternative Names secured by the certificate", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "validityDuration": { + "description": "Certificate validity duration, represented as a sequence of decimal numbers each with optional fraction and a unit suffix", + "type": "string" + } + }, + "required": [ + "subjectAltNames", + "validityDuration", + "secret" + ], + "type": "object" + }, + "serviceCertValidityDuration": { + "description": "Sets the service certificate validity duration, represented as a sequence of decimal numbers each with optional fraction and a unit suffix.", + "type": "string" + } + }, + "required": [ + "serviceCertValidityDuration", + "certKeyBitSize" + ], + "type": "object" + }, + "featureFlags": { + "description": "OSM feature flags", + "properties": { + "enableAsyncProxyServiceMapping": { + "type": "boolean" + }, + "enableEgressPolicy": { + "type": "boolean" + }, + "enableEnvoyActiveHealthChecks": { + "type": "boolean" + }, + "enableIngressBackendPolicy": { + "type": "boolean" + }, + "enableMulticlusterMode": { + "type": "boolean" + }, + "enableRetryPolicy": { + "type": "boolean" + }, + "enableSnapshotCacheMode": { + "type": "boolean" + }, + "enableWASMStats": { + "type": "boolean" + } + }, + "type": "object" + }, + "observability": { + "description": "Configuration for observing the service mesh, including metrics, logs, tracing etc,.", + "properties": { + "enableDebugServer": { + "description": "Enables a debug endpoint on the osm-controller pod to list information regarding the mesh such as proxy connections, certificates, and SMI policies.", + "type": "boolean" + }, + "osmLogLevel": { + "description": "Allows setting OSM control plane log level at runtime", + "type": "string" + }, + "tracing": { + "description": "Configuration for distributed tracing", + "properties": { + "address": { + "description": "Address of Jaeger tracing deployment, if tracing is enabled.", + "type": "string" + }, + "enable": { + "description": "Enables Jaeger tracing for the mesh.", + "type": "boolean" + }, + "endpoint": { + "description": "Endpoint for tracing data, if tracing is enabled.", + "type": "string" + }, + "port": { + "description": "Port on which tracing is enabled.", + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "sidecar": { + "description": "Configuration for Envoy sidecar", + "properties": { + "configResyncInterval": { + "description": "Resync interval for regular proxy broadcast updates", + "type": "string" + }, + "enablePrivilegedInitContainer": { + "description": "Enables privileged init containers for pods in mesh. When false, init containers only have NET_ADMIN.", + "type": "boolean" + }, + "envoyImage": { + "description": "Image for the Envoy sidecar", + "type": "string" + }, + "envoyWindowsImage": { + "description": "Image for the Envoy sidecar on Windows workers", + "type": "string" + }, + "initContainerImage": { + "description": "Image for the init container", + "type": "string" + }, + "logLevel": { + "description": "Sets the logging verbosity of Envoy proxy sidecar, only applicable to newly created pods joining the mesh.", + "enum": [ + "trace", + "debug", + "info", + "warning", + "warn", + "error", + "critical", + "off" + ], + "type": "string" + }, + "maxDataPlaneConnections": { + "description": "Max allowed data plane sidecar connections", + "type": "integer" + }, + "resources": { + "properties": { + "limits": { + "additionalProperties": true, + "description": "Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/", + "type": "object" + }, + "requests": { + "additionalProperties": true, + "description": "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/", + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "traffic": { + "description": "Configuration for traffic management", + "properties": { + "enableEgress": { + "description": "Enables egress in the mesh", + "type": "boolean" + }, + "enablePermissiveTrafficPolicyMode": { + "description": "True for allowing traffic to flow between client and service pods within the mesh without SMI traffic policies, i.e. no traffic policy enforcement in the mesh. If set to false, enables deny-all traffic policy in mesh i.e. an SMI Traffic Target is necessary for services to communicate.", + "type": "boolean" + }, + "inboundExternalAuthorization": { + "description": "Configures external authorization for inbound and ingress connections.", + "properties": { + "address": { + "description": "Target destination endpoint that will handle external authorization.", + "type": "string" + }, + "enable": { + "description": "Enables/disables the inbound external authorization policy if present.", + "type": "boolean" + }, + "failureModeAllow": { + "description": "Allows specifying if traffic should succeed or fail if the external authorization endpoint fails to respond.", + "type": "boolean" + }, + "port": { + "description": "Remote destination port for the external authorization endpoint.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "statPrefix": { + "default": "inboundExtAuthz", + "description": "String prefix for inbound external authorization related metrics.", + "type": "string" + }, + "timeout": { + "default": "1s", + "description": "Defines the timeout to consider for the remote endpoint to reply in time.", + "type": "string" + } + }, + "type": "object" + }, + "inboundPortExclusionList": { + "description": "Global list of ports to exclude from inbound traffic interception by the sidecar proxy.", + "items": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "type": "array" + }, + "outboundIPRangeExclusionList": { + "description": "Global list of IP address ranges to exclude from outbound traffic interception by the sidecar proxy.", + "items": { + "pattern": "((?:\\d{1,3}\\.){3}\\d{1,3})\\/(\\d{1,2})$", + "type": "string" + }, + "type": "array" + }, + "outboundPortExclusionList": { + "description": "Global list of ports to exclude from outbound traffic interception by the sidecar proxy.", + "items": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "title": "Mesh Config", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.2/meshconfig.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.8.2/meshconfig.meshery.layer5.io_definition.json new file mode 100755 index 00000000..910b3e69 --- /dev/null +++ b/templates/oam/workloads/v0.8.2/meshconfig.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "MeshConfig", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "meshconfig.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.openservicemesh.io/v1alpha1", + "k8sKind": "MeshConfig", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.8.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.2/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.8.2/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..60d4f7dd --- /dev/null +++ b/templates/oam/workloads/v0.8.2/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "properties": { + "clusters": { + "description": "The clusters the service accounts are hosted on.", + "items": { + "properties": { + "address": { + "description": "a routable IP + port", + "pattern": "^(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3}):[0-9]+$", + "type": "string" + }, + "certificate": { + "description": "mTLS certificates (optional)", + "type": "string" + }, + "name": { + "description": "Name of the remote cluster", + "type": "string" + }, + "priority": { + "description": "Priority of the remote cluster in locality based load balancing", + "minimum": 0, + "type": "integer" + }, + "weight": { + "default": 0, + "description": "Load balancing weight of the remote cluster", + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "address", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "ports": { + "description": "The list of ports that are exposed by this service.", + "items": { + "properties": { + "port": { + "description": "The port that will be exposed by this service.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "default": "TCP", + "description": "The IP protocol for this port. Supports \"TCP\", \"UDP\", and \"SCTP\". Default is TCP.", + "enum": [ + "TCP", + "UDP", + "SCTP" + ], + "type": "string" + } + }, + "required": [ + "port", + "protocol" + ], + "type": "object" + }, + "type": "array" + }, + "serviceAccount": { + "type": "string" + } + }, + "required": [ + "serviceAccount", + "clusters" + ], + "title": "Multi Cluster Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.2/multiclusterservice.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.8.2/multiclusterservice.meshery.layer5.io_definition.json new file mode 100755 index 00000000..be8989f4 --- /dev/null +++ b/templates/oam/workloads/v0.8.2/multiclusterservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "MultiClusterService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "multiclusterservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.openservicemesh.io/v1alpha1", + "k8sKind": "MultiClusterService", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.8.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.2/tcproute.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.8.2/tcproute.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..d0cc9bfe --- /dev/null +++ b/templates/oam/workloads/v0.8.2/tcproute.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,25 @@ +{ + "properties": { + "matches": { + "description": "Match conditions of this route.", + "properties": { + "ports": { + "description": "Port numbers to match TCP traffic.", + "items": { + "type": "integer" + }, + "type": "array" + } + }, + "required": [ + "ports" + ], + "type": "object" + } + }, + "required": [ + "matches" + ], + "title": "TCP Route", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.2/tcproute.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.8.2/tcproute.meshery.layer5.io_definition.json new file mode 100755 index 00000000..7c233ba1 --- /dev/null +++ b/templates/oam/workloads/v0.8.2/tcproute.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TCPRoute", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "tcproute.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "specs.smi-spec.io/v1alpha4", + "k8sKind": "TCPRoute", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.8.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.2/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.8.2/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..13f0a9a2 --- /dev/null +++ b/templates/oam/workloads/v0.8.2/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,59 @@ +{ + "properties": { + "backends": { + "description": "The backend services of this split.", + "items": { + "properties": { + "service": { + "description": "Name of the Kubernetes service.", + "type": "string" + }, + "weight": { + "description": "Traffic weight value of this backend.", + "type": "number" + } + }, + "required": [ + "service", + "weight" + ], + "type": "object" + }, + "type": "array" + }, + "matches": { + "description": "The HTTP route groups that this traffic split should match.", + "items": { + "properties": { + "kind": { + "description": "Kind of the matching group.", + "enum": [ + "HTTPRouteGroup" + ], + "type": "string" + }, + "name": { + "description": "Name of the matching group.", + "type": "string" + } + }, + "required": [ + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "service": { + "description": "The apex service of this split.", + "type": "string" + } + }, + "required": [ + "service", + "backends" + ], + "title": "Traffic Split", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.2/trafficsplit.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.8.2/trafficsplit.meshery.layer5.io_definition.json new file mode 100755 index 00000000..e95cecc3 --- /dev/null +++ b/templates/oam/workloads/v0.8.2/trafficsplit.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TrafficSplit", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "trafficsplit.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "split.smi-spec.io/v1alpha4", + "k8sKind": "TrafficSplit", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.8.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.2/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.8.2/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..83a24559 --- /dev/null +++ b/templates/oam/workloads/v0.8.2/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,91 @@ +{ + "properties": { + "destination": { + "description": "The destination of this traffic target.", + "properties": { + "kind": { + "description": "Kind of the destination.", + "type": "string" + }, + "name": { + "description": "Name of the destination.", + "type": "string" + }, + "namespace": { + "description": "Namespace of the destination.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "rules": { + "description": "Specifications of this traffic target.", + "items": { + "properties": { + "kind": { + "description": "Kind of this spec.", + "enum": [ + "HTTPRouteGroup", + "TCPRoute", + "UDPRoute" + ], + "type": "string" + }, + "matches": { + "description": "Match conditions of this spec.", + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "Name of this spec.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources of this traffic target.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "destination", + "rules", + "sources" + ], + "title": "Traffic Target", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.2/traffictarget.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.8.2/traffictarget.meshery.layer5.io_definition.json new file mode 100755 index 00000000..ea69774a --- /dev/null +++ b/templates/oam/workloads/v0.8.2/traffictarget.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TrafficTarget", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "traffictarget.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "access.smi-spec.io/v1alpha3", + "k8sKind": "TrafficTarget", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.8.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.3-rc.1/egress.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.8.3-rc.1/egress.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..c77de28d --- /dev/null +++ b/templates/oam/workloads/v0.8.3-rc.1/egress.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,103 @@ +{ + "properties": { + "hosts": { + "description": "Hosts that the sources are allowed to direct external traffic to.", + "items": { + "type": "string" + }, + "type": "array" + }, + "ipAddresses": { + "description": "IP address ranges that the sources are allowed to direct external traffic to.", + "items": { + "pattern": "((?:\\d{1,3}\\.){3}\\d{1,3})\\/(\\d{1,2})$", + "type": "string" + }, + "type": "array" + }, + "matches": { + "description": "The resource references an Egress policy should match on.", + "items": { + "properties": { + "apiGroup": { + "description": "API group for the resource being referenced.", + "type": "string" + }, + "kind": { + "description": "Type of resource being referenced.", + "type": "string" + }, + "name": { + "description": "Name of resource being referenced.", + "type": "string" + } + }, + "required": [ + "apiGroup", + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "ports": { + "description": "Ports that the sources are allowed to direct external traffic to.", + "items": { + "properties": { + "number": { + "description": "Port number of this port.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "description": "Protocol served by this port.", + "type": "string" + } + }, + "required": [ + "number", + "protocol" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources the egress policy is applicable to.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "enum": [ + "ServiceAccount" + ], + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "kind", + "name", + "namespace" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "sources", + "ports" + ], + "title": "Egress", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.3-rc.1/egress.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.8.3-rc.1/egress.meshery.layer5.io_definition.json new file mode 100755 index 00000000..35351051 --- /dev/null +++ b/templates/oam/workloads/v0.8.3-rc.1/egress.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Egress", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "egress.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "policy.openservicemesh.io/v1alpha1", + "k8sKind": "Egress", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.8.3-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.3-rc.1/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.8.3-rc.1/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..6951d46c --- /dev/null +++ b/templates/oam/workloads/v0.8.3-rc.1/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,60 @@ +{ + "properties": { + "matches": { + "description": "Match conditions of this route group.", + "items": { + "properties": { + "headers": { + "description": "Header match conditions of this route.", + "items": { + "additionalProperties": { + "type": "string" + }, + "description": "Header match condition of this route.", + "type": "object" + }, + "type": "array" + }, + "methods": { + "description": "The HTTP methods of this HTTP route.", + "items": { + "description": "The HTTP method of this HTTP route.", + "enum": [ + "*", + "GET", + "HEAD", + "PUT", + "POST", + "DELETE", + "CONNECT", + "OPTIONS", + "TRACE", + "PATCH" + ], + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "Name of the HTTP route.", + "type": "string" + }, + "pathRegex": { + "description": "URI path regex of the HTTP route.", + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "matches" + ], + "title": "HTTP Route Group", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.3-rc.1/httproutegroup.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.8.3-rc.1/httproutegroup.meshery.layer5.io_definition.json new file mode 100755 index 00000000..e6872435 --- /dev/null +++ b/templates/oam/workloads/v0.8.3-rc.1/httproutegroup.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPRouteGroup", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httproutegroup.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "specs.smi-spec.io/v1alpha4", + "k8sKind": "HTTPRouteGroup", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.8.3-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.3-rc.1/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.8.3-rc.1/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..f5535897 --- /dev/null +++ b/templates/oam/workloads/v0.8.3-rc.1/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,118 @@ +{ + "properties": { + "backends": { + "description": "Backends the IngressBackend policy is applicable to.", + "items": { + "properties": { + "name": { + "description": "Name of the backend.", + "type": "string" + }, + "port": { + "description": "Port of the backend.", + "properties": { + "number": { + "description": "Port number of this port.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "description": "Protocol served by this port.", + "type": "string" + } + }, + "required": [ + "number", + "protocol" + ], + "type": "object" + }, + "tls": { + "description": "TLS configuration for the backend.", + "properties": { + "skipClientCertValidation": { + "description": "Skip client certificate validation.", + "type": "boolean" + }, + "sniHosts": { + "description": "SNI hosts allowed by the backend.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "skipClientCertValidation" + ], + "type": "object" + } + }, + "required": [ + "name", + "port" + ], + "type": "object" + }, + "type": "array" + }, + "matches": { + "description": "The resource references an IngressBackend policy should match on.", + "items": { + "properties": { + "apiGroup": { + "description": "API group for the resource being referenced.", + "type": "string" + }, + "kind": { + "description": "Type of resource being referenced.", + "type": "string" + }, + "name": { + "description": "Name of resource being referenced.", + "type": "string" + } + }, + "required": [ + "apiGroup", + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources the IngressBackend policy is applicable to.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "backends", + "sources" + ], + "title": "Ingress Backend", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.3-rc.1/ingressbackend.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.8.3-rc.1/ingressbackend.meshery.layer5.io_definition.json new file mode 100755 index 00000000..91fc164e --- /dev/null +++ b/templates/oam/workloads/v0.8.3-rc.1/ingressbackend.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "IngressBackend", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "ingressbackend.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "policy.openservicemesh.io/v1alpha1", + "k8sKind": "IngressBackend", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.8.3-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.3-rc.1/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.8.3-rc.1/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..b607634a --- /dev/null +++ b/templates/oam/workloads/v0.8.3-rc.1/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,264 @@ +{ + "properties": { + "certificate": { + "description": "Configuration for certificate management", + "properties": { + "certKeyBitSize": { + "description": "Sets the certificate key bit size for data plane certificates.", + "type": "integer" + }, + "ingressGateway": { + "description": "Configuration for the ingress gateway's certificate", + "properties": { + "secret": { + "description": "Secret reference to store the certificate in", + "properties": { + "name": { + "description": "Name of the secret", + "type": "string" + }, + "namespace": { + "description": "Namespace of the secret", + "type": "string" + } + }, + "required": [ + "name", + "namespace" + ], + "type": "object" + }, + "subjectAltNames": { + "description": "Subject Alternative Names secured by the certificate", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "validityDuration": { + "description": "Certificate validity duration, represented as a sequence of decimal numbers each with optional fraction and a unit suffix", + "type": "string" + } + }, + "required": [ + "subjectAltNames", + "validityDuration", + "secret" + ], + "type": "object" + }, + "serviceCertValidityDuration": { + "description": "Sets the service certificate validity duration, represented as a sequence of decimal numbers each with optional fraction and a unit suffix.", + "type": "string" + } + }, + "required": [ + "serviceCertValidityDuration", + "certKeyBitSize" + ], + "type": "object" + }, + "featureFlags": { + "description": "OSM feature flags", + "properties": { + "enableAsyncProxyServiceMapping": { + "type": "boolean" + }, + "enableEgressPolicy": { + "type": "boolean" + }, + "enableEnvoyActiveHealthChecks": { + "type": "boolean" + }, + "enableIngressBackendPolicy": { + "type": "boolean" + }, + "enableMulticlusterMode": { + "type": "boolean" + }, + "enableRetryPolicy": { + "type": "boolean" + }, + "enableSnapshotCacheMode": { + "type": "boolean" + }, + "enableWASMStats": { + "type": "boolean" + } + }, + "type": "object" + }, + "observability": { + "description": "Configuration for observing the service mesh, including metrics, logs, tracing etc,.", + "properties": { + "enableDebugServer": { + "description": "Enables a debug endpoint on the osm-controller pod to list information regarding the mesh such as proxy connections, certificates, and SMI policies.", + "type": "boolean" + }, + "osmLogLevel": { + "description": "Allows setting OSM control plane log level at runtime", + "type": "string" + }, + "tracing": { + "description": "Configuration for distributed tracing", + "properties": { + "address": { + "description": "Address of Jaeger tracing deployment, if tracing is enabled.", + "type": "string" + }, + "enable": { + "description": "Enables Jaeger tracing for the mesh.", + "type": "boolean" + }, + "endpoint": { + "description": "Endpoint for tracing data, if tracing is enabled.", + "type": "string" + }, + "port": { + "description": "Port on which tracing is enabled.", + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "sidecar": { + "description": "Configuration for Envoy sidecar", + "properties": { + "configResyncInterval": { + "description": "Resync interval for regular proxy broadcast updates", + "type": "string" + }, + "enablePrivilegedInitContainer": { + "description": "Enables privileged init containers for pods in mesh. When false, init containers only have NET_ADMIN.", + "type": "boolean" + }, + "envoyImage": { + "description": "Image for the Envoy sidecar", + "type": "string" + }, + "envoyWindowsImage": { + "description": "Image for the Envoy sidecar on Windows workers", + "type": "string" + }, + "initContainerImage": { + "description": "Image for the init container", + "type": "string" + }, + "logLevel": { + "description": "Sets the logging verbosity of Envoy proxy sidecar, only applicable to newly created pods joining the mesh.", + "enum": [ + "trace", + "debug", + "info", + "warning", + "warn", + "error", + "critical", + "off" + ], + "type": "string" + }, + "maxDataPlaneConnections": { + "description": "Max allowed data plane sidecar connections", + "type": "integer" + }, + "resources": { + "properties": { + "limits": { + "additionalProperties": true, + "description": "Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/", + "type": "object" + }, + "requests": { + "additionalProperties": true, + "description": "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/", + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "traffic": { + "description": "Configuration for traffic management", + "properties": { + "enableEgress": { + "description": "Enables egress in the mesh", + "type": "boolean" + }, + "enablePermissiveTrafficPolicyMode": { + "description": "True for allowing traffic to flow between client and service pods within the mesh without SMI traffic policies, i.e. no traffic policy enforcement in the mesh. If set to false, enables deny-all traffic policy in mesh i.e. an SMI Traffic Target is necessary for services to communicate.", + "type": "boolean" + }, + "inboundExternalAuthorization": { + "description": "Configures external authorization for inbound and ingress connections.", + "properties": { + "address": { + "description": "Target destination endpoint that will handle external authorization.", + "type": "string" + }, + "enable": { + "description": "Enables/disables the inbound external authorization policy if present.", + "type": "boolean" + }, + "failureModeAllow": { + "description": "Allows specifying if traffic should succeed or fail if the external authorization endpoint fails to respond.", + "type": "boolean" + }, + "port": { + "description": "Remote destination port for the external authorization endpoint.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "statPrefix": { + "default": "inboundExtAuthz", + "description": "String prefix for inbound external authorization related metrics.", + "type": "string" + }, + "timeout": { + "default": "1s", + "description": "Defines the timeout to consider for the remote endpoint to reply in time.", + "type": "string" + } + }, + "type": "object" + }, + "inboundPortExclusionList": { + "description": "Global list of ports to exclude from inbound traffic interception by the sidecar proxy.", + "items": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "type": "array" + }, + "outboundIPRangeExclusionList": { + "description": "Global list of IP address ranges to exclude from outbound traffic interception by the sidecar proxy.", + "items": { + "pattern": "((?:\\d{1,3}\\.){3}\\d{1,3})\\/(\\d{1,2})$", + "type": "string" + }, + "type": "array" + }, + "outboundPortExclusionList": { + "description": "Global list of ports to exclude from outbound traffic interception by the sidecar proxy.", + "items": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "title": "Mesh Config", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.3-rc.1/meshconfig.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.8.3-rc.1/meshconfig.meshery.layer5.io_definition.json new file mode 100755 index 00000000..73a81782 --- /dev/null +++ b/templates/oam/workloads/v0.8.3-rc.1/meshconfig.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "MeshConfig", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "meshconfig.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.openservicemesh.io/v1alpha1", + "k8sKind": "MeshConfig", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.8.3-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.3-rc.1/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.8.3-rc.1/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..60d4f7dd --- /dev/null +++ b/templates/oam/workloads/v0.8.3-rc.1/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "properties": { + "clusters": { + "description": "The clusters the service accounts are hosted on.", + "items": { + "properties": { + "address": { + "description": "a routable IP + port", + "pattern": "^(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3}):[0-9]+$", + "type": "string" + }, + "certificate": { + "description": "mTLS certificates (optional)", + "type": "string" + }, + "name": { + "description": "Name of the remote cluster", + "type": "string" + }, + "priority": { + "description": "Priority of the remote cluster in locality based load balancing", + "minimum": 0, + "type": "integer" + }, + "weight": { + "default": 0, + "description": "Load balancing weight of the remote cluster", + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "address", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "ports": { + "description": "The list of ports that are exposed by this service.", + "items": { + "properties": { + "port": { + "description": "The port that will be exposed by this service.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "default": "TCP", + "description": "The IP protocol for this port. Supports \"TCP\", \"UDP\", and \"SCTP\". Default is TCP.", + "enum": [ + "TCP", + "UDP", + "SCTP" + ], + "type": "string" + } + }, + "required": [ + "port", + "protocol" + ], + "type": "object" + }, + "type": "array" + }, + "serviceAccount": { + "type": "string" + } + }, + "required": [ + "serviceAccount", + "clusters" + ], + "title": "Multi Cluster Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.3-rc.1/multiclusterservice.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.8.3-rc.1/multiclusterservice.meshery.layer5.io_definition.json new file mode 100755 index 00000000..3df3668c --- /dev/null +++ b/templates/oam/workloads/v0.8.3-rc.1/multiclusterservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "MultiClusterService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "multiclusterservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.openservicemesh.io/v1alpha1", + "k8sKind": "MultiClusterService", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.8.3-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.3-rc.1/tcproute.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.8.3-rc.1/tcproute.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..d0cc9bfe --- /dev/null +++ b/templates/oam/workloads/v0.8.3-rc.1/tcproute.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,25 @@ +{ + "properties": { + "matches": { + "description": "Match conditions of this route.", + "properties": { + "ports": { + "description": "Port numbers to match TCP traffic.", + "items": { + "type": "integer" + }, + "type": "array" + } + }, + "required": [ + "ports" + ], + "type": "object" + } + }, + "required": [ + "matches" + ], + "title": "TCP Route", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.3-rc.1/tcproute.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.8.3-rc.1/tcproute.meshery.layer5.io_definition.json new file mode 100755 index 00000000..91bfce83 --- /dev/null +++ b/templates/oam/workloads/v0.8.3-rc.1/tcproute.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TCPRoute", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "tcproute.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "specs.smi-spec.io/v1alpha4", + "k8sKind": "TCPRoute", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.8.3-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.3-rc.1/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.8.3-rc.1/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..13f0a9a2 --- /dev/null +++ b/templates/oam/workloads/v0.8.3-rc.1/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,59 @@ +{ + "properties": { + "backends": { + "description": "The backend services of this split.", + "items": { + "properties": { + "service": { + "description": "Name of the Kubernetes service.", + "type": "string" + }, + "weight": { + "description": "Traffic weight value of this backend.", + "type": "number" + } + }, + "required": [ + "service", + "weight" + ], + "type": "object" + }, + "type": "array" + }, + "matches": { + "description": "The HTTP route groups that this traffic split should match.", + "items": { + "properties": { + "kind": { + "description": "Kind of the matching group.", + "enum": [ + "HTTPRouteGroup" + ], + "type": "string" + }, + "name": { + "description": "Name of the matching group.", + "type": "string" + } + }, + "required": [ + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "service": { + "description": "The apex service of this split.", + "type": "string" + } + }, + "required": [ + "service", + "backends" + ], + "title": "Traffic Split", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.3-rc.1/trafficsplit.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.8.3-rc.1/trafficsplit.meshery.layer5.io_definition.json new file mode 100755 index 00000000..0f6f466f --- /dev/null +++ b/templates/oam/workloads/v0.8.3-rc.1/trafficsplit.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TrafficSplit", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "trafficsplit.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "split.smi-spec.io/v1alpha4", + "k8sKind": "TrafficSplit", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.8.3-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.3-rc.1/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.8.3-rc.1/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..83a24559 --- /dev/null +++ b/templates/oam/workloads/v0.8.3-rc.1/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,91 @@ +{ + "properties": { + "destination": { + "description": "The destination of this traffic target.", + "properties": { + "kind": { + "description": "Kind of the destination.", + "type": "string" + }, + "name": { + "description": "Name of the destination.", + "type": "string" + }, + "namespace": { + "description": "Namespace of the destination.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "rules": { + "description": "Specifications of this traffic target.", + "items": { + "properties": { + "kind": { + "description": "Kind of this spec.", + "enum": [ + "HTTPRouteGroup", + "TCPRoute", + "UDPRoute" + ], + "type": "string" + }, + "matches": { + "description": "Match conditions of this spec.", + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "Name of this spec.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources of this traffic target.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "destination", + "rules", + "sources" + ], + "title": "Traffic Target", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.3-rc.1/traffictarget.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.8.3-rc.1/traffictarget.meshery.layer5.io_definition.json new file mode 100755 index 00000000..dc988789 --- /dev/null +++ b/templates/oam/workloads/v0.8.3-rc.1/traffictarget.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TrafficTarget", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "traffictarget.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "access.smi-spec.io/v1alpha3", + "k8sKind": "TrafficTarget", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.8.3-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.3/egress.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.8.3/egress.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..c77de28d --- /dev/null +++ b/templates/oam/workloads/v0.8.3/egress.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,103 @@ +{ + "properties": { + "hosts": { + "description": "Hosts that the sources are allowed to direct external traffic to.", + "items": { + "type": "string" + }, + "type": "array" + }, + "ipAddresses": { + "description": "IP address ranges that the sources are allowed to direct external traffic to.", + "items": { + "pattern": "((?:\\d{1,3}\\.){3}\\d{1,3})\\/(\\d{1,2})$", + "type": "string" + }, + "type": "array" + }, + "matches": { + "description": "The resource references an Egress policy should match on.", + "items": { + "properties": { + "apiGroup": { + "description": "API group for the resource being referenced.", + "type": "string" + }, + "kind": { + "description": "Type of resource being referenced.", + "type": "string" + }, + "name": { + "description": "Name of resource being referenced.", + "type": "string" + } + }, + "required": [ + "apiGroup", + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "ports": { + "description": "Ports that the sources are allowed to direct external traffic to.", + "items": { + "properties": { + "number": { + "description": "Port number of this port.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "description": "Protocol served by this port.", + "type": "string" + } + }, + "required": [ + "number", + "protocol" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources the egress policy is applicable to.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "enum": [ + "ServiceAccount" + ], + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "kind", + "name", + "namespace" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "sources", + "ports" + ], + "title": "Egress", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.3/egress.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.8.3/egress.meshery.layer5.io_definition.json new file mode 100755 index 00000000..1a1566e4 --- /dev/null +++ b/templates/oam/workloads/v0.8.3/egress.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Egress", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "egress.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "policy.openservicemesh.io/v1alpha1", + "k8sKind": "Egress", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.8.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.3/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.8.3/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..6951d46c --- /dev/null +++ b/templates/oam/workloads/v0.8.3/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,60 @@ +{ + "properties": { + "matches": { + "description": "Match conditions of this route group.", + "items": { + "properties": { + "headers": { + "description": "Header match conditions of this route.", + "items": { + "additionalProperties": { + "type": "string" + }, + "description": "Header match condition of this route.", + "type": "object" + }, + "type": "array" + }, + "methods": { + "description": "The HTTP methods of this HTTP route.", + "items": { + "description": "The HTTP method of this HTTP route.", + "enum": [ + "*", + "GET", + "HEAD", + "PUT", + "POST", + "DELETE", + "CONNECT", + "OPTIONS", + "TRACE", + "PATCH" + ], + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "Name of the HTTP route.", + "type": "string" + }, + "pathRegex": { + "description": "URI path regex of the HTTP route.", + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "matches" + ], + "title": "HTTP Route Group", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.3/httproutegroup.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.8.3/httproutegroup.meshery.layer5.io_definition.json new file mode 100755 index 00000000..a77adc40 --- /dev/null +++ b/templates/oam/workloads/v0.8.3/httproutegroup.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPRouteGroup", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httproutegroup.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "specs.smi-spec.io/v1alpha4", + "k8sKind": "HTTPRouteGroup", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.8.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.3/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.8.3/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..f5535897 --- /dev/null +++ b/templates/oam/workloads/v0.8.3/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,118 @@ +{ + "properties": { + "backends": { + "description": "Backends the IngressBackend policy is applicable to.", + "items": { + "properties": { + "name": { + "description": "Name of the backend.", + "type": "string" + }, + "port": { + "description": "Port of the backend.", + "properties": { + "number": { + "description": "Port number of this port.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "description": "Protocol served by this port.", + "type": "string" + } + }, + "required": [ + "number", + "protocol" + ], + "type": "object" + }, + "tls": { + "description": "TLS configuration for the backend.", + "properties": { + "skipClientCertValidation": { + "description": "Skip client certificate validation.", + "type": "boolean" + }, + "sniHosts": { + "description": "SNI hosts allowed by the backend.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "skipClientCertValidation" + ], + "type": "object" + } + }, + "required": [ + "name", + "port" + ], + "type": "object" + }, + "type": "array" + }, + "matches": { + "description": "The resource references an IngressBackend policy should match on.", + "items": { + "properties": { + "apiGroup": { + "description": "API group for the resource being referenced.", + "type": "string" + }, + "kind": { + "description": "Type of resource being referenced.", + "type": "string" + }, + "name": { + "description": "Name of resource being referenced.", + "type": "string" + } + }, + "required": [ + "apiGroup", + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources the IngressBackend policy is applicable to.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "backends", + "sources" + ], + "title": "Ingress Backend", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.3/ingressbackend.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.8.3/ingressbackend.meshery.layer5.io_definition.json new file mode 100755 index 00000000..b85f8ed5 --- /dev/null +++ b/templates/oam/workloads/v0.8.3/ingressbackend.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "IngressBackend", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "ingressbackend.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "policy.openservicemesh.io/v1alpha1", + "k8sKind": "IngressBackend", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.8.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.3/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.8.3/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..b607634a --- /dev/null +++ b/templates/oam/workloads/v0.8.3/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,264 @@ +{ + "properties": { + "certificate": { + "description": "Configuration for certificate management", + "properties": { + "certKeyBitSize": { + "description": "Sets the certificate key bit size for data plane certificates.", + "type": "integer" + }, + "ingressGateway": { + "description": "Configuration for the ingress gateway's certificate", + "properties": { + "secret": { + "description": "Secret reference to store the certificate in", + "properties": { + "name": { + "description": "Name of the secret", + "type": "string" + }, + "namespace": { + "description": "Namespace of the secret", + "type": "string" + } + }, + "required": [ + "name", + "namespace" + ], + "type": "object" + }, + "subjectAltNames": { + "description": "Subject Alternative Names secured by the certificate", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "validityDuration": { + "description": "Certificate validity duration, represented as a sequence of decimal numbers each with optional fraction and a unit suffix", + "type": "string" + } + }, + "required": [ + "subjectAltNames", + "validityDuration", + "secret" + ], + "type": "object" + }, + "serviceCertValidityDuration": { + "description": "Sets the service certificate validity duration, represented as a sequence of decimal numbers each with optional fraction and a unit suffix.", + "type": "string" + } + }, + "required": [ + "serviceCertValidityDuration", + "certKeyBitSize" + ], + "type": "object" + }, + "featureFlags": { + "description": "OSM feature flags", + "properties": { + "enableAsyncProxyServiceMapping": { + "type": "boolean" + }, + "enableEgressPolicy": { + "type": "boolean" + }, + "enableEnvoyActiveHealthChecks": { + "type": "boolean" + }, + "enableIngressBackendPolicy": { + "type": "boolean" + }, + "enableMulticlusterMode": { + "type": "boolean" + }, + "enableRetryPolicy": { + "type": "boolean" + }, + "enableSnapshotCacheMode": { + "type": "boolean" + }, + "enableWASMStats": { + "type": "boolean" + } + }, + "type": "object" + }, + "observability": { + "description": "Configuration for observing the service mesh, including metrics, logs, tracing etc,.", + "properties": { + "enableDebugServer": { + "description": "Enables a debug endpoint on the osm-controller pod to list information regarding the mesh such as proxy connections, certificates, and SMI policies.", + "type": "boolean" + }, + "osmLogLevel": { + "description": "Allows setting OSM control plane log level at runtime", + "type": "string" + }, + "tracing": { + "description": "Configuration for distributed tracing", + "properties": { + "address": { + "description": "Address of Jaeger tracing deployment, if tracing is enabled.", + "type": "string" + }, + "enable": { + "description": "Enables Jaeger tracing for the mesh.", + "type": "boolean" + }, + "endpoint": { + "description": "Endpoint for tracing data, if tracing is enabled.", + "type": "string" + }, + "port": { + "description": "Port on which tracing is enabled.", + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "sidecar": { + "description": "Configuration for Envoy sidecar", + "properties": { + "configResyncInterval": { + "description": "Resync interval for regular proxy broadcast updates", + "type": "string" + }, + "enablePrivilegedInitContainer": { + "description": "Enables privileged init containers for pods in mesh. When false, init containers only have NET_ADMIN.", + "type": "boolean" + }, + "envoyImage": { + "description": "Image for the Envoy sidecar", + "type": "string" + }, + "envoyWindowsImage": { + "description": "Image for the Envoy sidecar on Windows workers", + "type": "string" + }, + "initContainerImage": { + "description": "Image for the init container", + "type": "string" + }, + "logLevel": { + "description": "Sets the logging verbosity of Envoy proxy sidecar, only applicable to newly created pods joining the mesh.", + "enum": [ + "trace", + "debug", + "info", + "warning", + "warn", + "error", + "critical", + "off" + ], + "type": "string" + }, + "maxDataPlaneConnections": { + "description": "Max allowed data plane sidecar connections", + "type": "integer" + }, + "resources": { + "properties": { + "limits": { + "additionalProperties": true, + "description": "Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/", + "type": "object" + }, + "requests": { + "additionalProperties": true, + "description": "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/", + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "traffic": { + "description": "Configuration for traffic management", + "properties": { + "enableEgress": { + "description": "Enables egress in the mesh", + "type": "boolean" + }, + "enablePermissiveTrafficPolicyMode": { + "description": "True for allowing traffic to flow between client and service pods within the mesh without SMI traffic policies, i.e. no traffic policy enforcement in the mesh. If set to false, enables deny-all traffic policy in mesh i.e. an SMI Traffic Target is necessary for services to communicate.", + "type": "boolean" + }, + "inboundExternalAuthorization": { + "description": "Configures external authorization for inbound and ingress connections.", + "properties": { + "address": { + "description": "Target destination endpoint that will handle external authorization.", + "type": "string" + }, + "enable": { + "description": "Enables/disables the inbound external authorization policy if present.", + "type": "boolean" + }, + "failureModeAllow": { + "description": "Allows specifying if traffic should succeed or fail if the external authorization endpoint fails to respond.", + "type": "boolean" + }, + "port": { + "description": "Remote destination port for the external authorization endpoint.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "statPrefix": { + "default": "inboundExtAuthz", + "description": "String prefix for inbound external authorization related metrics.", + "type": "string" + }, + "timeout": { + "default": "1s", + "description": "Defines the timeout to consider for the remote endpoint to reply in time.", + "type": "string" + } + }, + "type": "object" + }, + "inboundPortExclusionList": { + "description": "Global list of ports to exclude from inbound traffic interception by the sidecar proxy.", + "items": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "type": "array" + }, + "outboundIPRangeExclusionList": { + "description": "Global list of IP address ranges to exclude from outbound traffic interception by the sidecar proxy.", + "items": { + "pattern": "((?:\\d{1,3}\\.){3}\\d{1,3})\\/(\\d{1,2})$", + "type": "string" + }, + "type": "array" + }, + "outboundPortExclusionList": { + "description": "Global list of ports to exclude from outbound traffic interception by the sidecar proxy.", + "items": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "title": "Mesh Config", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.3/meshconfig.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.8.3/meshconfig.meshery.layer5.io_definition.json new file mode 100755 index 00000000..294102c0 --- /dev/null +++ b/templates/oam/workloads/v0.8.3/meshconfig.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "MeshConfig", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "meshconfig.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.openservicemesh.io/v1alpha1", + "k8sKind": "MeshConfig", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.8.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.3/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.8.3/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..60d4f7dd --- /dev/null +++ b/templates/oam/workloads/v0.8.3/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "properties": { + "clusters": { + "description": "The clusters the service accounts are hosted on.", + "items": { + "properties": { + "address": { + "description": "a routable IP + port", + "pattern": "^(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3}):[0-9]+$", + "type": "string" + }, + "certificate": { + "description": "mTLS certificates (optional)", + "type": "string" + }, + "name": { + "description": "Name of the remote cluster", + "type": "string" + }, + "priority": { + "description": "Priority of the remote cluster in locality based load balancing", + "minimum": 0, + "type": "integer" + }, + "weight": { + "default": 0, + "description": "Load balancing weight of the remote cluster", + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "address", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "ports": { + "description": "The list of ports that are exposed by this service.", + "items": { + "properties": { + "port": { + "description": "The port that will be exposed by this service.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "default": "TCP", + "description": "The IP protocol for this port. Supports \"TCP\", \"UDP\", and \"SCTP\". Default is TCP.", + "enum": [ + "TCP", + "UDP", + "SCTP" + ], + "type": "string" + } + }, + "required": [ + "port", + "protocol" + ], + "type": "object" + }, + "type": "array" + }, + "serviceAccount": { + "type": "string" + } + }, + "required": [ + "serviceAccount", + "clusters" + ], + "title": "Multi Cluster Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.3/multiclusterservice.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.8.3/multiclusterservice.meshery.layer5.io_definition.json new file mode 100755 index 00000000..06efbba4 --- /dev/null +++ b/templates/oam/workloads/v0.8.3/multiclusterservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "MultiClusterService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "multiclusterservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.openservicemesh.io/v1alpha1", + "k8sKind": "MultiClusterService", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.8.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.3/tcproute.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.8.3/tcproute.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..d0cc9bfe --- /dev/null +++ b/templates/oam/workloads/v0.8.3/tcproute.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,25 @@ +{ + "properties": { + "matches": { + "description": "Match conditions of this route.", + "properties": { + "ports": { + "description": "Port numbers to match TCP traffic.", + "items": { + "type": "integer" + }, + "type": "array" + } + }, + "required": [ + "ports" + ], + "type": "object" + } + }, + "required": [ + "matches" + ], + "title": "TCP Route", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.3/tcproute.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.8.3/tcproute.meshery.layer5.io_definition.json new file mode 100755 index 00000000..f71d6406 --- /dev/null +++ b/templates/oam/workloads/v0.8.3/tcproute.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TCPRoute", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "tcproute.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "specs.smi-spec.io/v1alpha4", + "k8sKind": "TCPRoute", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.8.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.3/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.8.3/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..13f0a9a2 --- /dev/null +++ b/templates/oam/workloads/v0.8.3/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,59 @@ +{ + "properties": { + "backends": { + "description": "The backend services of this split.", + "items": { + "properties": { + "service": { + "description": "Name of the Kubernetes service.", + "type": "string" + }, + "weight": { + "description": "Traffic weight value of this backend.", + "type": "number" + } + }, + "required": [ + "service", + "weight" + ], + "type": "object" + }, + "type": "array" + }, + "matches": { + "description": "The HTTP route groups that this traffic split should match.", + "items": { + "properties": { + "kind": { + "description": "Kind of the matching group.", + "enum": [ + "HTTPRouteGroup" + ], + "type": "string" + }, + "name": { + "description": "Name of the matching group.", + "type": "string" + } + }, + "required": [ + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "service": { + "description": "The apex service of this split.", + "type": "string" + } + }, + "required": [ + "service", + "backends" + ], + "title": "Traffic Split", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.3/trafficsplit.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.8.3/trafficsplit.meshery.layer5.io_definition.json new file mode 100755 index 00000000..92bdf206 --- /dev/null +++ b/templates/oam/workloads/v0.8.3/trafficsplit.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TrafficSplit", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "trafficsplit.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "split.smi-spec.io/v1alpha4", + "k8sKind": "TrafficSplit", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.8.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.3/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.8.3/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..83a24559 --- /dev/null +++ b/templates/oam/workloads/v0.8.3/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,91 @@ +{ + "properties": { + "destination": { + "description": "The destination of this traffic target.", + "properties": { + "kind": { + "description": "Kind of the destination.", + "type": "string" + }, + "name": { + "description": "Name of the destination.", + "type": "string" + }, + "namespace": { + "description": "Namespace of the destination.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "rules": { + "description": "Specifications of this traffic target.", + "items": { + "properties": { + "kind": { + "description": "Kind of this spec.", + "enum": [ + "HTTPRouteGroup", + "TCPRoute", + "UDPRoute" + ], + "type": "string" + }, + "matches": { + "description": "Match conditions of this spec.", + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "Name of this spec.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources of this traffic target.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "destination", + "rules", + "sources" + ], + "title": "Traffic Target", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.3/traffictarget.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.8.3/traffictarget.meshery.layer5.io_definition.json new file mode 100755 index 00000000..4add1ba1 --- /dev/null +++ b/templates/oam/workloads/v0.8.3/traffictarget.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TrafficTarget", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "traffictarget.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "access.smi-spec.io/v1alpha3", + "k8sKind": "TrafficTarget", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.8.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.4-rc.1/egress.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.8.4-rc.1/egress.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..c77de28d --- /dev/null +++ b/templates/oam/workloads/v0.8.4-rc.1/egress.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,103 @@ +{ + "properties": { + "hosts": { + "description": "Hosts that the sources are allowed to direct external traffic to.", + "items": { + "type": "string" + }, + "type": "array" + }, + "ipAddresses": { + "description": "IP address ranges that the sources are allowed to direct external traffic to.", + "items": { + "pattern": "((?:\\d{1,3}\\.){3}\\d{1,3})\\/(\\d{1,2})$", + "type": "string" + }, + "type": "array" + }, + "matches": { + "description": "The resource references an Egress policy should match on.", + "items": { + "properties": { + "apiGroup": { + "description": "API group for the resource being referenced.", + "type": "string" + }, + "kind": { + "description": "Type of resource being referenced.", + "type": "string" + }, + "name": { + "description": "Name of resource being referenced.", + "type": "string" + } + }, + "required": [ + "apiGroup", + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "ports": { + "description": "Ports that the sources are allowed to direct external traffic to.", + "items": { + "properties": { + "number": { + "description": "Port number of this port.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "description": "Protocol served by this port.", + "type": "string" + } + }, + "required": [ + "number", + "protocol" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources the egress policy is applicable to.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "enum": [ + "ServiceAccount" + ], + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "kind", + "name", + "namespace" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "sources", + "ports" + ], + "title": "Egress", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.4-rc.1/egress.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.8.4-rc.1/egress.meshery.layer5.io_definition.json new file mode 100755 index 00000000..f7689331 --- /dev/null +++ b/templates/oam/workloads/v0.8.4-rc.1/egress.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Egress", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "egress.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "policy.openservicemesh.io/v1alpha1", + "k8sKind": "Egress", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.8.4-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.4-rc.1/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.8.4-rc.1/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..6951d46c --- /dev/null +++ b/templates/oam/workloads/v0.8.4-rc.1/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,60 @@ +{ + "properties": { + "matches": { + "description": "Match conditions of this route group.", + "items": { + "properties": { + "headers": { + "description": "Header match conditions of this route.", + "items": { + "additionalProperties": { + "type": "string" + }, + "description": "Header match condition of this route.", + "type": "object" + }, + "type": "array" + }, + "methods": { + "description": "The HTTP methods of this HTTP route.", + "items": { + "description": "The HTTP method of this HTTP route.", + "enum": [ + "*", + "GET", + "HEAD", + "PUT", + "POST", + "DELETE", + "CONNECT", + "OPTIONS", + "TRACE", + "PATCH" + ], + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "Name of the HTTP route.", + "type": "string" + }, + "pathRegex": { + "description": "URI path regex of the HTTP route.", + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "matches" + ], + "title": "HTTP Route Group", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.4-rc.1/httproutegroup.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.8.4-rc.1/httproutegroup.meshery.layer5.io_definition.json new file mode 100755 index 00000000..55541463 --- /dev/null +++ b/templates/oam/workloads/v0.8.4-rc.1/httproutegroup.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPRouteGroup", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httproutegroup.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "specs.smi-spec.io/v1alpha4", + "k8sKind": "HTTPRouteGroup", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.8.4-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.4-rc.1/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.8.4-rc.1/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..f5535897 --- /dev/null +++ b/templates/oam/workloads/v0.8.4-rc.1/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,118 @@ +{ + "properties": { + "backends": { + "description": "Backends the IngressBackend policy is applicable to.", + "items": { + "properties": { + "name": { + "description": "Name of the backend.", + "type": "string" + }, + "port": { + "description": "Port of the backend.", + "properties": { + "number": { + "description": "Port number of this port.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "description": "Protocol served by this port.", + "type": "string" + } + }, + "required": [ + "number", + "protocol" + ], + "type": "object" + }, + "tls": { + "description": "TLS configuration for the backend.", + "properties": { + "skipClientCertValidation": { + "description": "Skip client certificate validation.", + "type": "boolean" + }, + "sniHosts": { + "description": "SNI hosts allowed by the backend.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "skipClientCertValidation" + ], + "type": "object" + } + }, + "required": [ + "name", + "port" + ], + "type": "object" + }, + "type": "array" + }, + "matches": { + "description": "The resource references an IngressBackend policy should match on.", + "items": { + "properties": { + "apiGroup": { + "description": "API group for the resource being referenced.", + "type": "string" + }, + "kind": { + "description": "Type of resource being referenced.", + "type": "string" + }, + "name": { + "description": "Name of resource being referenced.", + "type": "string" + } + }, + "required": [ + "apiGroup", + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources the IngressBackend policy is applicable to.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "backends", + "sources" + ], + "title": "Ingress Backend", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.4-rc.1/ingressbackend.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.8.4-rc.1/ingressbackend.meshery.layer5.io_definition.json new file mode 100755 index 00000000..3674cab5 --- /dev/null +++ b/templates/oam/workloads/v0.8.4-rc.1/ingressbackend.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "IngressBackend", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "ingressbackend.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "policy.openservicemesh.io/v1alpha1", + "k8sKind": "IngressBackend", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.8.4-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.4-rc.1/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.8.4-rc.1/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..b607634a --- /dev/null +++ b/templates/oam/workloads/v0.8.4-rc.1/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,264 @@ +{ + "properties": { + "certificate": { + "description": "Configuration for certificate management", + "properties": { + "certKeyBitSize": { + "description": "Sets the certificate key bit size for data plane certificates.", + "type": "integer" + }, + "ingressGateway": { + "description": "Configuration for the ingress gateway's certificate", + "properties": { + "secret": { + "description": "Secret reference to store the certificate in", + "properties": { + "name": { + "description": "Name of the secret", + "type": "string" + }, + "namespace": { + "description": "Namespace of the secret", + "type": "string" + } + }, + "required": [ + "name", + "namespace" + ], + "type": "object" + }, + "subjectAltNames": { + "description": "Subject Alternative Names secured by the certificate", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "validityDuration": { + "description": "Certificate validity duration, represented as a sequence of decimal numbers each with optional fraction and a unit suffix", + "type": "string" + } + }, + "required": [ + "subjectAltNames", + "validityDuration", + "secret" + ], + "type": "object" + }, + "serviceCertValidityDuration": { + "description": "Sets the service certificate validity duration, represented as a sequence of decimal numbers each with optional fraction and a unit suffix.", + "type": "string" + } + }, + "required": [ + "serviceCertValidityDuration", + "certKeyBitSize" + ], + "type": "object" + }, + "featureFlags": { + "description": "OSM feature flags", + "properties": { + "enableAsyncProxyServiceMapping": { + "type": "boolean" + }, + "enableEgressPolicy": { + "type": "boolean" + }, + "enableEnvoyActiveHealthChecks": { + "type": "boolean" + }, + "enableIngressBackendPolicy": { + "type": "boolean" + }, + "enableMulticlusterMode": { + "type": "boolean" + }, + "enableRetryPolicy": { + "type": "boolean" + }, + "enableSnapshotCacheMode": { + "type": "boolean" + }, + "enableWASMStats": { + "type": "boolean" + } + }, + "type": "object" + }, + "observability": { + "description": "Configuration for observing the service mesh, including metrics, logs, tracing etc,.", + "properties": { + "enableDebugServer": { + "description": "Enables a debug endpoint on the osm-controller pod to list information regarding the mesh such as proxy connections, certificates, and SMI policies.", + "type": "boolean" + }, + "osmLogLevel": { + "description": "Allows setting OSM control plane log level at runtime", + "type": "string" + }, + "tracing": { + "description": "Configuration for distributed tracing", + "properties": { + "address": { + "description": "Address of Jaeger tracing deployment, if tracing is enabled.", + "type": "string" + }, + "enable": { + "description": "Enables Jaeger tracing for the mesh.", + "type": "boolean" + }, + "endpoint": { + "description": "Endpoint for tracing data, if tracing is enabled.", + "type": "string" + }, + "port": { + "description": "Port on which tracing is enabled.", + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "sidecar": { + "description": "Configuration for Envoy sidecar", + "properties": { + "configResyncInterval": { + "description": "Resync interval for regular proxy broadcast updates", + "type": "string" + }, + "enablePrivilegedInitContainer": { + "description": "Enables privileged init containers for pods in mesh. When false, init containers only have NET_ADMIN.", + "type": "boolean" + }, + "envoyImage": { + "description": "Image for the Envoy sidecar", + "type": "string" + }, + "envoyWindowsImage": { + "description": "Image for the Envoy sidecar on Windows workers", + "type": "string" + }, + "initContainerImage": { + "description": "Image for the init container", + "type": "string" + }, + "logLevel": { + "description": "Sets the logging verbosity of Envoy proxy sidecar, only applicable to newly created pods joining the mesh.", + "enum": [ + "trace", + "debug", + "info", + "warning", + "warn", + "error", + "critical", + "off" + ], + "type": "string" + }, + "maxDataPlaneConnections": { + "description": "Max allowed data plane sidecar connections", + "type": "integer" + }, + "resources": { + "properties": { + "limits": { + "additionalProperties": true, + "description": "Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/", + "type": "object" + }, + "requests": { + "additionalProperties": true, + "description": "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/", + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "traffic": { + "description": "Configuration for traffic management", + "properties": { + "enableEgress": { + "description": "Enables egress in the mesh", + "type": "boolean" + }, + "enablePermissiveTrafficPolicyMode": { + "description": "True for allowing traffic to flow between client and service pods within the mesh without SMI traffic policies, i.e. no traffic policy enforcement in the mesh. If set to false, enables deny-all traffic policy in mesh i.e. an SMI Traffic Target is necessary for services to communicate.", + "type": "boolean" + }, + "inboundExternalAuthorization": { + "description": "Configures external authorization for inbound and ingress connections.", + "properties": { + "address": { + "description": "Target destination endpoint that will handle external authorization.", + "type": "string" + }, + "enable": { + "description": "Enables/disables the inbound external authorization policy if present.", + "type": "boolean" + }, + "failureModeAllow": { + "description": "Allows specifying if traffic should succeed or fail if the external authorization endpoint fails to respond.", + "type": "boolean" + }, + "port": { + "description": "Remote destination port for the external authorization endpoint.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "statPrefix": { + "default": "inboundExtAuthz", + "description": "String prefix for inbound external authorization related metrics.", + "type": "string" + }, + "timeout": { + "default": "1s", + "description": "Defines the timeout to consider for the remote endpoint to reply in time.", + "type": "string" + } + }, + "type": "object" + }, + "inboundPortExclusionList": { + "description": "Global list of ports to exclude from inbound traffic interception by the sidecar proxy.", + "items": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "type": "array" + }, + "outboundIPRangeExclusionList": { + "description": "Global list of IP address ranges to exclude from outbound traffic interception by the sidecar proxy.", + "items": { + "pattern": "((?:\\d{1,3}\\.){3}\\d{1,3})\\/(\\d{1,2})$", + "type": "string" + }, + "type": "array" + }, + "outboundPortExclusionList": { + "description": "Global list of ports to exclude from outbound traffic interception by the sidecar proxy.", + "items": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "title": "Mesh Config", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.4-rc.1/meshconfig.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.8.4-rc.1/meshconfig.meshery.layer5.io_definition.json new file mode 100755 index 00000000..759a66da --- /dev/null +++ b/templates/oam/workloads/v0.8.4-rc.1/meshconfig.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "MeshConfig", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "meshconfig.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.openservicemesh.io/v1alpha1", + "k8sKind": "MeshConfig", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.8.4-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.4-rc.1/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.8.4-rc.1/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..60d4f7dd --- /dev/null +++ b/templates/oam/workloads/v0.8.4-rc.1/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "properties": { + "clusters": { + "description": "The clusters the service accounts are hosted on.", + "items": { + "properties": { + "address": { + "description": "a routable IP + port", + "pattern": "^(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3}):[0-9]+$", + "type": "string" + }, + "certificate": { + "description": "mTLS certificates (optional)", + "type": "string" + }, + "name": { + "description": "Name of the remote cluster", + "type": "string" + }, + "priority": { + "description": "Priority of the remote cluster in locality based load balancing", + "minimum": 0, + "type": "integer" + }, + "weight": { + "default": 0, + "description": "Load balancing weight of the remote cluster", + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "address", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "ports": { + "description": "The list of ports that are exposed by this service.", + "items": { + "properties": { + "port": { + "description": "The port that will be exposed by this service.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "default": "TCP", + "description": "The IP protocol for this port. Supports \"TCP\", \"UDP\", and \"SCTP\". Default is TCP.", + "enum": [ + "TCP", + "UDP", + "SCTP" + ], + "type": "string" + } + }, + "required": [ + "port", + "protocol" + ], + "type": "object" + }, + "type": "array" + }, + "serviceAccount": { + "type": "string" + } + }, + "required": [ + "serviceAccount", + "clusters" + ], + "title": "Multi Cluster Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.4-rc.1/multiclusterservice.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.8.4-rc.1/multiclusterservice.meshery.layer5.io_definition.json new file mode 100755 index 00000000..cb0db93d --- /dev/null +++ b/templates/oam/workloads/v0.8.4-rc.1/multiclusterservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "MultiClusterService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "multiclusterservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.openservicemesh.io/v1alpha1", + "k8sKind": "MultiClusterService", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.8.4-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.4-rc.1/tcproute.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.8.4-rc.1/tcproute.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..d0cc9bfe --- /dev/null +++ b/templates/oam/workloads/v0.8.4-rc.1/tcproute.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,25 @@ +{ + "properties": { + "matches": { + "description": "Match conditions of this route.", + "properties": { + "ports": { + "description": "Port numbers to match TCP traffic.", + "items": { + "type": "integer" + }, + "type": "array" + } + }, + "required": [ + "ports" + ], + "type": "object" + } + }, + "required": [ + "matches" + ], + "title": "TCP Route", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.4-rc.1/tcproute.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.8.4-rc.1/tcproute.meshery.layer5.io_definition.json new file mode 100755 index 00000000..a1881703 --- /dev/null +++ b/templates/oam/workloads/v0.8.4-rc.1/tcproute.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TCPRoute", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "tcproute.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "specs.smi-spec.io/v1alpha4", + "k8sKind": "TCPRoute", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.8.4-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.4-rc.1/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.8.4-rc.1/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..13f0a9a2 --- /dev/null +++ b/templates/oam/workloads/v0.8.4-rc.1/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,59 @@ +{ + "properties": { + "backends": { + "description": "The backend services of this split.", + "items": { + "properties": { + "service": { + "description": "Name of the Kubernetes service.", + "type": "string" + }, + "weight": { + "description": "Traffic weight value of this backend.", + "type": "number" + } + }, + "required": [ + "service", + "weight" + ], + "type": "object" + }, + "type": "array" + }, + "matches": { + "description": "The HTTP route groups that this traffic split should match.", + "items": { + "properties": { + "kind": { + "description": "Kind of the matching group.", + "enum": [ + "HTTPRouteGroup" + ], + "type": "string" + }, + "name": { + "description": "Name of the matching group.", + "type": "string" + } + }, + "required": [ + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "service": { + "description": "The apex service of this split.", + "type": "string" + } + }, + "required": [ + "service", + "backends" + ], + "title": "Traffic Split", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.4-rc.1/trafficsplit.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.8.4-rc.1/trafficsplit.meshery.layer5.io_definition.json new file mode 100755 index 00000000..5b7d7abd --- /dev/null +++ b/templates/oam/workloads/v0.8.4-rc.1/trafficsplit.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TrafficSplit", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "trafficsplit.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "split.smi-spec.io/v1alpha4", + "k8sKind": "TrafficSplit", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.8.4-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.4-rc.1/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.8.4-rc.1/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..83a24559 --- /dev/null +++ b/templates/oam/workloads/v0.8.4-rc.1/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,91 @@ +{ + "properties": { + "destination": { + "description": "The destination of this traffic target.", + "properties": { + "kind": { + "description": "Kind of the destination.", + "type": "string" + }, + "name": { + "description": "Name of the destination.", + "type": "string" + }, + "namespace": { + "description": "Namespace of the destination.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "rules": { + "description": "Specifications of this traffic target.", + "items": { + "properties": { + "kind": { + "description": "Kind of this spec.", + "enum": [ + "HTTPRouteGroup", + "TCPRoute", + "UDPRoute" + ], + "type": "string" + }, + "matches": { + "description": "Match conditions of this spec.", + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "Name of this spec.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources of this traffic target.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "destination", + "rules", + "sources" + ], + "title": "Traffic Target", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.4-rc.1/traffictarget.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.8.4-rc.1/traffictarget.meshery.layer5.io_definition.json new file mode 100755 index 00000000..1c4325e7 --- /dev/null +++ b/templates/oam/workloads/v0.8.4-rc.1/traffictarget.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TrafficTarget", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "traffictarget.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "access.smi-spec.io/v1alpha3", + "k8sKind": "TrafficTarget", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.8.4-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.4/egress.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.8.4/egress.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..c77de28d --- /dev/null +++ b/templates/oam/workloads/v0.8.4/egress.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,103 @@ +{ + "properties": { + "hosts": { + "description": "Hosts that the sources are allowed to direct external traffic to.", + "items": { + "type": "string" + }, + "type": "array" + }, + "ipAddresses": { + "description": "IP address ranges that the sources are allowed to direct external traffic to.", + "items": { + "pattern": "((?:\\d{1,3}\\.){3}\\d{1,3})\\/(\\d{1,2})$", + "type": "string" + }, + "type": "array" + }, + "matches": { + "description": "The resource references an Egress policy should match on.", + "items": { + "properties": { + "apiGroup": { + "description": "API group for the resource being referenced.", + "type": "string" + }, + "kind": { + "description": "Type of resource being referenced.", + "type": "string" + }, + "name": { + "description": "Name of resource being referenced.", + "type": "string" + } + }, + "required": [ + "apiGroup", + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "ports": { + "description": "Ports that the sources are allowed to direct external traffic to.", + "items": { + "properties": { + "number": { + "description": "Port number of this port.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "description": "Protocol served by this port.", + "type": "string" + } + }, + "required": [ + "number", + "protocol" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources the egress policy is applicable to.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "enum": [ + "ServiceAccount" + ], + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "kind", + "name", + "namespace" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "sources", + "ports" + ], + "title": "Egress", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.4/egress.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.8.4/egress.meshery.layer5.io_definition.json new file mode 100755 index 00000000..9bac7cfb --- /dev/null +++ b/templates/oam/workloads/v0.8.4/egress.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Egress", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "egress.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "policy.openservicemesh.io/v1alpha1", + "k8sKind": "Egress", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.8.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.4/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.8.4/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..6951d46c --- /dev/null +++ b/templates/oam/workloads/v0.8.4/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,60 @@ +{ + "properties": { + "matches": { + "description": "Match conditions of this route group.", + "items": { + "properties": { + "headers": { + "description": "Header match conditions of this route.", + "items": { + "additionalProperties": { + "type": "string" + }, + "description": "Header match condition of this route.", + "type": "object" + }, + "type": "array" + }, + "methods": { + "description": "The HTTP methods of this HTTP route.", + "items": { + "description": "The HTTP method of this HTTP route.", + "enum": [ + "*", + "GET", + "HEAD", + "PUT", + "POST", + "DELETE", + "CONNECT", + "OPTIONS", + "TRACE", + "PATCH" + ], + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "Name of the HTTP route.", + "type": "string" + }, + "pathRegex": { + "description": "URI path regex of the HTTP route.", + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "matches" + ], + "title": "HTTP Route Group", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.4/httproutegroup.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.8.4/httproutegroup.meshery.layer5.io_definition.json new file mode 100755 index 00000000..42c4e3a1 --- /dev/null +++ b/templates/oam/workloads/v0.8.4/httproutegroup.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPRouteGroup", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httproutegroup.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "specs.smi-spec.io/v1alpha4", + "k8sKind": "HTTPRouteGroup", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.8.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.4/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.8.4/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..f5535897 --- /dev/null +++ b/templates/oam/workloads/v0.8.4/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,118 @@ +{ + "properties": { + "backends": { + "description": "Backends the IngressBackend policy is applicable to.", + "items": { + "properties": { + "name": { + "description": "Name of the backend.", + "type": "string" + }, + "port": { + "description": "Port of the backend.", + "properties": { + "number": { + "description": "Port number of this port.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "description": "Protocol served by this port.", + "type": "string" + } + }, + "required": [ + "number", + "protocol" + ], + "type": "object" + }, + "tls": { + "description": "TLS configuration for the backend.", + "properties": { + "skipClientCertValidation": { + "description": "Skip client certificate validation.", + "type": "boolean" + }, + "sniHosts": { + "description": "SNI hosts allowed by the backend.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "skipClientCertValidation" + ], + "type": "object" + } + }, + "required": [ + "name", + "port" + ], + "type": "object" + }, + "type": "array" + }, + "matches": { + "description": "The resource references an IngressBackend policy should match on.", + "items": { + "properties": { + "apiGroup": { + "description": "API group for the resource being referenced.", + "type": "string" + }, + "kind": { + "description": "Type of resource being referenced.", + "type": "string" + }, + "name": { + "description": "Name of resource being referenced.", + "type": "string" + } + }, + "required": [ + "apiGroup", + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources the IngressBackend policy is applicable to.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "backends", + "sources" + ], + "title": "Ingress Backend", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.4/ingressbackend.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.8.4/ingressbackend.meshery.layer5.io_definition.json new file mode 100755 index 00000000..7c0c2e0d --- /dev/null +++ b/templates/oam/workloads/v0.8.4/ingressbackend.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "IngressBackend", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "ingressbackend.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "policy.openservicemesh.io/v1alpha1", + "k8sKind": "IngressBackend", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.8.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.4/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.8.4/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..b607634a --- /dev/null +++ b/templates/oam/workloads/v0.8.4/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,264 @@ +{ + "properties": { + "certificate": { + "description": "Configuration for certificate management", + "properties": { + "certKeyBitSize": { + "description": "Sets the certificate key bit size for data plane certificates.", + "type": "integer" + }, + "ingressGateway": { + "description": "Configuration for the ingress gateway's certificate", + "properties": { + "secret": { + "description": "Secret reference to store the certificate in", + "properties": { + "name": { + "description": "Name of the secret", + "type": "string" + }, + "namespace": { + "description": "Namespace of the secret", + "type": "string" + } + }, + "required": [ + "name", + "namespace" + ], + "type": "object" + }, + "subjectAltNames": { + "description": "Subject Alternative Names secured by the certificate", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "validityDuration": { + "description": "Certificate validity duration, represented as a sequence of decimal numbers each with optional fraction and a unit suffix", + "type": "string" + } + }, + "required": [ + "subjectAltNames", + "validityDuration", + "secret" + ], + "type": "object" + }, + "serviceCertValidityDuration": { + "description": "Sets the service certificate validity duration, represented as a sequence of decimal numbers each with optional fraction and a unit suffix.", + "type": "string" + } + }, + "required": [ + "serviceCertValidityDuration", + "certKeyBitSize" + ], + "type": "object" + }, + "featureFlags": { + "description": "OSM feature flags", + "properties": { + "enableAsyncProxyServiceMapping": { + "type": "boolean" + }, + "enableEgressPolicy": { + "type": "boolean" + }, + "enableEnvoyActiveHealthChecks": { + "type": "boolean" + }, + "enableIngressBackendPolicy": { + "type": "boolean" + }, + "enableMulticlusterMode": { + "type": "boolean" + }, + "enableRetryPolicy": { + "type": "boolean" + }, + "enableSnapshotCacheMode": { + "type": "boolean" + }, + "enableWASMStats": { + "type": "boolean" + } + }, + "type": "object" + }, + "observability": { + "description": "Configuration for observing the service mesh, including metrics, logs, tracing etc,.", + "properties": { + "enableDebugServer": { + "description": "Enables a debug endpoint on the osm-controller pod to list information regarding the mesh such as proxy connections, certificates, and SMI policies.", + "type": "boolean" + }, + "osmLogLevel": { + "description": "Allows setting OSM control plane log level at runtime", + "type": "string" + }, + "tracing": { + "description": "Configuration for distributed tracing", + "properties": { + "address": { + "description": "Address of Jaeger tracing deployment, if tracing is enabled.", + "type": "string" + }, + "enable": { + "description": "Enables Jaeger tracing for the mesh.", + "type": "boolean" + }, + "endpoint": { + "description": "Endpoint for tracing data, if tracing is enabled.", + "type": "string" + }, + "port": { + "description": "Port on which tracing is enabled.", + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "sidecar": { + "description": "Configuration for Envoy sidecar", + "properties": { + "configResyncInterval": { + "description": "Resync interval for regular proxy broadcast updates", + "type": "string" + }, + "enablePrivilegedInitContainer": { + "description": "Enables privileged init containers for pods in mesh. When false, init containers only have NET_ADMIN.", + "type": "boolean" + }, + "envoyImage": { + "description": "Image for the Envoy sidecar", + "type": "string" + }, + "envoyWindowsImage": { + "description": "Image for the Envoy sidecar on Windows workers", + "type": "string" + }, + "initContainerImage": { + "description": "Image for the init container", + "type": "string" + }, + "logLevel": { + "description": "Sets the logging verbosity of Envoy proxy sidecar, only applicable to newly created pods joining the mesh.", + "enum": [ + "trace", + "debug", + "info", + "warning", + "warn", + "error", + "critical", + "off" + ], + "type": "string" + }, + "maxDataPlaneConnections": { + "description": "Max allowed data plane sidecar connections", + "type": "integer" + }, + "resources": { + "properties": { + "limits": { + "additionalProperties": true, + "description": "Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/", + "type": "object" + }, + "requests": { + "additionalProperties": true, + "description": "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/", + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "traffic": { + "description": "Configuration for traffic management", + "properties": { + "enableEgress": { + "description": "Enables egress in the mesh", + "type": "boolean" + }, + "enablePermissiveTrafficPolicyMode": { + "description": "True for allowing traffic to flow between client and service pods within the mesh without SMI traffic policies, i.e. no traffic policy enforcement in the mesh. If set to false, enables deny-all traffic policy in mesh i.e. an SMI Traffic Target is necessary for services to communicate.", + "type": "boolean" + }, + "inboundExternalAuthorization": { + "description": "Configures external authorization for inbound and ingress connections.", + "properties": { + "address": { + "description": "Target destination endpoint that will handle external authorization.", + "type": "string" + }, + "enable": { + "description": "Enables/disables the inbound external authorization policy if present.", + "type": "boolean" + }, + "failureModeAllow": { + "description": "Allows specifying if traffic should succeed or fail if the external authorization endpoint fails to respond.", + "type": "boolean" + }, + "port": { + "description": "Remote destination port for the external authorization endpoint.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "statPrefix": { + "default": "inboundExtAuthz", + "description": "String prefix for inbound external authorization related metrics.", + "type": "string" + }, + "timeout": { + "default": "1s", + "description": "Defines the timeout to consider for the remote endpoint to reply in time.", + "type": "string" + } + }, + "type": "object" + }, + "inboundPortExclusionList": { + "description": "Global list of ports to exclude from inbound traffic interception by the sidecar proxy.", + "items": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "type": "array" + }, + "outboundIPRangeExclusionList": { + "description": "Global list of IP address ranges to exclude from outbound traffic interception by the sidecar proxy.", + "items": { + "pattern": "((?:\\d{1,3}\\.){3}\\d{1,3})\\/(\\d{1,2})$", + "type": "string" + }, + "type": "array" + }, + "outboundPortExclusionList": { + "description": "Global list of ports to exclude from outbound traffic interception by the sidecar proxy.", + "items": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "title": "Mesh Config", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.4/meshconfig.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.8.4/meshconfig.meshery.layer5.io_definition.json new file mode 100755 index 00000000..715ba447 --- /dev/null +++ b/templates/oam/workloads/v0.8.4/meshconfig.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "MeshConfig", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "meshconfig.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.openservicemesh.io/v1alpha1", + "k8sKind": "MeshConfig", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.8.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.4/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.8.4/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..60d4f7dd --- /dev/null +++ b/templates/oam/workloads/v0.8.4/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "properties": { + "clusters": { + "description": "The clusters the service accounts are hosted on.", + "items": { + "properties": { + "address": { + "description": "a routable IP + port", + "pattern": "^(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3}):[0-9]+$", + "type": "string" + }, + "certificate": { + "description": "mTLS certificates (optional)", + "type": "string" + }, + "name": { + "description": "Name of the remote cluster", + "type": "string" + }, + "priority": { + "description": "Priority of the remote cluster in locality based load balancing", + "minimum": 0, + "type": "integer" + }, + "weight": { + "default": 0, + "description": "Load balancing weight of the remote cluster", + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "address", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "ports": { + "description": "The list of ports that are exposed by this service.", + "items": { + "properties": { + "port": { + "description": "The port that will be exposed by this service.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "default": "TCP", + "description": "The IP protocol for this port. Supports \"TCP\", \"UDP\", and \"SCTP\". Default is TCP.", + "enum": [ + "TCP", + "UDP", + "SCTP" + ], + "type": "string" + } + }, + "required": [ + "port", + "protocol" + ], + "type": "object" + }, + "type": "array" + }, + "serviceAccount": { + "type": "string" + } + }, + "required": [ + "serviceAccount", + "clusters" + ], + "title": "Multi Cluster Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.4/multiclusterservice.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.8.4/multiclusterservice.meshery.layer5.io_definition.json new file mode 100755 index 00000000..3c8c08bf --- /dev/null +++ b/templates/oam/workloads/v0.8.4/multiclusterservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "MultiClusterService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "multiclusterservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.openservicemesh.io/v1alpha1", + "k8sKind": "MultiClusterService", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.8.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.4/tcproute.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.8.4/tcproute.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..d0cc9bfe --- /dev/null +++ b/templates/oam/workloads/v0.8.4/tcproute.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,25 @@ +{ + "properties": { + "matches": { + "description": "Match conditions of this route.", + "properties": { + "ports": { + "description": "Port numbers to match TCP traffic.", + "items": { + "type": "integer" + }, + "type": "array" + } + }, + "required": [ + "ports" + ], + "type": "object" + } + }, + "required": [ + "matches" + ], + "title": "TCP Route", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.4/tcproute.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.8.4/tcproute.meshery.layer5.io_definition.json new file mode 100755 index 00000000..0a0ac5b7 --- /dev/null +++ b/templates/oam/workloads/v0.8.4/tcproute.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TCPRoute", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "tcproute.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "specs.smi-spec.io/v1alpha4", + "k8sKind": "TCPRoute", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.8.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.4/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.8.4/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..13f0a9a2 --- /dev/null +++ b/templates/oam/workloads/v0.8.4/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,59 @@ +{ + "properties": { + "backends": { + "description": "The backend services of this split.", + "items": { + "properties": { + "service": { + "description": "Name of the Kubernetes service.", + "type": "string" + }, + "weight": { + "description": "Traffic weight value of this backend.", + "type": "number" + } + }, + "required": [ + "service", + "weight" + ], + "type": "object" + }, + "type": "array" + }, + "matches": { + "description": "The HTTP route groups that this traffic split should match.", + "items": { + "properties": { + "kind": { + "description": "Kind of the matching group.", + "enum": [ + "HTTPRouteGroup" + ], + "type": "string" + }, + "name": { + "description": "Name of the matching group.", + "type": "string" + } + }, + "required": [ + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "service": { + "description": "The apex service of this split.", + "type": "string" + } + }, + "required": [ + "service", + "backends" + ], + "title": "Traffic Split", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.4/trafficsplit.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.8.4/trafficsplit.meshery.layer5.io_definition.json new file mode 100755 index 00000000..cddadfbf --- /dev/null +++ b/templates/oam/workloads/v0.8.4/trafficsplit.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TrafficSplit", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "trafficsplit.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "split.smi-spec.io/v1alpha4", + "k8sKind": "TrafficSplit", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.8.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.4/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.8.4/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..83a24559 --- /dev/null +++ b/templates/oam/workloads/v0.8.4/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,91 @@ +{ + "properties": { + "destination": { + "description": "The destination of this traffic target.", + "properties": { + "kind": { + "description": "Kind of the destination.", + "type": "string" + }, + "name": { + "description": "Name of the destination.", + "type": "string" + }, + "namespace": { + "description": "Namespace of the destination.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "rules": { + "description": "Specifications of this traffic target.", + "items": { + "properties": { + "kind": { + "description": "Kind of this spec.", + "enum": [ + "HTTPRouteGroup", + "TCPRoute", + "UDPRoute" + ], + "type": "string" + }, + "matches": { + "description": "Match conditions of this spec.", + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "Name of this spec.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources of this traffic target.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "destination", + "rules", + "sources" + ], + "title": "Traffic Target", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.8.4/traffictarget.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.8.4/traffictarget.meshery.layer5.io_definition.json new file mode 100755 index 00000000..1db95881 --- /dev/null +++ b/templates/oam/workloads/v0.8.4/traffictarget.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TrafficTarget", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "traffictarget.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "access.smi-spec.io/v1alpha3", + "k8sKind": "TrafficTarget", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.8.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.9.0-rc.1/egress.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.9.0-rc.1/egress.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..c77de28d --- /dev/null +++ b/templates/oam/workloads/v0.9.0-rc.1/egress.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,103 @@ +{ + "properties": { + "hosts": { + "description": "Hosts that the sources are allowed to direct external traffic to.", + "items": { + "type": "string" + }, + "type": "array" + }, + "ipAddresses": { + "description": "IP address ranges that the sources are allowed to direct external traffic to.", + "items": { + "pattern": "((?:\\d{1,3}\\.){3}\\d{1,3})\\/(\\d{1,2})$", + "type": "string" + }, + "type": "array" + }, + "matches": { + "description": "The resource references an Egress policy should match on.", + "items": { + "properties": { + "apiGroup": { + "description": "API group for the resource being referenced.", + "type": "string" + }, + "kind": { + "description": "Type of resource being referenced.", + "type": "string" + }, + "name": { + "description": "Name of resource being referenced.", + "type": "string" + } + }, + "required": [ + "apiGroup", + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "ports": { + "description": "Ports that the sources are allowed to direct external traffic to.", + "items": { + "properties": { + "number": { + "description": "Port number of this port.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "description": "Protocol served by this port.", + "type": "string" + } + }, + "required": [ + "number", + "protocol" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources the egress policy is applicable to.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "enum": [ + "ServiceAccount" + ], + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "kind", + "name", + "namespace" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "sources", + "ports" + ], + "title": "Egress", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.9.0-rc.1/egress.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.9.0-rc.1/egress.meshery.layer5.io_definition.json new file mode 100755 index 00000000..35cef252 --- /dev/null +++ b/templates/oam/workloads/v0.9.0-rc.1/egress.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Egress", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "egress.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "policy.openservicemesh.io/v1alpha1", + "k8sKind": "Egress", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.9.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.9.0-rc.1/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.9.0-rc.1/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..6951d46c --- /dev/null +++ b/templates/oam/workloads/v0.9.0-rc.1/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,60 @@ +{ + "properties": { + "matches": { + "description": "Match conditions of this route group.", + "items": { + "properties": { + "headers": { + "description": "Header match conditions of this route.", + "items": { + "additionalProperties": { + "type": "string" + }, + "description": "Header match condition of this route.", + "type": "object" + }, + "type": "array" + }, + "methods": { + "description": "The HTTP methods of this HTTP route.", + "items": { + "description": "The HTTP method of this HTTP route.", + "enum": [ + "*", + "GET", + "HEAD", + "PUT", + "POST", + "DELETE", + "CONNECT", + "OPTIONS", + "TRACE", + "PATCH" + ], + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "Name of the HTTP route.", + "type": "string" + }, + "pathRegex": { + "description": "URI path regex of the HTTP route.", + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "matches" + ], + "title": "HTTP Route Group", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.9.0-rc.1/httproutegroup.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.9.0-rc.1/httproutegroup.meshery.layer5.io_definition.json new file mode 100755 index 00000000..e7aa9f3a --- /dev/null +++ b/templates/oam/workloads/v0.9.0-rc.1/httproutegroup.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPRouteGroup", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httproutegroup.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "specs.smi-spec.io/v1alpha4", + "k8sKind": "HTTPRouteGroup", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.9.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.9.0-rc.1/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.9.0-rc.1/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..f5535897 --- /dev/null +++ b/templates/oam/workloads/v0.9.0-rc.1/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,118 @@ +{ + "properties": { + "backends": { + "description": "Backends the IngressBackend policy is applicable to.", + "items": { + "properties": { + "name": { + "description": "Name of the backend.", + "type": "string" + }, + "port": { + "description": "Port of the backend.", + "properties": { + "number": { + "description": "Port number of this port.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "description": "Protocol served by this port.", + "type": "string" + } + }, + "required": [ + "number", + "protocol" + ], + "type": "object" + }, + "tls": { + "description": "TLS configuration for the backend.", + "properties": { + "skipClientCertValidation": { + "description": "Skip client certificate validation.", + "type": "boolean" + }, + "sniHosts": { + "description": "SNI hosts allowed by the backend.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "skipClientCertValidation" + ], + "type": "object" + } + }, + "required": [ + "name", + "port" + ], + "type": "object" + }, + "type": "array" + }, + "matches": { + "description": "The resource references an IngressBackend policy should match on.", + "items": { + "properties": { + "apiGroup": { + "description": "API group for the resource being referenced.", + "type": "string" + }, + "kind": { + "description": "Type of resource being referenced.", + "type": "string" + }, + "name": { + "description": "Name of resource being referenced.", + "type": "string" + } + }, + "required": [ + "apiGroup", + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources the IngressBackend policy is applicable to.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "backends", + "sources" + ], + "title": "Ingress Backend", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.9.0-rc.1/ingressbackend.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.9.0-rc.1/ingressbackend.meshery.layer5.io_definition.json new file mode 100755 index 00000000..0ba4762d --- /dev/null +++ b/templates/oam/workloads/v0.9.0-rc.1/ingressbackend.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "IngressBackend", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "ingressbackend.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "policy.openservicemesh.io/v1alpha1", + "k8sKind": "IngressBackend", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.9.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.9.0-rc.1/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.9.0-rc.1/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..b607634a --- /dev/null +++ b/templates/oam/workloads/v0.9.0-rc.1/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,264 @@ +{ + "properties": { + "certificate": { + "description": "Configuration for certificate management", + "properties": { + "certKeyBitSize": { + "description": "Sets the certificate key bit size for data plane certificates.", + "type": "integer" + }, + "ingressGateway": { + "description": "Configuration for the ingress gateway's certificate", + "properties": { + "secret": { + "description": "Secret reference to store the certificate in", + "properties": { + "name": { + "description": "Name of the secret", + "type": "string" + }, + "namespace": { + "description": "Namespace of the secret", + "type": "string" + } + }, + "required": [ + "name", + "namespace" + ], + "type": "object" + }, + "subjectAltNames": { + "description": "Subject Alternative Names secured by the certificate", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "validityDuration": { + "description": "Certificate validity duration, represented as a sequence of decimal numbers each with optional fraction and a unit suffix", + "type": "string" + } + }, + "required": [ + "subjectAltNames", + "validityDuration", + "secret" + ], + "type": "object" + }, + "serviceCertValidityDuration": { + "description": "Sets the service certificate validity duration, represented as a sequence of decimal numbers each with optional fraction and a unit suffix.", + "type": "string" + } + }, + "required": [ + "serviceCertValidityDuration", + "certKeyBitSize" + ], + "type": "object" + }, + "featureFlags": { + "description": "OSM feature flags", + "properties": { + "enableAsyncProxyServiceMapping": { + "type": "boolean" + }, + "enableEgressPolicy": { + "type": "boolean" + }, + "enableEnvoyActiveHealthChecks": { + "type": "boolean" + }, + "enableIngressBackendPolicy": { + "type": "boolean" + }, + "enableMulticlusterMode": { + "type": "boolean" + }, + "enableRetryPolicy": { + "type": "boolean" + }, + "enableSnapshotCacheMode": { + "type": "boolean" + }, + "enableWASMStats": { + "type": "boolean" + } + }, + "type": "object" + }, + "observability": { + "description": "Configuration for observing the service mesh, including metrics, logs, tracing etc,.", + "properties": { + "enableDebugServer": { + "description": "Enables a debug endpoint on the osm-controller pod to list information regarding the mesh such as proxy connections, certificates, and SMI policies.", + "type": "boolean" + }, + "osmLogLevel": { + "description": "Allows setting OSM control plane log level at runtime", + "type": "string" + }, + "tracing": { + "description": "Configuration for distributed tracing", + "properties": { + "address": { + "description": "Address of Jaeger tracing deployment, if tracing is enabled.", + "type": "string" + }, + "enable": { + "description": "Enables Jaeger tracing for the mesh.", + "type": "boolean" + }, + "endpoint": { + "description": "Endpoint for tracing data, if tracing is enabled.", + "type": "string" + }, + "port": { + "description": "Port on which tracing is enabled.", + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "sidecar": { + "description": "Configuration for Envoy sidecar", + "properties": { + "configResyncInterval": { + "description": "Resync interval for regular proxy broadcast updates", + "type": "string" + }, + "enablePrivilegedInitContainer": { + "description": "Enables privileged init containers for pods in mesh. When false, init containers only have NET_ADMIN.", + "type": "boolean" + }, + "envoyImage": { + "description": "Image for the Envoy sidecar", + "type": "string" + }, + "envoyWindowsImage": { + "description": "Image for the Envoy sidecar on Windows workers", + "type": "string" + }, + "initContainerImage": { + "description": "Image for the init container", + "type": "string" + }, + "logLevel": { + "description": "Sets the logging verbosity of Envoy proxy sidecar, only applicable to newly created pods joining the mesh.", + "enum": [ + "trace", + "debug", + "info", + "warning", + "warn", + "error", + "critical", + "off" + ], + "type": "string" + }, + "maxDataPlaneConnections": { + "description": "Max allowed data plane sidecar connections", + "type": "integer" + }, + "resources": { + "properties": { + "limits": { + "additionalProperties": true, + "description": "Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/", + "type": "object" + }, + "requests": { + "additionalProperties": true, + "description": "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/", + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "traffic": { + "description": "Configuration for traffic management", + "properties": { + "enableEgress": { + "description": "Enables egress in the mesh", + "type": "boolean" + }, + "enablePermissiveTrafficPolicyMode": { + "description": "True for allowing traffic to flow between client and service pods within the mesh without SMI traffic policies, i.e. no traffic policy enforcement in the mesh. If set to false, enables deny-all traffic policy in mesh i.e. an SMI Traffic Target is necessary for services to communicate.", + "type": "boolean" + }, + "inboundExternalAuthorization": { + "description": "Configures external authorization for inbound and ingress connections.", + "properties": { + "address": { + "description": "Target destination endpoint that will handle external authorization.", + "type": "string" + }, + "enable": { + "description": "Enables/disables the inbound external authorization policy if present.", + "type": "boolean" + }, + "failureModeAllow": { + "description": "Allows specifying if traffic should succeed or fail if the external authorization endpoint fails to respond.", + "type": "boolean" + }, + "port": { + "description": "Remote destination port for the external authorization endpoint.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "statPrefix": { + "default": "inboundExtAuthz", + "description": "String prefix for inbound external authorization related metrics.", + "type": "string" + }, + "timeout": { + "default": "1s", + "description": "Defines the timeout to consider for the remote endpoint to reply in time.", + "type": "string" + } + }, + "type": "object" + }, + "inboundPortExclusionList": { + "description": "Global list of ports to exclude from inbound traffic interception by the sidecar proxy.", + "items": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "type": "array" + }, + "outboundIPRangeExclusionList": { + "description": "Global list of IP address ranges to exclude from outbound traffic interception by the sidecar proxy.", + "items": { + "pattern": "((?:\\d{1,3}\\.){3}\\d{1,3})\\/(\\d{1,2})$", + "type": "string" + }, + "type": "array" + }, + "outboundPortExclusionList": { + "description": "Global list of ports to exclude from outbound traffic interception by the sidecar proxy.", + "items": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "title": "Mesh Config", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.9.0-rc.1/meshconfig.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.9.0-rc.1/meshconfig.meshery.layer5.io_definition.json new file mode 100755 index 00000000..0ad7ca16 --- /dev/null +++ b/templates/oam/workloads/v0.9.0-rc.1/meshconfig.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "MeshConfig", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "meshconfig.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.openservicemesh.io/v1alpha1", + "k8sKind": "MeshConfig", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.9.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.9.0-rc.1/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.9.0-rc.1/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..60d4f7dd --- /dev/null +++ b/templates/oam/workloads/v0.9.0-rc.1/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "properties": { + "clusters": { + "description": "The clusters the service accounts are hosted on.", + "items": { + "properties": { + "address": { + "description": "a routable IP + port", + "pattern": "^(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3}):[0-9]+$", + "type": "string" + }, + "certificate": { + "description": "mTLS certificates (optional)", + "type": "string" + }, + "name": { + "description": "Name of the remote cluster", + "type": "string" + }, + "priority": { + "description": "Priority of the remote cluster in locality based load balancing", + "minimum": 0, + "type": "integer" + }, + "weight": { + "default": 0, + "description": "Load balancing weight of the remote cluster", + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "address", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "ports": { + "description": "The list of ports that are exposed by this service.", + "items": { + "properties": { + "port": { + "description": "The port that will be exposed by this service.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "default": "TCP", + "description": "The IP protocol for this port. Supports \"TCP\", \"UDP\", and \"SCTP\". Default is TCP.", + "enum": [ + "TCP", + "UDP", + "SCTP" + ], + "type": "string" + } + }, + "required": [ + "port", + "protocol" + ], + "type": "object" + }, + "type": "array" + }, + "serviceAccount": { + "type": "string" + } + }, + "required": [ + "serviceAccount", + "clusters" + ], + "title": "Multi Cluster Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.9.0-rc.1/multiclusterservice.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.9.0-rc.1/multiclusterservice.meshery.layer5.io_definition.json new file mode 100755 index 00000000..1d4207d9 --- /dev/null +++ b/templates/oam/workloads/v0.9.0-rc.1/multiclusterservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "MultiClusterService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "multiclusterservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.openservicemesh.io/v1alpha1", + "k8sKind": "MultiClusterService", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.9.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.9.0-rc.1/tcproute.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.9.0-rc.1/tcproute.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..d0cc9bfe --- /dev/null +++ b/templates/oam/workloads/v0.9.0-rc.1/tcproute.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,25 @@ +{ + "properties": { + "matches": { + "description": "Match conditions of this route.", + "properties": { + "ports": { + "description": "Port numbers to match TCP traffic.", + "items": { + "type": "integer" + }, + "type": "array" + } + }, + "required": [ + "ports" + ], + "type": "object" + } + }, + "required": [ + "matches" + ], + "title": "TCP Route", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.9.0-rc.1/tcproute.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.9.0-rc.1/tcproute.meshery.layer5.io_definition.json new file mode 100755 index 00000000..eff21d4b --- /dev/null +++ b/templates/oam/workloads/v0.9.0-rc.1/tcproute.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TCPRoute", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "tcproute.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "specs.smi-spec.io/v1alpha4", + "k8sKind": "TCPRoute", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.9.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.9.0-rc.1/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.9.0-rc.1/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..13f0a9a2 --- /dev/null +++ b/templates/oam/workloads/v0.9.0-rc.1/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,59 @@ +{ + "properties": { + "backends": { + "description": "The backend services of this split.", + "items": { + "properties": { + "service": { + "description": "Name of the Kubernetes service.", + "type": "string" + }, + "weight": { + "description": "Traffic weight value of this backend.", + "type": "number" + } + }, + "required": [ + "service", + "weight" + ], + "type": "object" + }, + "type": "array" + }, + "matches": { + "description": "The HTTP route groups that this traffic split should match.", + "items": { + "properties": { + "kind": { + "description": "Kind of the matching group.", + "enum": [ + "HTTPRouteGroup" + ], + "type": "string" + }, + "name": { + "description": "Name of the matching group.", + "type": "string" + } + }, + "required": [ + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "service": { + "description": "The apex service of this split.", + "type": "string" + } + }, + "required": [ + "service", + "backends" + ], + "title": "Traffic Split", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.9.0-rc.1/trafficsplit.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.9.0-rc.1/trafficsplit.meshery.layer5.io_definition.json new file mode 100755 index 00000000..df4942a6 --- /dev/null +++ b/templates/oam/workloads/v0.9.0-rc.1/trafficsplit.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TrafficSplit", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "trafficsplit.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "split.smi-spec.io/v1alpha4", + "k8sKind": "TrafficSplit", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.9.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.9.0-rc.1/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.9.0-rc.1/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..83a24559 --- /dev/null +++ b/templates/oam/workloads/v0.9.0-rc.1/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,91 @@ +{ + "properties": { + "destination": { + "description": "The destination of this traffic target.", + "properties": { + "kind": { + "description": "Kind of the destination.", + "type": "string" + }, + "name": { + "description": "Name of the destination.", + "type": "string" + }, + "namespace": { + "description": "Namespace of the destination.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "rules": { + "description": "Specifications of this traffic target.", + "items": { + "properties": { + "kind": { + "description": "Kind of this spec.", + "enum": [ + "HTTPRouteGroup", + "TCPRoute", + "UDPRoute" + ], + "type": "string" + }, + "matches": { + "description": "Match conditions of this spec.", + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "Name of this spec.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources of this traffic target.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "destination", + "rules", + "sources" + ], + "title": "Traffic Target", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.9.0-rc.1/traffictarget.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.9.0-rc.1/traffictarget.meshery.layer5.io_definition.json new file mode 100755 index 00000000..94efaadf --- /dev/null +++ b/templates/oam/workloads/v0.9.0-rc.1/traffictarget.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TrafficTarget", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "traffictarget.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "access.smi-spec.io/v1alpha3", + "k8sKind": "TrafficTarget", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.9.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.9.0-rc.2/egress.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.9.0-rc.2/egress.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..c77de28d --- /dev/null +++ b/templates/oam/workloads/v0.9.0-rc.2/egress.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,103 @@ +{ + "properties": { + "hosts": { + "description": "Hosts that the sources are allowed to direct external traffic to.", + "items": { + "type": "string" + }, + "type": "array" + }, + "ipAddresses": { + "description": "IP address ranges that the sources are allowed to direct external traffic to.", + "items": { + "pattern": "((?:\\d{1,3}\\.){3}\\d{1,3})\\/(\\d{1,2})$", + "type": "string" + }, + "type": "array" + }, + "matches": { + "description": "The resource references an Egress policy should match on.", + "items": { + "properties": { + "apiGroup": { + "description": "API group for the resource being referenced.", + "type": "string" + }, + "kind": { + "description": "Type of resource being referenced.", + "type": "string" + }, + "name": { + "description": "Name of resource being referenced.", + "type": "string" + } + }, + "required": [ + "apiGroup", + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "ports": { + "description": "Ports that the sources are allowed to direct external traffic to.", + "items": { + "properties": { + "number": { + "description": "Port number of this port.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "description": "Protocol served by this port.", + "type": "string" + } + }, + "required": [ + "number", + "protocol" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources the egress policy is applicable to.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "enum": [ + "ServiceAccount" + ], + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "kind", + "name", + "namespace" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "sources", + "ports" + ], + "title": "Egress", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.9.0-rc.2/egress.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.9.0-rc.2/egress.meshery.layer5.io_definition.json new file mode 100755 index 00000000..cb6bc039 --- /dev/null +++ b/templates/oam/workloads/v0.9.0-rc.2/egress.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Egress", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "egress.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "policy.openservicemesh.io/v1alpha1", + "k8sKind": "Egress", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.9.0-rc.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.9.0-rc.2/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.9.0-rc.2/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..6951d46c --- /dev/null +++ b/templates/oam/workloads/v0.9.0-rc.2/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,60 @@ +{ + "properties": { + "matches": { + "description": "Match conditions of this route group.", + "items": { + "properties": { + "headers": { + "description": "Header match conditions of this route.", + "items": { + "additionalProperties": { + "type": "string" + }, + "description": "Header match condition of this route.", + "type": "object" + }, + "type": "array" + }, + "methods": { + "description": "The HTTP methods of this HTTP route.", + "items": { + "description": "The HTTP method of this HTTP route.", + "enum": [ + "*", + "GET", + "HEAD", + "PUT", + "POST", + "DELETE", + "CONNECT", + "OPTIONS", + "TRACE", + "PATCH" + ], + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "Name of the HTTP route.", + "type": "string" + }, + "pathRegex": { + "description": "URI path regex of the HTTP route.", + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "matches" + ], + "title": "HTTP Route Group", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.9.0-rc.2/httproutegroup.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.9.0-rc.2/httproutegroup.meshery.layer5.io_definition.json new file mode 100755 index 00000000..f3b174ce --- /dev/null +++ b/templates/oam/workloads/v0.9.0-rc.2/httproutegroup.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPRouteGroup", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httproutegroup.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "specs.smi-spec.io/v1alpha4", + "k8sKind": "HTTPRouteGroup", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.9.0-rc.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.9.0-rc.2/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.9.0-rc.2/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..f5535897 --- /dev/null +++ b/templates/oam/workloads/v0.9.0-rc.2/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,118 @@ +{ + "properties": { + "backends": { + "description": "Backends the IngressBackend policy is applicable to.", + "items": { + "properties": { + "name": { + "description": "Name of the backend.", + "type": "string" + }, + "port": { + "description": "Port of the backend.", + "properties": { + "number": { + "description": "Port number of this port.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "description": "Protocol served by this port.", + "type": "string" + } + }, + "required": [ + "number", + "protocol" + ], + "type": "object" + }, + "tls": { + "description": "TLS configuration for the backend.", + "properties": { + "skipClientCertValidation": { + "description": "Skip client certificate validation.", + "type": "boolean" + }, + "sniHosts": { + "description": "SNI hosts allowed by the backend.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "skipClientCertValidation" + ], + "type": "object" + } + }, + "required": [ + "name", + "port" + ], + "type": "object" + }, + "type": "array" + }, + "matches": { + "description": "The resource references an IngressBackend policy should match on.", + "items": { + "properties": { + "apiGroup": { + "description": "API group for the resource being referenced.", + "type": "string" + }, + "kind": { + "description": "Type of resource being referenced.", + "type": "string" + }, + "name": { + "description": "Name of resource being referenced.", + "type": "string" + } + }, + "required": [ + "apiGroup", + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources the IngressBackend policy is applicable to.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "backends", + "sources" + ], + "title": "Ingress Backend", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.9.0-rc.2/ingressbackend.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.9.0-rc.2/ingressbackend.meshery.layer5.io_definition.json new file mode 100755 index 00000000..c4a24966 --- /dev/null +++ b/templates/oam/workloads/v0.9.0-rc.2/ingressbackend.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "IngressBackend", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "ingressbackend.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "policy.openservicemesh.io/v1alpha1", + "k8sKind": "IngressBackend", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.9.0-rc.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.9.0-rc.2/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.9.0-rc.2/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..b607634a --- /dev/null +++ b/templates/oam/workloads/v0.9.0-rc.2/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,264 @@ +{ + "properties": { + "certificate": { + "description": "Configuration for certificate management", + "properties": { + "certKeyBitSize": { + "description": "Sets the certificate key bit size for data plane certificates.", + "type": "integer" + }, + "ingressGateway": { + "description": "Configuration for the ingress gateway's certificate", + "properties": { + "secret": { + "description": "Secret reference to store the certificate in", + "properties": { + "name": { + "description": "Name of the secret", + "type": "string" + }, + "namespace": { + "description": "Namespace of the secret", + "type": "string" + } + }, + "required": [ + "name", + "namespace" + ], + "type": "object" + }, + "subjectAltNames": { + "description": "Subject Alternative Names secured by the certificate", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "validityDuration": { + "description": "Certificate validity duration, represented as a sequence of decimal numbers each with optional fraction and a unit suffix", + "type": "string" + } + }, + "required": [ + "subjectAltNames", + "validityDuration", + "secret" + ], + "type": "object" + }, + "serviceCertValidityDuration": { + "description": "Sets the service certificate validity duration, represented as a sequence of decimal numbers each with optional fraction and a unit suffix.", + "type": "string" + } + }, + "required": [ + "serviceCertValidityDuration", + "certKeyBitSize" + ], + "type": "object" + }, + "featureFlags": { + "description": "OSM feature flags", + "properties": { + "enableAsyncProxyServiceMapping": { + "type": "boolean" + }, + "enableEgressPolicy": { + "type": "boolean" + }, + "enableEnvoyActiveHealthChecks": { + "type": "boolean" + }, + "enableIngressBackendPolicy": { + "type": "boolean" + }, + "enableMulticlusterMode": { + "type": "boolean" + }, + "enableRetryPolicy": { + "type": "boolean" + }, + "enableSnapshotCacheMode": { + "type": "boolean" + }, + "enableWASMStats": { + "type": "boolean" + } + }, + "type": "object" + }, + "observability": { + "description": "Configuration for observing the service mesh, including metrics, logs, tracing etc,.", + "properties": { + "enableDebugServer": { + "description": "Enables a debug endpoint on the osm-controller pod to list information regarding the mesh such as proxy connections, certificates, and SMI policies.", + "type": "boolean" + }, + "osmLogLevel": { + "description": "Allows setting OSM control plane log level at runtime", + "type": "string" + }, + "tracing": { + "description": "Configuration for distributed tracing", + "properties": { + "address": { + "description": "Address of Jaeger tracing deployment, if tracing is enabled.", + "type": "string" + }, + "enable": { + "description": "Enables Jaeger tracing for the mesh.", + "type": "boolean" + }, + "endpoint": { + "description": "Endpoint for tracing data, if tracing is enabled.", + "type": "string" + }, + "port": { + "description": "Port on which tracing is enabled.", + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "sidecar": { + "description": "Configuration for Envoy sidecar", + "properties": { + "configResyncInterval": { + "description": "Resync interval for regular proxy broadcast updates", + "type": "string" + }, + "enablePrivilegedInitContainer": { + "description": "Enables privileged init containers for pods in mesh. When false, init containers only have NET_ADMIN.", + "type": "boolean" + }, + "envoyImage": { + "description": "Image for the Envoy sidecar", + "type": "string" + }, + "envoyWindowsImage": { + "description": "Image for the Envoy sidecar on Windows workers", + "type": "string" + }, + "initContainerImage": { + "description": "Image for the init container", + "type": "string" + }, + "logLevel": { + "description": "Sets the logging verbosity of Envoy proxy sidecar, only applicable to newly created pods joining the mesh.", + "enum": [ + "trace", + "debug", + "info", + "warning", + "warn", + "error", + "critical", + "off" + ], + "type": "string" + }, + "maxDataPlaneConnections": { + "description": "Max allowed data plane sidecar connections", + "type": "integer" + }, + "resources": { + "properties": { + "limits": { + "additionalProperties": true, + "description": "Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/", + "type": "object" + }, + "requests": { + "additionalProperties": true, + "description": "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/", + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "traffic": { + "description": "Configuration for traffic management", + "properties": { + "enableEgress": { + "description": "Enables egress in the mesh", + "type": "boolean" + }, + "enablePermissiveTrafficPolicyMode": { + "description": "True for allowing traffic to flow between client and service pods within the mesh without SMI traffic policies, i.e. no traffic policy enforcement in the mesh. If set to false, enables deny-all traffic policy in mesh i.e. an SMI Traffic Target is necessary for services to communicate.", + "type": "boolean" + }, + "inboundExternalAuthorization": { + "description": "Configures external authorization for inbound and ingress connections.", + "properties": { + "address": { + "description": "Target destination endpoint that will handle external authorization.", + "type": "string" + }, + "enable": { + "description": "Enables/disables the inbound external authorization policy if present.", + "type": "boolean" + }, + "failureModeAllow": { + "description": "Allows specifying if traffic should succeed or fail if the external authorization endpoint fails to respond.", + "type": "boolean" + }, + "port": { + "description": "Remote destination port for the external authorization endpoint.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "statPrefix": { + "default": "inboundExtAuthz", + "description": "String prefix for inbound external authorization related metrics.", + "type": "string" + }, + "timeout": { + "default": "1s", + "description": "Defines the timeout to consider for the remote endpoint to reply in time.", + "type": "string" + } + }, + "type": "object" + }, + "inboundPortExclusionList": { + "description": "Global list of ports to exclude from inbound traffic interception by the sidecar proxy.", + "items": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "type": "array" + }, + "outboundIPRangeExclusionList": { + "description": "Global list of IP address ranges to exclude from outbound traffic interception by the sidecar proxy.", + "items": { + "pattern": "((?:\\d{1,3}\\.){3}\\d{1,3})\\/(\\d{1,2})$", + "type": "string" + }, + "type": "array" + }, + "outboundPortExclusionList": { + "description": "Global list of ports to exclude from outbound traffic interception by the sidecar proxy.", + "items": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "title": "Mesh Config", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.9.0-rc.2/meshconfig.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.9.0-rc.2/meshconfig.meshery.layer5.io_definition.json new file mode 100755 index 00000000..64e771be --- /dev/null +++ b/templates/oam/workloads/v0.9.0-rc.2/meshconfig.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "MeshConfig", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "meshconfig.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.openservicemesh.io/v1alpha1", + "k8sKind": "MeshConfig", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.9.0-rc.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.9.0-rc.2/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.9.0-rc.2/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..60d4f7dd --- /dev/null +++ b/templates/oam/workloads/v0.9.0-rc.2/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "properties": { + "clusters": { + "description": "The clusters the service accounts are hosted on.", + "items": { + "properties": { + "address": { + "description": "a routable IP + port", + "pattern": "^(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3}):[0-9]+$", + "type": "string" + }, + "certificate": { + "description": "mTLS certificates (optional)", + "type": "string" + }, + "name": { + "description": "Name of the remote cluster", + "type": "string" + }, + "priority": { + "description": "Priority of the remote cluster in locality based load balancing", + "minimum": 0, + "type": "integer" + }, + "weight": { + "default": 0, + "description": "Load balancing weight of the remote cluster", + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "address", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "ports": { + "description": "The list of ports that are exposed by this service.", + "items": { + "properties": { + "port": { + "description": "The port that will be exposed by this service.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "default": "TCP", + "description": "The IP protocol for this port. Supports \"TCP\", \"UDP\", and \"SCTP\". Default is TCP.", + "enum": [ + "TCP", + "UDP", + "SCTP" + ], + "type": "string" + } + }, + "required": [ + "port", + "protocol" + ], + "type": "object" + }, + "type": "array" + }, + "serviceAccount": { + "type": "string" + } + }, + "required": [ + "serviceAccount", + "clusters" + ], + "title": "Multi Cluster Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.9.0-rc.2/multiclusterservice.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.9.0-rc.2/multiclusterservice.meshery.layer5.io_definition.json new file mode 100755 index 00000000..f42be8a4 --- /dev/null +++ b/templates/oam/workloads/v0.9.0-rc.2/multiclusterservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "MultiClusterService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "multiclusterservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.openservicemesh.io/v1alpha1", + "k8sKind": "MultiClusterService", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.9.0-rc.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.9.0-rc.2/tcproute.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.9.0-rc.2/tcproute.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..d0cc9bfe --- /dev/null +++ b/templates/oam/workloads/v0.9.0-rc.2/tcproute.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,25 @@ +{ + "properties": { + "matches": { + "description": "Match conditions of this route.", + "properties": { + "ports": { + "description": "Port numbers to match TCP traffic.", + "items": { + "type": "integer" + }, + "type": "array" + } + }, + "required": [ + "ports" + ], + "type": "object" + } + }, + "required": [ + "matches" + ], + "title": "TCP Route", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.9.0-rc.2/tcproute.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.9.0-rc.2/tcproute.meshery.layer5.io_definition.json new file mode 100755 index 00000000..dd7ed081 --- /dev/null +++ b/templates/oam/workloads/v0.9.0-rc.2/tcproute.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TCPRoute", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "tcproute.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "specs.smi-spec.io/v1alpha4", + "k8sKind": "TCPRoute", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.9.0-rc.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.9.0-rc.2/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.9.0-rc.2/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..13f0a9a2 --- /dev/null +++ b/templates/oam/workloads/v0.9.0-rc.2/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,59 @@ +{ + "properties": { + "backends": { + "description": "The backend services of this split.", + "items": { + "properties": { + "service": { + "description": "Name of the Kubernetes service.", + "type": "string" + }, + "weight": { + "description": "Traffic weight value of this backend.", + "type": "number" + } + }, + "required": [ + "service", + "weight" + ], + "type": "object" + }, + "type": "array" + }, + "matches": { + "description": "The HTTP route groups that this traffic split should match.", + "items": { + "properties": { + "kind": { + "description": "Kind of the matching group.", + "enum": [ + "HTTPRouteGroup" + ], + "type": "string" + }, + "name": { + "description": "Name of the matching group.", + "type": "string" + } + }, + "required": [ + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "service": { + "description": "The apex service of this split.", + "type": "string" + } + }, + "required": [ + "service", + "backends" + ], + "title": "Traffic Split", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.9.0-rc.2/trafficsplit.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.9.0-rc.2/trafficsplit.meshery.layer5.io_definition.json new file mode 100755 index 00000000..70563922 --- /dev/null +++ b/templates/oam/workloads/v0.9.0-rc.2/trafficsplit.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TrafficSplit", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "trafficsplit.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "split.smi-spec.io/v1alpha4", + "k8sKind": "TrafficSplit", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.9.0-rc.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.9.0-rc.2/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.9.0-rc.2/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..83a24559 --- /dev/null +++ b/templates/oam/workloads/v0.9.0-rc.2/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,91 @@ +{ + "properties": { + "destination": { + "description": "The destination of this traffic target.", + "properties": { + "kind": { + "description": "Kind of the destination.", + "type": "string" + }, + "name": { + "description": "Name of the destination.", + "type": "string" + }, + "namespace": { + "description": "Namespace of the destination.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "rules": { + "description": "Specifications of this traffic target.", + "items": { + "properties": { + "kind": { + "description": "Kind of this spec.", + "enum": [ + "HTTPRouteGroup", + "TCPRoute", + "UDPRoute" + ], + "type": "string" + }, + "matches": { + "description": "Match conditions of this spec.", + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "Name of this spec.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources of this traffic target.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "destination", + "rules", + "sources" + ], + "title": "Traffic Target", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.9.0-rc.2/traffictarget.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.9.0-rc.2/traffictarget.meshery.layer5.io_definition.json new file mode 100755 index 00000000..99d053ee --- /dev/null +++ b/templates/oam/workloads/v0.9.0-rc.2/traffictarget.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TrafficTarget", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "traffictarget.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "access.smi-spec.io/v1alpha3", + "k8sKind": "TrafficTarget", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.9.0-rc.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.9.0/egress.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.9.0/egress.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..c77de28d --- /dev/null +++ b/templates/oam/workloads/v0.9.0/egress.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,103 @@ +{ + "properties": { + "hosts": { + "description": "Hosts that the sources are allowed to direct external traffic to.", + "items": { + "type": "string" + }, + "type": "array" + }, + "ipAddresses": { + "description": "IP address ranges that the sources are allowed to direct external traffic to.", + "items": { + "pattern": "((?:\\d{1,3}\\.){3}\\d{1,3})\\/(\\d{1,2})$", + "type": "string" + }, + "type": "array" + }, + "matches": { + "description": "The resource references an Egress policy should match on.", + "items": { + "properties": { + "apiGroup": { + "description": "API group for the resource being referenced.", + "type": "string" + }, + "kind": { + "description": "Type of resource being referenced.", + "type": "string" + }, + "name": { + "description": "Name of resource being referenced.", + "type": "string" + } + }, + "required": [ + "apiGroup", + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "ports": { + "description": "Ports that the sources are allowed to direct external traffic to.", + "items": { + "properties": { + "number": { + "description": "Port number of this port.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "description": "Protocol served by this port.", + "type": "string" + } + }, + "required": [ + "number", + "protocol" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources the egress policy is applicable to.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "enum": [ + "ServiceAccount" + ], + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "kind", + "name", + "namespace" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "sources", + "ports" + ], + "title": "Egress", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.9.0/egress.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.9.0/egress.meshery.layer5.io_definition.json new file mode 100755 index 00000000..1c5db15e --- /dev/null +++ b/templates/oam/workloads/v0.9.0/egress.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Egress", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "egress.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "policy.openservicemesh.io/v1alpha1", + "k8sKind": "Egress", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.9.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.9.0/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.9.0/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..6951d46c --- /dev/null +++ b/templates/oam/workloads/v0.9.0/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,60 @@ +{ + "properties": { + "matches": { + "description": "Match conditions of this route group.", + "items": { + "properties": { + "headers": { + "description": "Header match conditions of this route.", + "items": { + "additionalProperties": { + "type": "string" + }, + "description": "Header match condition of this route.", + "type": "object" + }, + "type": "array" + }, + "methods": { + "description": "The HTTP methods of this HTTP route.", + "items": { + "description": "The HTTP method of this HTTP route.", + "enum": [ + "*", + "GET", + "HEAD", + "PUT", + "POST", + "DELETE", + "CONNECT", + "OPTIONS", + "TRACE", + "PATCH" + ], + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "Name of the HTTP route.", + "type": "string" + }, + "pathRegex": { + "description": "URI path regex of the HTTP route.", + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "matches" + ], + "title": "HTTP Route Group", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.9.0/httproutegroup.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.9.0/httproutegroup.meshery.layer5.io_definition.json new file mode 100755 index 00000000..04ef63c5 --- /dev/null +++ b/templates/oam/workloads/v0.9.0/httproutegroup.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPRouteGroup", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httproutegroup.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "specs.smi-spec.io/v1alpha4", + "k8sKind": "HTTPRouteGroup", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.9.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.9.0/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.9.0/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..f5535897 --- /dev/null +++ b/templates/oam/workloads/v0.9.0/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,118 @@ +{ + "properties": { + "backends": { + "description": "Backends the IngressBackend policy is applicable to.", + "items": { + "properties": { + "name": { + "description": "Name of the backend.", + "type": "string" + }, + "port": { + "description": "Port of the backend.", + "properties": { + "number": { + "description": "Port number of this port.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "description": "Protocol served by this port.", + "type": "string" + } + }, + "required": [ + "number", + "protocol" + ], + "type": "object" + }, + "tls": { + "description": "TLS configuration for the backend.", + "properties": { + "skipClientCertValidation": { + "description": "Skip client certificate validation.", + "type": "boolean" + }, + "sniHosts": { + "description": "SNI hosts allowed by the backend.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "skipClientCertValidation" + ], + "type": "object" + } + }, + "required": [ + "name", + "port" + ], + "type": "object" + }, + "type": "array" + }, + "matches": { + "description": "The resource references an IngressBackend policy should match on.", + "items": { + "properties": { + "apiGroup": { + "description": "API group for the resource being referenced.", + "type": "string" + }, + "kind": { + "description": "Type of resource being referenced.", + "type": "string" + }, + "name": { + "description": "Name of resource being referenced.", + "type": "string" + } + }, + "required": [ + "apiGroup", + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources the IngressBackend policy is applicable to.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "backends", + "sources" + ], + "title": "Ingress Backend", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.9.0/ingressbackend.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.9.0/ingressbackend.meshery.layer5.io_definition.json new file mode 100755 index 00000000..b505f133 --- /dev/null +++ b/templates/oam/workloads/v0.9.0/ingressbackend.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "IngressBackend", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "ingressbackend.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "policy.openservicemesh.io/v1alpha1", + "k8sKind": "IngressBackend", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.9.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.9.0/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.9.0/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..b607634a --- /dev/null +++ b/templates/oam/workloads/v0.9.0/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,264 @@ +{ + "properties": { + "certificate": { + "description": "Configuration for certificate management", + "properties": { + "certKeyBitSize": { + "description": "Sets the certificate key bit size for data plane certificates.", + "type": "integer" + }, + "ingressGateway": { + "description": "Configuration for the ingress gateway's certificate", + "properties": { + "secret": { + "description": "Secret reference to store the certificate in", + "properties": { + "name": { + "description": "Name of the secret", + "type": "string" + }, + "namespace": { + "description": "Namespace of the secret", + "type": "string" + } + }, + "required": [ + "name", + "namespace" + ], + "type": "object" + }, + "subjectAltNames": { + "description": "Subject Alternative Names secured by the certificate", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "validityDuration": { + "description": "Certificate validity duration, represented as a sequence of decimal numbers each with optional fraction and a unit suffix", + "type": "string" + } + }, + "required": [ + "subjectAltNames", + "validityDuration", + "secret" + ], + "type": "object" + }, + "serviceCertValidityDuration": { + "description": "Sets the service certificate validity duration, represented as a sequence of decimal numbers each with optional fraction and a unit suffix.", + "type": "string" + } + }, + "required": [ + "serviceCertValidityDuration", + "certKeyBitSize" + ], + "type": "object" + }, + "featureFlags": { + "description": "OSM feature flags", + "properties": { + "enableAsyncProxyServiceMapping": { + "type": "boolean" + }, + "enableEgressPolicy": { + "type": "boolean" + }, + "enableEnvoyActiveHealthChecks": { + "type": "boolean" + }, + "enableIngressBackendPolicy": { + "type": "boolean" + }, + "enableMulticlusterMode": { + "type": "boolean" + }, + "enableRetryPolicy": { + "type": "boolean" + }, + "enableSnapshotCacheMode": { + "type": "boolean" + }, + "enableWASMStats": { + "type": "boolean" + } + }, + "type": "object" + }, + "observability": { + "description": "Configuration for observing the service mesh, including metrics, logs, tracing etc,.", + "properties": { + "enableDebugServer": { + "description": "Enables a debug endpoint on the osm-controller pod to list information regarding the mesh such as proxy connections, certificates, and SMI policies.", + "type": "boolean" + }, + "osmLogLevel": { + "description": "Allows setting OSM control plane log level at runtime", + "type": "string" + }, + "tracing": { + "description": "Configuration for distributed tracing", + "properties": { + "address": { + "description": "Address of Jaeger tracing deployment, if tracing is enabled.", + "type": "string" + }, + "enable": { + "description": "Enables Jaeger tracing for the mesh.", + "type": "boolean" + }, + "endpoint": { + "description": "Endpoint for tracing data, if tracing is enabled.", + "type": "string" + }, + "port": { + "description": "Port on which tracing is enabled.", + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "sidecar": { + "description": "Configuration for Envoy sidecar", + "properties": { + "configResyncInterval": { + "description": "Resync interval for regular proxy broadcast updates", + "type": "string" + }, + "enablePrivilegedInitContainer": { + "description": "Enables privileged init containers for pods in mesh. When false, init containers only have NET_ADMIN.", + "type": "boolean" + }, + "envoyImage": { + "description": "Image for the Envoy sidecar", + "type": "string" + }, + "envoyWindowsImage": { + "description": "Image for the Envoy sidecar on Windows workers", + "type": "string" + }, + "initContainerImage": { + "description": "Image for the init container", + "type": "string" + }, + "logLevel": { + "description": "Sets the logging verbosity of Envoy proxy sidecar, only applicable to newly created pods joining the mesh.", + "enum": [ + "trace", + "debug", + "info", + "warning", + "warn", + "error", + "critical", + "off" + ], + "type": "string" + }, + "maxDataPlaneConnections": { + "description": "Max allowed data plane sidecar connections", + "type": "integer" + }, + "resources": { + "properties": { + "limits": { + "additionalProperties": true, + "description": "Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/", + "type": "object" + }, + "requests": { + "additionalProperties": true, + "description": "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/", + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "traffic": { + "description": "Configuration for traffic management", + "properties": { + "enableEgress": { + "description": "Enables egress in the mesh", + "type": "boolean" + }, + "enablePermissiveTrafficPolicyMode": { + "description": "True for allowing traffic to flow between client and service pods within the mesh without SMI traffic policies, i.e. no traffic policy enforcement in the mesh. If set to false, enables deny-all traffic policy in mesh i.e. an SMI Traffic Target is necessary for services to communicate.", + "type": "boolean" + }, + "inboundExternalAuthorization": { + "description": "Configures external authorization for inbound and ingress connections.", + "properties": { + "address": { + "description": "Target destination endpoint that will handle external authorization.", + "type": "string" + }, + "enable": { + "description": "Enables/disables the inbound external authorization policy if present.", + "type": "boolean" + }, + "failureModeAllow": { + "description": "Allows specifying if traffic should succeed or fail if the external authorization endpoint fails to respond.", + "type": "boolean" + }, + "port": { + "description": "Remote destination port for the external authorization endpoint.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "statPrefix": { + "default": "inboundExtAuthz", + "description": "String prefix for inbound external authorization related metrics.", + "type": "string" + }, + "timeout": { + "default": "1s", + "description": "Defines the timeout to consider for the remote endpoint to reply in time.", + "type": "string" + } + }, + "type": "object" + }, + "inboundPortExclusionList": { + "description": "Global list of ports to exclude from inbound traffic interception by the sidecar proxy.", + "items": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "type": "array" + }, + "outboundIPRangeExclusionList": { + "description": "Global list of IP address ranges to exclude from outbound traffic interception by the sidecar proxy.", + "items": { + "pattern": "((?:\\d{1,3}\\.){3}\\d{1,3})\\/(\\d{1,2})$", + "type": "string" + }, + "type": "array" + }, + "outboundPortExclusionList": { + "description": "Global list of ports to exclude from outbound traffic interception by the sidecar proxy.", + "items": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "title": "Mesh Config", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.9.0/meshconfig.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.9.0/meshconfig.meshery.layer5.io_definition.json new file mode 100755 index 00000000..73b9a73f --- /dev/null +++ b/templates/oam/workloads/v0.9.0/meshconfig.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "MeshConfig", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "meshconfig.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.openservicemesh.io/v1alpha1", + "k8sKind": "MeshConfig", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.9.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.9.0/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.9.0/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..60d4f7dd --- /dev/null +++ b/templates/oam/workloads/v0.9.0/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "properties": { + "clusters": { + "description": "The clusters the service accounts are hosted on.", + "items": { + "properties": { + "address": { + "description": "a routable IP + port", + "pattern": "^(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3}):[0-9]+$", + "type": "string" + }, + "certificate": { + "description": "mTLS certificates (optional)", + "type": "string" + }, + "name": { + "description": "Name of the remote cluster", + "type": "string" + }, + "priority": { + "description": "Priority of the remote cluster in locality based load balancing", + "minimum": 0, + "type": "integer" + }, + "weight": { + "default": 0, + "description": "Load balancing weight of the remote cluster", + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "address", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "ports": { + "description": "The list of ports that are exposed by this service.", + "items": { + "properties": { + "port": { + "description": "The port that will be exposed by this service.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "default": "TCP", + "description": "The IP protocol for this port. Supports \"TCP\", \"UDP\", and \"SCTP\". Default is TCP.", + "enum": [ + "TCP", + "UDP", + "SCTP" + ], + "type": "string" + } + }, + "required": [ + "port", + "protocol" + ], + "type": "object" + }, + "type": "array" + }, + "serviceAccount": { + "type": "string" + } + }, + "required": [ + "serviceAccount", + "clusters" + ], + "title": "Multi Cluster Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.9.0/multiclusterservice.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.9.0/multiclusterservice.meshery.layer5.io_definition.json new file mode 100755 index 00000000..574e353f --- /dev/null +++ b/templates/oam/workloads/v0.9.0/multiclusterservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "MultiClusterService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "multiclusterservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.openservicemesh.io/v1alpha1", + "k8sKind": "MultiClusterService", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.9.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.9.0/tcproute.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.9.0/tcproute.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..d0cc9bfe --- /dev/null +++ b/templates/oam/workloads/v0.9.0/tcproute.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,25 @@ +{ + "properties": { + "matches": { + "description": "Match conditions of this route.", + "properties": { + "ports": { + "description": "Port numbers to match TCP traffic.", + "items": { + "type": "integer" + }, + "type": "array" + } + }, + "required": [ + "ports" + ], + "type": "object" + } + }, + "required": [ + "matches" + ], + "title": "TCP Route", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.9.0/tcproute.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.9.0/tcproute.meshery.layer5.io_definition.json new file mode 100755 index 00000000..4000a207 --- /dev/null +++ b/templates/oam/workloads/v0.9.0/tcproute.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TCPRoute", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "tcproute.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "specs.smi-spec.io/v1alpha4", + "k8sKind": "TCPRoute", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.9.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.9.0/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.9.0/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..13f0a9a2 --- /dev/null +++ b/templates/oam/workloads/v0.9.0/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,59 @@ +{ + "properties": { + "backends": { + "description": "The backend services of this split.", + "items": { + "properties": { + "service": { + "description": "Name of the Kubernetes service.", + "type": "string" + }, + "weight": { + "description": "Traffic weight value of this backend.", + "type": "number" + } + }, + "required": [ + "service", + "weight" + ], + "type": "object" + }, + "type": "array" + }, + "matches": { + "description": "The HTTP route groups that this traffic split should match.", + "items": { + "properties": { + "kind": { + "description": "Kind of the matching group.", + "enum": [ + "HTTPRouteGroup" + ], + "type": "string" + }, + "name": { + "description": "Name of the matching group.", + "type": "string" + } + }, + "required": [ + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "service": { + "description": "The apex service of this split.", + "type": "string" + } + }, + "required": [ + "service", + "backends" + ], + "title": "Traffic Split", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.9.0/trafficsplit.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.9.0/trafficsplit.meshery.layer5.io_definition.json new file mode 100755 index 00000000..bb711b3c --- /dev/null +++ b/templates/oam/workloads/v0.9.0/trafficsplit.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TrafficSplit", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "trafficsplit.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "split.smi-spec.io/v1alpha4", + "k8sKind": "TrafficSplit", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.9.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.9.0/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.9.0/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..83a24559 --- /dev/null +++ b/templates/oam/workloads/v0.9.0/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,91 @@ +{ + "properties": { + "destination": { + "description": "The destination of this traffic target.", + "properties": { + "kind": { + "description": "Kind of the destination.", + "type": "string" + }, + "name": { + "description": "Name of the destination.", + "type": "string" + }, + "namespace": { + "description": "Namespace of the destination.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "rules": { + "description": "Specifications of this traffic target.", + "items": { + "properties": { + "kind": { + "description": "Kind of this spec.", + "enum": [ + "HTTPRouteGroup", + "TCPRoute", + "UDPRoute" + ], + "type": "string" + }, + "matches": { + "description": "Match conditions of this spec.", + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "Name of this spec.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources of this traffic target.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "destination", + "rules", + "sources" + ], + "title": "Traffic Target", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.9.0/traffictarget.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.9.0/traffictarget.meshery.layer5.io_definition.json new file mode 100755 index 00000000..a18bcc5a --- /dev/null +++ b/templates/oam/workloads/v0.9.0/traffictarget.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TrafficTarget", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "traffictarget.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "access.smi-spec.io/v1alpha3", + "k8sKind": "TrafficTarget", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.9.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.9.1-rc.1/egress.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.9.1-rc.1/egress.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..c77de28d --- /dev/null +++ b/templates/oam/workloads/v0.9.1-rc.1/egress.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,103 @@ +{ + "properties": { + "hosts": { + "description": "Hosts that the sources are allowed to direct external traffic to.", + "items": { + "type": "string" + }, + "type": "array" + }, + "ipAddresses": { + "description": "IP address ranges that the sources are allowed to direct external traffic to.", + "items": { + "pattern": "((?:\\d{1,3}\\.){3}\\d{1,3})\\/(\\d{1,2})$", + "type": "string" + }, + "type": "array" + }, + "matches": { + "description": "The resource references an Egress policy should match on.", + "items": { + "properties": { + "apiGroup": { + "description": "API group for the resource being referenced.", + "type": "string" + }, + "kind": { + "description": "Type of resource being referenced.", + "type": "string" + }, + "name": { + "description": "Name of resource being referenced.", + "type": "string" + } + }, + "required": [ + "apiGroup", + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "ports": { + "description": "Ports that the sources are allowed to direct external traffic to.", + "items": { + "properties": { + "number": { + "description": "Port number of this port.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "description": "Protocol served by this port.", + "type": "string" + } + }, + "required": [ + "number", + "protocol" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources the egress policy is applicable to.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "enum": [ + "ServiceAccount" + ], + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "kind", + "name", + "namespace" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "sources", + "ports" + ], + "title": "Egress", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.9.1-rc.1/egress.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.9.1-rc.1/egress.meshery.layer5.io_definition.json new file mode 100755 index 00000000..7b4c9057 --- /dev/null +++ b/templates/oam/workloads/v0.9.1-rc.1/egress.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Egress", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "egress.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "policy.openservicemesh.io/v1alpha1", + "k8sKind": "Egress", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.9.1-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.9.1-rc.1/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.9.1-rc.1/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..6951d46c --- /dev/null +++ b/templates/oam/workloads/v0.9.1-rc.1/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,60 @@ +{ + "properties": { + "matches": { + "description": "Match conditions of this route group.", + "items": { + "properties": { + "headers": { + "description": "Header match conditions of this route.", + "items": { + "additionalProperties": { + "type": "string" + }, + "description": "Header match condition of this route.", + "type": "object" + }, + "type": "array" + }, + "methods": { + "description": "The HTTP methods of this HTTP route.", + "items": { + "description": "The HTTP method of this HTTP route.", + "enum": [ + "*", + "GET", + "HEAD", + "PUT", + "POST", + "DELETE", + "CONNECT", + "OPTIONS", + "TRACE", + "PATCH" + ], + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "Name of the HTTP route.", + "type": "string" + }, + "pathRegex": { + "description": "URI path regex of the HTTP route.", + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "matches" + ], + "title": "HTTP Route Group", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.9.1-rc.1/httproutegroup.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.9.1-rc.1/httproutegroup.meshery.layer5.io_definition.json new file mode 100755 index 00000000..224a5f50 --- /dev/null +++ b/templates/oam/workloads/v0.9.1-rc.1/httproutegroup.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPRouteGroup", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httproutegroup.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "specs.smi-spec.io/v1alpha4", + "k8sKind": "HTTPRouteGroup", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.9.1-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.9.1-rc.1/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.9.1-rc.1/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..f5535897 --- /dev/null +++ b/templates/oam/workloads/v0.9.1-rc.1/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,118 @@ +{ + "properties": { + "backends": { + "description": "Backends the IngressBackend policy is applicable to.", + "items": { + "properties": { + "name": { + "description": "Name of the backend.", + "type": "string" + }, + "port": { + "description": "Port of the backend.", + "properties": { + "number": { + "description": "Port number of this port.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "description": "Protocol served by this port.", + "type": "string" + } + }, + "required": [ + "number", + "protocol" + ], + "type": "object" + }, + "tls": { + "description": "TLS configuration for the backend.", + "properties": { + "skipClientCertValidation": { + "description": "Skip client certificate validation.", + "type": "boolean" + }, + "sniHosts": { + "description": "SNI hosts allowed by the backend.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "skipClientCertValidation" + ], + "type": "object" + } + }, + "required": [ + "name", + "port" + ], + "type": "object" + }, + "type": "array" + }, + "matches": { + "description": "The resource references an IngressBackend policy should match on.", + "items": { + "properties": { + "apiGroup": { + "description": "API group for the resource being referenced.", + "type": "string" + }, + "kind": { + "description": "Type of resource being referenced.", + "type": "string" + }, + "name": { + "description": "Name of resource being referenced.", + "type": "string" + } + }, + "required": [ + "apiGroup", + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources the IngressBackend policy is applicable to.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "backends", + "sources" + ], + "title": "Ingress Backend", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.9.1-rc.1/ingressbackend.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.9.1-rc.1/ingressbackend.meshery.layer5.io_definition.json new file mode 100755 index 00000000..386db8ab --- /dev/null +++ b/templates/oam/workloads/v0.9.1-rc.1/ingressbackend.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "IngressBackend", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "ingressbackend.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "policy.openservicemesh.io/v1alpha1", + "k8sKind": "IngressBackend", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.9.1-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.9.1-rc.1/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.9.1-rc.1/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..b607634a --- /dev/null +++ b/templates/oam/workloads/v0.9.1-rc.1/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,264 @@ +{ + "properties": { + "certificate": { + "description": "Configuration for certificate management", + "properties": { + "certKeyBitSize": { + "description": "Sets the certificate key bit size for data plane certificates.", + "type": "integer" + }, + "ingressGateway": { + "description": "Configuration for the ingress gateway's certificate", + "properties": { + "secret": { + "description": "Secret reference to store the certificate in", + "properties": { + "name": { + "description": "Name of the secret", + "type": "string" + }, + "namespace": { + "description": "Namespace of the secret", + "type": "string" + } + }, + "required": [ + "name", + "namespace" + ], + "type": "object" + }, + "subjectAltNames": { + "description": "Subject Alternative Names secured by the certificate", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "validityDuration": { + "description": "Certificate validity duration, represented as a sequence of decimal numbers each with optional fraction and a unit suffix", + "type": "string" + } + }, + "required": [ + "subjectAltNames", + "validityDuration", + "secret" + ], + "type": "object" + }, + "serviceCertValidityDuration": { + "description": "Sets the service certificate validity duration, represented as a sequence of decimal numbers each with optional fraction and a unit suffix.", + "type": "string" + } + }, + "required": [ + "serviceCertValidityDuration", + "certKeyBitSize" + ], + "type": "object" + }, + "featureFlags": { + "description": "OSM feature flags", + "properties": { + "enableAsyncProxyServiceMapping": { + "type": "boolean" + }, + "enableEgressPolicy": { + "type": "boolean" + }, + "enableEnvoyActiveHealthChecks": { + "type": "boolean" + }, + "enableIngressBackendPolicy": { + "type": "boolean" + }, + "enableMulticlusterMode": { + "type": "boolean" + }, + "enableRetryPolicy": { + "type": "boolean" + }, + "enableSnapshotCacheMode": { + "type": "boolean" + }, + "enableWASMStats": { + "type": "boolean" + } + }, + "type": "object" + }, + "observability": { + "description": "Configuration for observing the service mesh, including metrics, logs, tracing etc,.", + "properties": { + "enableDebugServer": { + "description": "Enables a debug endpoint on the osm-controller pod to list information regarding the mesh such as proxy connections, certificates, and SMI policies.", + "type": "boolean" + }, + "osmLogLevel": { + "description": "Allows setting OSM control plane log level at runtime", + "type": "string" + }, + "tracing": { + "description": "Configuration for distributed tracing", + "properties": { + "address": { + "description": "Address of Jaeger tracing deployment, if tracing is enabled.", + "type": "string" + }, + "enable": { + "description": "Enables Jaeger tracing for the mesh.", + "type": "boolean" + }, + "endpoint": { + "description": "Endpoint for tracing data, if tracing is enabled.", + "type": "string" + }, + "port": { + "description": "Port on which tracing is enabled.", + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "sidecar": { + "description": "Configuration for Envoy sidecar", + "properties": { + "configResyncInterval": { + "description": "Resync interval for regular proxy broadcast updates", + "type": "string" + }, + "enablePrivilegedInitContainer": { + "description": "Enables privileged init containers for pods in mesh. When false, init containers only have NET_ADMIN.", + "type": "boolean" + }, + "envoyImage": { + "description": "Image for the Envoy sidecar", + "type": "string" + }, + "envoyWindowsImage": { + "description": "Image for the Envoy sidecar on Windows workers", + "type": "string" + }, + "initContainerImage": { + "description": "Image for the init container", + "type": "string" + }, + "logLevel": { + "description": "Sets the logging verbosity of Envoy proxy sidecar, only applicable to newly created pods joining the mesh.", + "enum": [ + "trace", + "debug", + "info", + "warning", + "warn", + "error", + "critical", + "off" + ], + "type": "string" + }, + "maxDataPlaneConnections": { + "description": "Max allowed data plane sidecar connections", + "type": "integer" + }, + "resources": { + "properties": { + "limits": { + "additionalProperties": true, + "description": "Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/", + "type": "object" + }, + "requests": { + "additionalProperties": true, + "description": "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/", + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "traffic": { + "description": "Configuration for traffic management", + "properties": { + "enableEgress": { + "description": "Enables egress in the mesh", + "type": "boolean" + }, + "enablePermissiveTrafficPolicyMode": { + "description": "True for allowing traffic to flow between client and service pods within the mesh without SMI traffic policies, i.e. no traffic policy enforcement in the mesh. If set to false, enables deny-all traffic policy in mesh i.e. an SMI Traffic Target is necessary for services to communicate.", + "type": "boolean" + }, + "inboundExternalAuthorization": { + "description": "Configures external authorization for inbound and ingress connections.", + "properties": { + "address": { + "description": "Target destination endpoint that will handle external authorization.", + "type": "string" + }, + "enable": { + "description": "Enables/disables the inbound external authorization policy if present.", + "type": "boolean" + }, + "failureModeAllow": { + "description": "Allows specifying if traffic should succeed or fail if the external authorization endpoint fails to respond.", + "type": "boolean" + }, + "port": { + "description": "Remote destination port for the external authorization endpoint.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "statPrefix": { + "default": "inboundExtAuthz", + "description": "String prefix for inbound external authorization related metrics.", + "type": "string" + }, + "timeout": { + "default": "1s", + "description": "Defines the timeout to consider for the remote endpoint to reply in time.", + "type": "string" + } + }, + "type": "object" + }, + "inboundPortExclusionList": { + "description": "Global list of ports to exclude from inbound traffic interception by the sidecar proxy.", + "items": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "type": "array" + }, + "outboundIPRangeExclusionList": { + "description": "Global list of IP address ranges to exclude from outbound traffic interception by the sidecar proxy.", + "items": { + "pattern": "((?:\\d{1,3}\\.){3}\\d{1,3})\\/(\\d{1,2})$", + "type": "string" + }, + "type": "array" + }, + "outboundPortExclusionList": { + "description": "Global list of ports to exclude from outbound traffic interception by the sidecar proxy.", + "items": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "title": "Mesh Config", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.9.1-rc.1/meshconfig.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.9.1-rc.1/meshconfig.meshery.layer5.io_definition.json new file mode 100755 index 00000000..5f67ff32 --- /dev/null +++ b/templates/oam/workloads/v0.9.1-rc.1/meshconfig.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "MeshConfig", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "meshconfig.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.openservicemesh.io/v1alpha1", + "k8sKind": "MeshConfig", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.9.1-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.9.1-rc.1/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.9.1-rc.1/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..60d4f7dd --- /dev/null +++ b/templates/oam/workloads/v0.9.1-rc.1/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "properties": { + "clusters": { + "description": "The clusters the service accounts are hosted on.", + "items": { + "properties": { + "address": { + "description": "a routable IP + port", + "pattern": "^(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3}):[0-9]+$", + "type": "string" + }, + "certificate": { + "description": "mTLS certificates (optional)", + "type": "string" + }, + "name": { + "description": "Name of the remote cluster", + "type": "string" + }, + "priority": { + "description": "Priority of the remote cluster in locality based load balancing", + "minimum": 0, + "type": "integer" + }, + "weight": { + "default": 0, + "description": "Load balancing weight of the remote cluster", + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "address", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "ports": { + "description": "The list of ports that are exposed by this service.", + "items": { + "properties": { + "port": { + "description": "The port that will be exposed by this service.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "default": "TCP", + "description": "The IP protocol for this port. Supports \"TCP\", \"UDP\", and \"SCTP\". Default is TCP.", + "enum": [ + "TCP", + "UDP", + "SCTP" + ], + "type": "string" + } + }, + "required": [ + "port", + "protocol" + ], + "type": "object" + }, + "type": "array" + }, + "serviceAccount": { + "type": "string" + } + }, + "required": [ + "serviceAccount", + "clusters" + ], + "title": "Multi Cluster Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.9.1-rc.1/multiclusterservice.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.9.1-rc.1/multiclusterservice.meshery.layer5.io_definition.json new file mode 100755 index 00000000..7b44c4da --- /dev/null +++ b/templates/oam/workloads/v0.9.1-rc.1/multiclusterservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "MultiClusterService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "multiclusterservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.openservicemesh.io/v1alpha1", + "k8sKind": "MultiClusterService", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.9.1-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.9.1-rc.1/tcproute.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.9.1-rc.1/tcproute.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..d0cc9bfe --- /dev/null +++ b/templates/oam/workloads/v0.9.1-rc.1/tcproute.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,25 @@ +{ + "properties": { + "matches": { + "description": "Match conditions of this route.", + "properties": { + "ports": { + "description": "Port numbers to match TCP traffic.", + "items": { + "type": "integer" + }, + "type": "array" + } + }, + "required": [ + "ports" + ], + "type": "object" + } + }, + "required": [ + "matches" + ], + "title": "TCP Route", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.9.1-rc.1/tcproute.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.9.1-rc.1/tcproute.meshery.layer5.io_definition.json new file mode 100755 index 00000000..552d3369 --- /dev/null +++ b/templates/oam/workloads/v0.9.1-rc.1/tcproute.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TCPRoute", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "tcproute.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "specs.smi-spec.io/v1alpha4", + "k8sKind": "TCPRoute", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.9.1-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.9.1-rc.1/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.9.1-rc.1/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..13f0a9a2 --- /dev/null +++ b/templates/oam/workloads/v0.9.1-rc.1/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,59 @@ +{ + "properties": { + "backends": { + "description": "The backend services of this split.", + "items": { + "properties": { + "service": { + "description": "Name of the Kubernetes service.", + "type": "string" + }, + "weight": { + "description": "Traffic weight value of this backend.", + "type": "number" + } + }, + "required": [ + "service", + "weight" + ], + "type": "object" + }, + "type": "array" + }, + "matches": { + "description": "The HTTP route groups that this traffic split should match.", + "items": { + "properties": { + "kind": { + "description": "Kind of the matching group.", + "enum": [ + "HTTPRouteGroup" + ], + "type": "string" + }, + "name": { + "description": "Name of the matching group.", + "type": "string" + } + }, + "required": [ + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "service": { + "description": "The apex service of this split.", + "type": "string" + } + }, + "required": [ + "service", + "backends" + ], + "title": "Traffic Split", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.9.1-rc.1/trafficsplit.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.9.1-rc.1/trafficsplit.meshery.layer5.io_definition.json new file mode 100755 index 00000000..8647ef43 --- /dev/null +++ b/templates/oam/workloads/v0.9.1-rc.1/trafficsplit.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TrafficSplit", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "trafficsplit.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "split.smi-spec.io/v1alpha4", + "k8sKind": "TrafficSplit", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.9.1-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.9.1-rc.1/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.9.1-rc.1/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..83a24559 --- /dev/null +++ b/templates/oam/workloads/v0.9.1-rc.1/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,91 @@ +{ + "properties": { + "destination": { + "description": "The destination of this traffic target.", + "properties": { + "kind": { + "description": "Kind of the destination.", + "type": "string" + }, + "name": { + "description": "Name of the destination.", + "type": "string" + }, + "namespace": { + "description": "Namespace of the destination.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "rules": { + "description": "Specifications of this traffic target.", + "items": { + "properties": { + "kind": { + "description": "Kind of this spec.", + "enum": [ + "HTTPRouteGroup", + "TCPRoute", + "UDPRoute" + ], + "type": "string" + }, + "matches": { + "description": "Match conditions of this spec.", + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "Name of this spec.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources of this traffic target.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "destination", + "rules", + "sources" + ], + "title": "Traffic Target", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.9.1-rc.1/traffictarget.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.9.1-rc.1/traffictarget.meshery.layer5.io_definition.json new file mode 100755 index 00000000..ca5dc774 --- /dev/null +++ b/templates/oam/workloads/v0.9.1-rc.1/traffictarget.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TrafficTarget", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "traffictarget.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "access.smi-spec.io/v1alpha3", + "k8sKind": "TrafficTarget", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.9.1-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.9.1/egress.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.9.1/egress.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..c77de28d --- /dev/null +++ b/templates/oam/workloads/v0.9.1/egress.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,103 @@ +{ + "properties": { + "hosts": { + "description": "Hosts that the sources are allowed to direct external traffic to.", + "items": { + "type": "string" + }, + "type": "array" + }, + "ipAddresses": { + "description": "IP address ranges that the sources are allowed to direct external traffic to.", + "items": { + "pattern": "((?:\\d{1,3}\\.){3}\\d{1,3})\\/(\\d{1,2})$", + "type": "string" + }, + "type": "array" + }, + "matches": { + "description": "The resource references an Egress policy should match on.", + "items": { + "properties": { + "apiGroup": { + "description": "API group for the resource being referenced.", + "type": "string" + }, + "kind": { + "description": "Type of resource being referenced.", + "type": "string" + }, + "name": { + "description": "Name of resource being referenced.", + "type": "string" + } + }, + "required": [ + "apiGroup", + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "ports": { + "description": "Ports that the sources are allowed to direct external traffic to.", + "items": { + "properties": { + "number": { + "description": "Port number of this port.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "description": "Protocol served by this port.", + "type": "string" + } + }, + "required": [ + "number", + "protocol" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources the egress policy is applicable to.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "enum": [ + "ServiceAccount" + ], + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "kind", + "name", + "namespace" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "sources", + "ports" + ], + "title": "Egress", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.9.1/egress.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.9.1/egress.meshery.layer5.io_definition.json new file mode 100755 index 00000000..e8e6545f --- /dev/null +++ b/templates/oam/workloads/v0.9.1/egress.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Egress", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "egress.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "policy.openservicemesh.io/v1alpha1", + "k8sKind": "Egress", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.9.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/workloads-v0.9.1/egress.osm.meshery.layer5io.schema.json b/templates/oam/workloads/v0.9.1/egress.osm.meshery.layer5io.schema.json similarity index 100% rename from templates/oam/workloads/workloads-v0.9.1/egress.osm.meshery.layer5io.schema.json rename to templates/oam/workloads/v0.9.1/egress.osm.meshery.layer5io.schema.json diff --git a/templates/oam/workloads/workloads-v0.9.1/egress.osm_definition.json b/templates/oam/workloads/v0.9.1/egress.osm_definition.json similarity index 100% rename from templates/oam/workloads/workloads-v0.9.1/egress.osm_definition.json rename to templates/oam/workloads/v0.9.1/egress.osm_definition.json diff --git a/templates/oam/workloads/v0.9.1/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.9.1/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..6951d46c --- /dev/null +++ b/templates/oam/workloads/v0.9.1/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,60 @@ +{ + "properties": { + "matches": { + "description": "Match conditions of this route group.", + "items": { + "properties": { + "headers": { + "description": "Header match conditions of this route.", + "items": { + "additionalProperties": { + "type": "string" + }, + "description": "Header match condition of this route.", + "type": "object" + }, + "type": "array" + }, + "methods": { + "description": "The HTTP methods of this HTTP route.", + "items": { + "description": "The HTTP method of this HTTP route.", + "enum": [ + "*", + "GET", + "HEAD", + "PUT", + "POST", + "DELETE", + "CONNECT", + "OPTIONS", + "TRACE", + "PATCH" + ], + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "Name of the HTTP route.", + "type": "string" + }, + "pathRegex": { + "description": "URI path regex of the HTTP route.", + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "matches" + ], + "title": "HTTP Route Group", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.9.1/httproutegroup.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.9.1/httproutegroup.meshery.layer5.io_definition.json new file mode 100755 index 00000000..c3bca125 --- /dev/null +++ b/templates/oam/workloads/v0.9.1/httproutegroup.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPRouteGroup", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httproutegroup.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "specs.smi-spec.io/v1alpha4", + "k8sKind": "HTTPRouteGroup", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.9.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/workloads-v0.9.1/httproutegroup.osm.meshery.layer5io.schema.json b/templates/oam/workloads/v0.9.1/httproutegroup.osm.meshery.layer5io.schema.json similarity index 100% rename from templates/oam/workloads/workloads-v0.9.1/httproutegroup.osm.meshery.layer5io.schema.json rename to templates/oam/workloads/v0.9.1/httproutegroup.osm.meshery.layer5io.schema.json diff --git a/templates/oam/workloads/workloads-v0.9.1/httproutegroup.osm_definition.json b/templates/oam/workloads/v0.9.1/httproutegroup.osm_definition.json similarity index 100% rename from templates/oam/workloads/workloads-v0.9.1/httproutegroup.osm_definition.json rename to templates/oam/workloads/v0.9.1/httproutegroup.osm_definition.json diff --git a/templates/oam/workloads/v0.9.1/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.9.1/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..f5535897 --- /dev/null +++ b/templates/oam/workloads/v0.9.1/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,118 @@ +{ + "properties": { + "backends": { + "description": "Backends the IngressBackend policy is applicable to.", + "items": { + "properties": { + "name": { + "description": "Name of the backend.", + "type": "string" + }, + "port": { + "description": "Port of the backend.", + "properties": { + "number": { + "description": "Port number of this port.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "description": "Protocol served by this port.", + "type": "string" + } + }, + "required": [ + "number", + "protocol" + ], + "type": "object" + }, + "tls": { + "description": "TLS configuration for the backend.", + "properties": { + "skipClientCertValidation": { + "description": "Skip client certificate validation.", + "type": "boolean" + }, + "sniHosts": { + "description": "SNI hosts allowed by the backend.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "skipClientCertValidation" + ], + "type": "object" + } + }, + "required": [ + "name", + "port" + ], + "type": "object" + }, + "type": "array" + }, + "matches": { + "description": "The resource references an IngressBackend policy should match on.", + "items": { + "properties": { + "apiGroup": { + "description": "API group for the resource being referenced.", + "type": "string" + }, + "kind": { + "description": "Type of resource being referenced.", + "type": "string" + }, + "name": { + "description": "Name of resource being referenced.", + "type": "string" + } + }, + "required": [ + "apiGroup", + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources the IngressBackend policy is applicable to.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "backends", + "sources" + ], + "title": "Ingress Backend", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.9.1/ingressbackend.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.9.1/ingressbackend.meshery.layer5.io_definition.json new file mode 100755 index 00000000..f59ae790 --- /dev/null +++ b/templates/oam/workloads/v0.9.1/ingressbackend.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "IngressBackend", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "ingressbackend.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "policy.openservicemesh.io/v1alpha1", + "k8sKind": "IngressBackend", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.9.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.9.1/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.9.1/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..b607634a --- /dev/null +++ b/templates/oam/workloads/v0.9.1/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,264 @@ +{ + "properties": { + "certificate": { + "description": "Configuration for certificate management", + "properties": { + "certKeyBitSize": { + "description": "Sets the certificate key bit size for data plane certificates.", + "type": "integer" + }, + "ingressGateway": { + "description": "Configuration for the ingress gateway's certificate", + "properties": { + "secret": { + "description": "Secret reference to store the certificate in", + "properties": { + "name": { + "description": "Name of the secret", + "type": "string" + }, + "namespace": { + "description": "Namespace of the secret", + "type": "string" + } + }, + "required": [ + "name", + "namespace" + ], + "type": "object" + }, + "subjectAltNames": { + "description": "Subject Alternative Names secured by the certificate", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "validityDuration": { + "description": "Certificate validity duration, represented as a sequence of decimal numbers each with optional fraction and a unit suffix", + "type": "string" + } + }, + "required": [ + "subjectAltNames", + "validityDuration", + "secret" + ], + "type": "object" + }, + "serviceCertValidityDuration": { + "description": "Sets the service certificate validity duration, represented as a sequence of decimal numbers each with optional fraction and a unit suffix.", + "type": "string" + } + }, + "required": [ + "serviceCertValidityDuration", + "certKeyBitSize" + ], + "type": "object" + }, + "featureFlags": { + "description": "OSM feature flags", + "properties": { + "enableAsyncProxyServiceMapping": { + "type": "boolean" + }, + "enableEgressPolicy": { + "type": "boolean" + }, + "enableEnvoyActiveHealthChecks": { + "type": "boolean" + }, + "enableIngressBackendPolicy": { + "type": "boolean" + }, + "enableMulticlusterMode": { + "type": "boolean" + }, + "enableRetryPolicy": { + "type": "boolean" + }, + "enableSnapshotCacheMode": { + "type": "boolean" + }, + "enableWASMStats": { + "type": "boolean" + } + }, + "type": "object" + }, + "observability": { + "description": "Configuration for observing the service mesh, including metrics, logs, tracing etc,.", + "properties": { + "enableDebugServer": { + "description": "Enables a debug endpoint on the osm-controller pod to list information regarding the mesh such as proxy connections, certificates, and SMI policies.", + "type": "boolean" + }, + "osmLogLevel": { + "description": "Allows setting OSM control plane log level at runtime", + "type": "string" + }, + "tracing": { + "description": "Configuration for distributed tracing", + "properties": { + "address": { + "description": "Address of Jaeger tracing deployment, if tracing is enabled.", + "type": "string" + }, + "enable": { + "description": "Enables Jaeger tracing for the mesh.", + "type": "boolean" + }, + "endpoint": { + "description": "Endpoint for tracing data, if tracing is enabled.", + "type": "string" + }, + "port": { + "description": "Port on which tracing is enabled.", + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "sidecar": { + "description": "Configuration for Envoy sidecar", + "properties": { + "configResyncInterval": { + "description": "Resync interval for regular proxy broadcast updates", + "type": "string" + }, + "enablePrivilegedInitContainer": { + "description": "Enables privileged init containers for pods in mesh. When false, init containers only have NET_ADMIN.", + "type": "boolean" + }, + "envoyImage": { + "description": "Image for the Envoy sidecar", + "type": "string" + }, + "envoyWindowsImage": { + "description": "Image for the Envoy sidecar on Windows workers", + "type": "string" + }, + "initContainerImage": { + "description": "Image for the init container", + "type": "string" + }, + "logLevel": { + "description": "Sets the logging verbosity of Envoy proxy sidecar, only applicable to newly created pods joining the mesh.", + "enum": [ + "trace", + "debug", + "info", + "warning", + "warn", + "error", + "critical", + "off" + ], + "type": "string" + }, + "maxDataPlaneConnections": { + "description": "Max allowed data plane sidecar connections", + "type": "integer" + }, + "resources": { + "properties": { + "limits": { + "additionalProperties": true, + "description": "Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/", + "type": "object" + }, + "requests": { + "additionalProperties": true, + "description": "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/", + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "traffic": { + "description": "Configuration for traffic management", + "properties": { + "enableEgress": { + "description": "Enables egress in the mesh", + "type": "boolean" + }, + "enablePermissiveTrafficPolicyMode": { + "description": "True for allowing traffic to flow between client and service pods within the mesh without SMI traffic policies, i.e. no traffic policy enforcement in the mesh. If set to false, enables deny-all traffic policy in mesh i.e. an SMI Traffic Target is necessary for services to communicate.", + "type": "boolean" + }, + "inboundExternalAuthorization": { + "description": "Configures external authorization for inbound and ingress connections.", + "properties": { + "address": { + "description": "Target destination endpoint that will handle external authorization.", + "type": "string" + }, + "enable": { + "description": "Enables/disables the inbound external authorization policy if present.", + "type": "boolean" + }, + "failureModeAllow": { + "description": "Allows specifying if traffic should succeed or fail if the external authorization endpoint fails to respond.", + "type": "boolean" + }, + "port": { + "description": "Remote destination port for the external authorization endpoint.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "statPrefix": { + "default": "inboundExtAuthz", + "description": "String prefix for inbound external authorization related metrics.", + "type": "string" + }, + "timeout": { + "default": "1s", + "description": "Defines the timeout to consider for the remote endpoint to reply in time.", + "type": "string" + } + }, + "type": "object" + }, + "inboundPortExclusionList": { + "description": "Global list of ports to exclude from inbound traffic interception by the sidecar proxy.", + "items": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "type": "array" + }, + "outboundIPRangeExclusionList": { + "description": "Global list of IP address ranges to exclude from outbound traffic interception by the sidecar proxy.", + "items": { + "pattern": "((?:\\d{1,3}\\.){3}\\d{1,3})\\/(\\d{1,2})$", + "type": "string" + }, + "type": "array" + }, + "outboundPortExclusionList": { + "description": "Global list of ports to exclude from outbound traffic interception by the sidecar proxy.", + "items": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "title": "Mesh Config", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.9.1/meshconfig.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.9.1/meshconfig.meshery.layer5.io_definition.json new file mode 100755 index 00000000..b5a41462 --- /dev/null +++ b/templates/oam/workloads/v0.9.1/meshconfig.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "MeshConfig", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "meshconfig.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.openservicemesh.io/v1alpha1", + "k8sKind": "MeshConfig", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.9.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/workloads-v0.9.1/meshconfig.osm.meshery.layer5io.schema.json b/templates/oam/workloads/v0.9.1/meshconfig.osm.meshery.layer5io.schema.json similarity index 100% rename from templates/oam/workloads/workloads-v0.9.1/meshconfig.osm.meshery.layer5io.schema.json rename to templates/oam/workloads/v0.9.1/meshconfig.osm.meshery.layer5io.schema.json diff --git a/templates/oam/workloads/workloads-v0.9.1/meshconfig.osm_definition.json b/templates/oam/workloads/v0.9.1/meshconfig.osm_definition.json similarity index 100% rename from templates/oam/workloads/workloads-v0.9.1/meshconfig.osm_definition.json rename to templates/oam/workloads/v0.9.1/meshconfig.osm_definition.json diff --git a/templates/oam/workloads/v0.9.1/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.9.1/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..60d4f7dd --- /dev/null +++ b/templates/oam/workloads/v0.9.1/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "properties": { + "clusters": { + "description": "The clusters the service accounts are hosted on.", + "items": { + "properties": { + "address": { + "description": "a routable IP + port", + "pattern": "^(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3}):[0-9]+$", + "type": "string" + }, + "certificate": { + "description": "mTLS certificates (optional)", + "type": "string" + }, + "name": { + "description": "Name of the remote cluster", + "type": "string" + }, + "priority": { + "description": "Priority of the remote cluster in locality based load balancing", + "minimum": 0, + "type": "integer" + }, + "weight": { + "default": 0, + "description": "Load balancing weight of the remote cluster", + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "address", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "ports": { + "description": "The list of ports that are exposed by this service.", + "items": { + "properties": { + "port": { + "description": "The port that will be exposed by this service.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "default": "TCP", + "description": "The IP protocol for this port. Supports \"TCP\", \"UDP\", and \"SCTP\". Default is TCP.", + "enum": [ + "TCP", + "UDP", + "SCTP" + ], + "type": "string" + } + }, + "required": [ + "port", + "protocol" + ], + "type": "object" + }, + "type": "array" + }, + "serviceAccount": { + "type": "string" + } + }, + "required": [ + "serviceAccount", + "clusters" + ], + "title": "Multi Cluster Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.9.1/multiclusterservice.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.9.1/multiclusterservice.meshery.layer5.io_definition.json new file mode 100755 index 00000000..a7d596f9 --- /dev/null +++ b/templates/oam/workloads/v0.9.1/multiclusterservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "MultiClusterService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "multiclusterservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.openservicemesh.io/v1alpha1", + "k8sKind": "MultiClusterService", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.9.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.9.1/tcproute.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.9.1/tcproute.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..d0cc9bfe --- /dev/null +++ b/templates/oam/workloads/v0.9.1/tcproute.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,25 @@ +{ + "properties": { + "matches": { + "description": "Match conditions of this route.", + "properties": { + "ports": { + "description": "Port numbers to match TCP traffic.", + "items": { + "type": "integer" + }, + "type": "array" + } + }, + "required": [ + "ports" + ], + "type": "object" + } + }, + "required": [ + "matches" + ], + "title": "TCP Route", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.9.1/tcproute.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.9.1/tcproute.meshery.layer5.io_definition.json new file mode 100755 index 00000000..a2c8eb21 --- /dev/null +++ b/templates/oam/workloads/v0.9.1/tcproute.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TCPRoute", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "tcproute.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "specs.smi-spec.io/v1alpha4", + "k8sKind": "TCPRoute", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.9.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/workloads-v0.9.1/tcproute.osm.meshery.layer5io.schema.json b/templates/oam/workloads/v0.9.1/tcproute.osm.meshery.layer5io.schema.json similarity index 100% rename from templates/oam/workloads/workloads-v0.9.1/tcproute.osm.meshery.layer5io.schema.json rename to templates/oam/workloads/v0.9.1/tcproute.osm.meshery.layer5io.schema.json diff --git a/templates/oam/workloads/workloads-v0.9.1/tcproute.osm_definition.json b/templates/oam/workloads/v0.9.1/tcproute.osm_definition.json similarity index 100% rename from templates/oam/workloads/workloads-v0.9.1/tcproute.osm_definition.json rename to templates/oam/workloads/v0.9.1/tcproute.osm_definition.json diff --git a/templates/oam/workloads/v0.9.1/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.9.1/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..13f0a9a2 --- /dev/null +++ b/templates/oam/workloads/v0.9.1/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,59 @@ +{ + "properties": { + "backends": { + "description": "The backend services of this split.", + "items": { + "properties": { + "service": { + "description": "Name of the Kubernetes service.", + "type": "string" + }, + "weight": { + "description": "Traffic weight value of this backend.", + "type": "number" + } + }, + "required": [ + "service", + "weight" + ], + "type": "object" + }, + "type": "array" + }, + "matches": { + "description": "The HTTP route groups that this traffic split should match.", + "items": { + "properties": { + "kind": { + "description": "Kind of the matching group.", + "enum": [ + "HTTPRouteGroup" + ], + "type": "string" + }, + "name": { + "description": "Name of the matching group.", + "type": "string" + } + }, + "required": [ + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "service": { + "description": "The apex service of this split.", + "type": "string" + } + }, + "required": [ + "service", + "backends" + ], + "title": "Traffic Split", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.9.1/trafficsplit.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.9.1/trafficsplit.meshery.layer5.io_definition.json new file mode 100755 index 00000000..7fd6dd4d --- /dev/null +++ b/templates/oam/workloads/v0.9.1/trafficsplit.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TrafficSplit", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "trafficsplit.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "split.smi-spec.io/v1alpha4", + "k8sKind": "TrafficSplit", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.9.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/workloads-v0.9.1/trafficsplit.osm.meshery.layer5io.schema.json b/templates/oam/workloads/v0.9.1/trafficsplit.osm.meshery.layer5io.schema.json similarity index 100% rename from templates/oam/workloads/workloads-v0.9.1/trafficsplit.osm.meshery.layer5io.schema.json rename to templates/oam/workloads/v0.9.1/trafficsplit.osm.meshery.layer5io.schema.json diff --git a/templates/oam/workloads/workloads-v0.9.1/trafficsplit.osm_definition.json b/templates/oam/workloads/v0.9.1/trafficsplit.osm_definition.json similarity index 100% rename from templates/oam/workloads/workloads-v0.9.1/trafficsplit.osm_definition.json rename to templates/oam/workloads/v0.9.1/trafficsplit.osm_definition.json diff --git a/templates/oam/workloads/v0.9.1/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.9.1/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..83a24559 --- /dev/null +++ b/templates/oam/workloads/v0.9.1/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,91 @@ +{ + "properties": { + "destination": { + "description": "The destination of this traffic target.", + "properties": { + "kind": { + "description": "Kind of the destination.", + "type": "string" + }, + "name": { + "description": "Name of the destination.", + "type": "string" + }, + "namespace": { + "description": "Namespace of the destination.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "rules": { + "description": "Specifications of this traffic target.", + "items": { + "properties": { + "kind": { + "description": "Kind of this spec.", + "enum": [ + "HTTPRouteGroup", + "TCPRoute", + "UDPRoute" + ], + "type": "string" + }, + "matches": { + "description": "Match conditions of this spec.", + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "Name of this spec.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources of this traffic target.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "destination", + "rules", + "sources" + ], + "title": "Traffic Target", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.9.1/traffictarget.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.9.1/traffictarget.meshery.layer5.io_definition.json new file mode 100755 index 00000000..9a3cb7fa --- /dev/null +++ b/templates/oam/workloads/v0.9.1/traffictarget.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TrafficTarget", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "traffictarget.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "access.smi-spec.io/v1alpha3", + "k8sKind": "TrafficTarget", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.9.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/workloads-v0.9.1/traffictarget.osm.meshery.layer5io.schema.json b/templates/oam/workloads/v0.9.1/traffictarget.osm.meshery.layer5io.schema.json similarity index 100% rename from templates/oam/workloads/workloads-v0.9.1/traffictarget.osm.meshery.layer5io.schema.json rename to templates/oam/workloads/v0.9.1/traffictarget.osm.meshery.layer5io.schema.json diff --git a/templates/oam/workloads/workloads-v0.9.1/traffictarget.osm_definition.json b/templates/oam/workloads/v0.9.1/traffictarget.osm_definition.json similarity index 100% rename from templates/oam/workloads/workloads-v0.9.1/traffictarget.osm_definition.json rename to templates/oam/workloads/v0.9.1/traffictarget.osm_definition.json diff --git a/templates/oam/workloads/v0.9.2-rc.1/egress.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.9.2-rc.1/egress.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..c77de28d --- /dev/null +++ b/templates/oam/workloads/v0.9.2-rc.1/egress.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,103 @@ +{ + "properties": { + "hosts": { + "description": "Hosts that the sources are allowed to direct external traffic to.", + "items": { + "type": "string" + }, + "type": "array" + }, + "ipAddresses": { + "description": "IP address ranges that the sources are allowed to direct external traffic to.", + "items": { + "pattern": "((?:\\d{1,3}\\.){3}\\d{1,3})\\/(\\d{1,2})$", + "type": "string" + }, + "type": "array" + }, + "matches": { + "description": "The resource references an Egress policy should match on.", + "items": { + "properties": { + "apiGroup": { + "description": "API group for the resource being referenced.", + "type": "string" + }, + "kind": { + "description": "Type of resource being referenced.", + "type": "string" + }, + "name": { + "description": "Name of resource being referenced.", + "type": "string" + } + }, + "required": [ + "apiGroup", + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "ports": { + "description": "Ports that the sources are allowed to direct external traffic to.", + "items": { + "properties": { + "number": { + "description": "Port number of this port.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "description": "Protocol served by this port.", + "type": "string" + } + }, + "required": [ + "number", + "protocol" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources the egress policy is applicable to.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "enum": [ + "ServiceAccount" + ], + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "kind", + "name", + "namespace" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "sources", + "ports" + ], + "title": "Egress", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.9.2-rc.1/egress.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.9.2-rc.1/egress.meshery.layer5.io_definition.json new file mode 100755 index 00000000..3b0734fa --- /dev/null +++ b/templates/oam/workloads/v0.9.2-rc.1/egress.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Egress", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "egress.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "policy.openservicemesh.io/v1alpha1", + "k8sKind": "Egress", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.9.2-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.9.2-rc.1/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.9.2-rc.1/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..6951d46c --- /dev/null +++ b/templates/oam/workloads/v0.9.2-rc.1/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,60 @@ +{ + "properties": { + "matches": { + "description": "Match conditions of this route group.", + "items": { + "properties": { + "headers": { + "description": "Header match conditions of this route.", + "items": { + "additionalProperties": { + "type": "string" + }, + "description": "Header match condition of this route.", + "type": "object" + }, + "type": "array" + }, + "methods": { + "description": "The HTTP methods of this HTTP route.", + "items": { + "description": "The HTTP method of this HTTP route.", + "enum": [ + "*", + "GET", + "HEAD", + "PUT", + "POST", + "DELETE", + "CONNECT", + "OPTIONS", + "TRACE", + "PATCH" + ], + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "Name of the HTTP route.", + "type": "string" + }, + "pathRegex": { + "description": "URI path regex of the HTTP route.", + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "matches" + ], + "title": "HTTP Route Group", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.9.2-rc.1/httproutegroup.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.9.2-rc.1/httproutegroup.meshery.layer5.io_definition.json new file mode 100755 index 00000000..8787e78a --- /dev/null +++ b/templates/oam/workloads/v0.9.2-rc.1/httproutegroup.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPRouteGroup", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httproutegroup.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "specs.smi-spec.io/v1alpha4", + "k8sKind": "HTTPRouteGroup", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.9.2-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.9.2-rc.1/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.9.2-rc.1/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..f5535897 --- /dev/null +++ b/templates/oam/workloads/v0.9.2-rc.1/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,118 @@ +{ + "properties": { + "backends": { + "description": "Backends the IngressBackend policy is applicable to.", + "items": { + "properties": { + "name": { + "description": "Name of the backend.", + "type": "string" + }, + "port": { + "description": "Port of the backend.", + "properties": { + "number": { + "description": "Port number of this port.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "description": "Protocol served by this port.", + "type": "string" + } + }, + "required": [ + "number", + "protocol" + ], + "type": "object" + }, + "tls": { + "description": "TLS configuration for the backend.", + "properties": { + "skipClientCertValidation": { + "description": "Skip client certificate validation.", + "type": "boolean" + }, + "sniHosts": { + "description": "SNI hosts allowed by the backend.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "skipClientCertValidation" + ], + "type": "object" + } + }, + "required": [ + "name", + "port" + ], + "type": "object" + }, + "type": "array" + }, + "matches": { + "description": "The resource references an IngressBackend policy should match on.", + "items": { + "properties": { + "apiGroup": { + "description": "API group for the resource being referenced.", + "type": "string" + }, + "kind": { + "description": "Type of resource being referenced.", + "type": "string" + }, + "name": { + "description": "Name of resource being referenced.", + "type": "string" + } + }, + "required": [ + "apiGroup", + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources the IngressBackend policy is applicable to.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "backends", + "sources" + ], + "title": "Ingress Backend", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.9.2-rc.1/ingressbackend.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.9.2-rc.1/ingressbackend.meshery.layer5.io_definition.json new file mode 100755 index 00000000..98f650d8 --- /dev/null +++ b/templates/oam/workloads/v0.9.2-rc.1/ingressbackend.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "IngressBackend", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "ingressbackend.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "policy.openservicemesh.io/v1alpha1", + "k8sKind": "IngressBackend", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.9.2-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.9.2-rc.1/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.9.2-rc.1/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..b607634a --- /dev/null +++ b/templates/oam/workloads/v0.9.2-rc.1/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,264 @@ +{ + "properties": { + "certificate": { + "description": "Configuration for certificate management", + "properties": { + "certKeyBitSize": { + "description": "Sets the certificate key bit size for data plane certificates.", + "type": "integer" + }, + "ingressGateway": { + "description": "Configuration for the ingress gateway's certificate", + "properties": { + "secret": { + "description": "Secret reference to store the certificate in", + "properties": { + "name": { + "description": "Name of the secret", + "type": "string" + }, + "namespace": { + "description": "Namespace of the secret", + "type": "string" + } + }, + "required": [ + "name", + "namespace" + ], + "type": "object" + }, + "subjectAltNames": { + "description": "Subject Alternative Names secured by the certificate", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "validityDuration": { + "description": "Certificate validity duration, represented as a sequence of decimal numbers each with optional fraction and a unit suffix", + "type": "string" + } + }, + "required": [ + "subjectAltNames", + "validityDuration", + "secret" + ], + "type": "object" + }, + "serviceCertValidityDuration": { + "description": "Sets the service certificate validity duration, represented as a sequence of decimal numbers each with optional fraction and a unit suffix.", + "type": "string" + } + }, + "required": [ + "serviceCertValidityDuration", + "certKeyBitSize" + ], + "type": "object" + }, + "featureFlags": { + "description": "OSM feature flags", + "properties": { + "enableAsyncProxyServiceMapping": { + "type": "boolean" + }, + "enableEgressPolicy": { + "type": "boolean" + }, + "enableEnvoyActiveHealthChecks": { + "type": "boolean" + }, + "enableIngressBackendPolicy": { + "type": "boolean" + }, + "enableMulticlusterMode": { + "type": "boolean" + }, + "enableRetryPolicy": { + "type": "boolean" + }, + "enableSnapshotCacheMode": { + "type": "boolean" + }, + "enableWASMStats": { + "type": "boolean" + } + }, + "type": "object" + }, + "observability": { + "description": "Configuration for observing the service mesh, including metrics, logs, tracing etc,.", + "properties": { + "enableDebugServer": { + "description": "Enables a debug endpoint on the osm-controller pod to list information regarding the mesh such as proxy connections, certificates, and SMI policies.", + "type": "boolean" + }, + "osmLogLevel": { + "description": "Allows setting OSM control plane log level at runtime", + "type": "string" + }, + "tracing": { + "description": "Configuration for distributed tracing", + "properties": { + "address": { + "description": "Address of Jaeger tracing deployment, if tracing is enabled.", + "type": "string" + }, + "enable": { + "description": "Enables Jaeger tracing for the mesh.", + "type": "boolean" + }, + "endpoint": { + "description": "Endpoint for tracing data, if tracing is enabled.", + "type": "string" + }, + "port": { + "description": "Port on which tracing is enabled.", + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "sidecar": { + "description": "Configuration for Envoy sidecar", + "properties": { + "configResyncInterval": { + "description": "Resync interval for regular proxy broadcast updates", + "type": "string" + }, + "enablePrivilegedInitContainer": { + "description": "Enables privileged init containers for pods in mesh. When false, init containers only have NET_ADMIN.", + "type": "boolean" + }, + "envoyImage": { + "description": "Image for the Envoy sidecar", + "type": "string" + }, + "envoyWindowsImage": { + "description": "Image for the Envoy sidecar on Windows workers", + "type": "string" + }, + "initContainerImage": { + "description": "Image for the init container", + "type": "string" + }, + "logLevel": { + "description": "Sets the logging verbosity of Envoy proxy sidecar, only applicable to newly created pods joining the mesh.", + "enum": [ + "trace", + "debug", + "info", + "warning", + "warn", + "error", + "critical", + "off" + ], + "type": "string" + }, + "maxDataPlaneConnections": { + "description": "Max allowed data plane sidecar connections", + "type": "integer" + }, + "resources": { + "properties": { + "limits": { + "additionalProperties": true, + "description": "Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/", + "type": "object" + }, + "requests": { + "additionalProperties": true, + "description": "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/", + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "traffic": { + "description": "Configuration for traffic management", + "properties": { + "enableEgress": { + "description": "Enables egress in the mesh", + "type": "boolean" + }, + "enablePermissiveTrafficPolicyMode": { + "description": "True for allowing traffic to flow between client and service pods within the mesh without SMI traffic policies, i.e. no traffic policy enforcement in the mesh. If set to false, enables deny-all traffic policy in mesh i.e. an SMI Traffic Target is necessary for services to communicate.", + "type": "boolean" + }, + "inboundExternalAuthorization": { + "description": "Configures external authorization for inbound and ingress connections.", + "properties": { + "address": { + "description": "Target destination endpoint that will handle external authorization.", + "type": "string" + }, + "enable": { + "description": "Enables/disables the inbound external authorization policy if present.", + "type": "boolean" + }, + "failureModeAllow": { + "description": "Allows specifying if traffic should succeed or fail if the external authorization endpoint fails to respond.", + "type": "boolean" + }, + "port": { + "description": "Remote destination port for the external authorization endpoint.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "statPrefix": { + "default": "inboundExtAuthz", + "description": "String prefix for inbound external authorization related metrics.", + "type": "string" + }, + "timeout": { + "default": "1s", + "description": "Defines the timeout to consider for the remote endpoint to reply in time.", + "type": "string" + } + }, + "type": "object" + }, + "inboundPortExclusionList": { + "description": "Global list of ports to exclude from inbound traffic interception by the sidecar proxy.", + "items": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "type": "array" + }, + "outboundIPRangeExclusionList": { + "description": "Global list of IP address ranges to exclude from outbound traffic interception by the sidecar proxy.", + "items": { + "pattern": "((?:\\d{1,3}\\.){3}\\d{1,3})\\/(\\d{1,2})$", + "type": "string" + }, + "type": "array" + }, + "outboundPortExclusionList": { + "description": "Global list of ports to exclude from outbound traffic interception by the sidecar proxy.", + "items": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "title": "Mesh Config", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.9.2-rc.1/meshconfig.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.9.2-rc.1/meshconfig.meshery.layer5.io_definition.json new file mode 100755 index 00000000..587994da --- /dev/null +++ b/templates/oam/workloads/v0.9.2-rc.1/meshconfig.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "MeshConfig", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "meshconfig.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.openservicemesh.io/v1alpha1", + "k8sKind": "MeshConfig", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.9.2-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.9.2-rc.1/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.9.2-rc.1/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..60d4f7dd --- /dev/null +++ b/templates/oam/workloads/v0.9.2-rc.1/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "properties": { + "clusters": { + "description": "The clusters the service accounts are hosted on.", + "items": { + "properties": { + "address": { + "description": "a routable IP + port", + "pattern": "^(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3}):[0-9]+$", + "type": "string" + }, + "certificate": { + "description": "mTLS certificates (optional)", + "type": "string" + }, + "name": { + "description": "Name of the remote cluster", + "type": "string" + }, + "priority": { + "description": "Priority of the remote cluster in locality based load balancing", + "minimum": 0, + "type": "integer" + }, + "weight": { + "default": 0, + "description": "Load balancing weight of the remote cluster", + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "address", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "ports": { + "description": "The list of ports that are exposed by this service.", + "items": { + "properties": { + "port": { + "description": "The port that will be exposed by this service.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "default": "TCP", + "description": "The IP protocol for this port. Supports \"TCP\", \"UDP\", and \"SCTP\". Default is TCP.", + "enum": [ + "TCP", + "UDP", + "SCTP" + ], + "type": "string" + } + }, + "required": [ + "port", + "protocol" + ], + "type": "object" + }, + "type": "array" + }, + "serviceAccount": { + "type": "string" + } + }, + "required": [ + "serviceAccount", + "clusters" + ], + "title": "Multi Cluster Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.9.2-rc.1/multiclusterservice.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.9.2-rc.1/multiclusterservice.meshery.layer5.io_definition.json new file mode 100755 index 00000000..1f09d4e2 --- /dev/null +++ b/templates/oam/workloads/v0.9.2-rc.1/multiclusterservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "MultiClusterService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "multiclusterservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.openservicemesh.io/v1alpha1", + "k8sKind": "MultiClusterService", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.9.2-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.9.2-rc.1/tcproute.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.9.2-rc.1/tcproute.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..d0cc9bfe --- /dev/null +++ b/templates/oam/workloads/v0.9.2-rc.1/tcproute.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,25 @@ +{ + "properties": { + "matches": { + "description": "Match conditions of this route.", + "properties": { + "ports": { + "description": "Port numbers to match TCP traffic.", + "items": { + "type": "integer" + }, + "type": "array" + } + }, + "required": [ + "ports" + ], + "type": "object" + } + }, + "required": [ + "matches" + ], + "title": "TCP Route", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.9.2-rc.1/tcproute.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.9.2-rc.1/tcproute.meshery.layer5.io_definition.json new file mode 100755 index 00000000..429d59d3 --- /dev/null +++ b/templates/oam/workloads/v0.9.2-rc.1/tcproute.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TCPRoute", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "tcproute.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "specs.smi-spec.io/v1alpha4", + "k8sKind": "TCPRoute", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.9.2-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.9.2-rc.1/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.9.2-rc.1/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..13f0a9a2 --- /dev/null +++ b/templates/oam/workloads/v0.9.2-rc.1/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,59 @@ +{ + "properties": { + "backends": { + "description": "The backend services of this split.", + "items": { + "properties": { + "service": { + "description": "Name of the Kubernetes service.", + "type": "string" + }, + "weight": { + "description": "Traffic weight value of this backend.", + "type": "number" + } + }, + "required": [ + "service", + "weight" + ], + "type": "object" + }, + "type": "array" + }, + "matches": { + "description": "The HTTP route groups that this traffic split should match.", + "items": { + "properties": { + "kind": { + "description": "Kind of the matching group.", + "enum": [ + "HTTPRouteGroup" + ], + "type": "string" + }, + "name": { + "description": "Name of the matching group.", + "type": "string" + } + }, + "required": [ + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "service": { + "description": "The apex service of this split.", + "type": "string" + } + }, + "required": [ + "service", + "backends" + ], + "title": "Traffic Split", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.9.2-rc.1/trafficsplit.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.9.2-rc.1/trafficsplit.meshery.layer5.io_definition.json new file mode 100755 index 00000000..7e4104ea --- /dev/null +++ b/templates/oam/workloads/v0.9.2-rc.1/trafficsplit.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TrafficSplit", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "trafficsplit.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "split.smi-spec.io/v1alpha4", + "k8sKind": "TrafficSplit", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.9.2-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.9.2-rc.1/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.9.2-rc.1/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..83a24559 --- /dev/null +++ b/templates/oam/workloads/v0.9.2-rc.1/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,91 @@ +{ + "properties": { + "destination": { + "description": "The destination of this traffic target.", + "properties": { + "kind": { + "description": "Kind of the destination.", + "type": "string" + }, + "name": { + "description": "Name of the destination.", + "type": "string" + }, + "namespace": { + "description": "Namespace of the destination.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "rules": { + "description": "Specifications of this traffic target.", + "items": { + "properties": { + "kind": { + "description": "Kind of this spec.", + "enum": [ + "HTTPRouteGroup", + "TCPRoute", + "UDPRoute" + ], + "type": "string" + }, + "matches": { + "description": "Match conditions of this spec.", + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "Name of this spec.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources of this traffic target.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "destination", + "rules", + "sources" + ], + "title": "Traffic Target", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.9.2-rc.1/traffictarget.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.9.2-rc.1/traffictarget.meshery.layer5.io_definition.json new file mode 100755 index 00000000..8dfad24f --- /dev/null +++ b/templates/oam/workloads/v0.9.2-rc.1/traffictarget.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TrafficTarget", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "traffictarget.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "access.smi-spec.io/v1alpha3", + "k8sKind": "TrafficTarget", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.9.2-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.9.2/egress.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.9.2/egress.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..c77de28d --- /dev/null +++ b/templates/oam/workloads/v0.9.2/egress.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,103 @@ +{ + "properties": { + "hosts": { + "description": "Hosts that the sources are allowed to direct external traffic to.", + "items": { + "type": "string" + }, + "type": "array" + }, + "ipAddresses": { + "description": "IP address ranges that the sources are allowed to direct external traffic to.", + "items": { + "pattern": "((?:\\d{1,3}\\.){3}\\d{1,3})\\/(\\d{1,2})$", + "type": "string" + }, + "type": "array" + }, + "matches": { + "description": "The resource references an Egress policy should match on.", + "items": { + "properties": { + "apiGroup": { + "description": "API group for the resource being referenced.", + "type": "string" + }, + "kind": { + "description": "Type of resource being referenced.", + "type": "string" + }, + "name": { + "description": "Name of resource being referenced.", + "type": "string" + } + }, + "required": [ + "apiGroup", + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "ports": { + "description": "Ports that the sources are allowed to direct external traffic to.", + "items": { + "properties": { + "number": { + "description": "Port number of this port.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "description": "Protocol served by this port.", + "type": "string" + } + }, + "required": [ + "number", + "protocol" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources the egress policy is applicable to.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "enum": [ + "ServiceAccount" + ], + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "kind", + "name", + "namespace" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "sources", + "ports" + ], + "title": "Egress", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.9.2/egress.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.9.2/egress.meshery.layer5.io_definition.json new file mode 100755 index 00000000..e3526988 --- /dev/null +++ b/templates/oam/workloads/v0.9.2/egress.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Egress", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "egress.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "policy.openservicemesh.io/v1alpha1", + "k8sKind": "Egress", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.9.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/workloads-v0.9.2/egress.osm.meshery.layer5io.schema.json b/templates/oam/workloads/v0.9.2/egress.osm.meshery.layer5io.schema.json similarity index 100% rename from templates/oam/workloads/workloads-v0.9.2/egress.osm.meshery.layer5io.schema.json rename to templates/oam/workloads/v0.9.2/egress.osm.meshery.layer5io.schema.json diff --git a/templates/oam/workloads/workloads-v0.9.2/egress.osm_definition.json b/templates/oam/workloads/v0.9.2/egress.osm_definition.json similarity index 100% rename from templates/oam/workloads/workloads-v0.9.2/egress.osm_definition.json rename to templates/oam/workloads/v0.9.2/egress.osm_definition.json diff --git a/templates/oam/workloads/v0.9.2/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.9.2/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..6951d46c --- /dev/null +++ b/templates/oam/workloads/v0.9.2/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,60 @@ +{ + "properties": { + "matches": { + "description": "Match conditions of this route group.", + "items": { + "properties": { + "headers": { + "description": "Header match conditions of this route.", + "items": { + "additionalProperties": { + "type": "string" + }, + "description": "Header match condition of this route.", + "type": "object" + }, + "type": "array" + }, + "methods": { + "description": "The HTTP methods of this HTTP route.", + "items": { + "description": "The HTTP method of this HTTP route.", + "enum": [ + "*", + "GET", + "HEAD", + "PUT", + "POST", + "DELETE", + "CONNECT", + "OPTIONS", + "TRACE", + "PATCH" + ], + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "Name of the HTTP route.", + "type": "string" + }, + "pathRegex": { + "description": "URI path regex of the HTTP route.", + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "matches" + ], + "title": "HTTP Route Group", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.9.2/httproutegroup.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.9.2/httproutegroup.meshery.layer5.io_definition.json new file mode 100755 index 00000000..d9f73637 --- /dev/null +++ b/templates/oam/workloads/v0.9.2/httproutegroup.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPRouteGroup", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httproutegroup.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "specs.smi-spec.io/v1alpha4", + "k8sKind": "HTTPRouteGroup", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.9.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/workloads-v0.9.2/httproutegroup.osm.meshery.layer5io.schema.json b/templates/oam/workloads/v0.9.2/httproutegroup.osm.meshery.layer5io.schema.json similarity index 100% rename from templates/oam/workloads/workloads-v0.9.2/httproutegroup.osm.meshery.layer5io.schema.json rename to templates/oam/workloads/v0.9.2/httproutegroup.osm.meshery.layer5io.schema.json diff --git a/templates/oam/workloads/workloads-v0.9.2/httproutegroup.osm_definition.json b/templates/oam/workloads/v0.9.2/httproutegroup.osm_definition.json similarity index 100% rename from templates/oam/workloads/workloads-v0.9.2/httproutegroup.osm_definition.json rename to templates/oam/workloads/v0.9.2/httproutegroup.osm_definition.json diff --git a/templates/oam/workloads/v0.9.2/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.9.2/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..f5535897 --- /dev/null +++ b/templates/oam/workloads/v0.9.2/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,118 @@ +{ + "properties": { + "backends": { + "description": "Backends the IngressBackend policy is applicable to.", + "items": { + "properties": { + "name": { + "description": "Name of the backend.", + "type": "string" + }, + "port": { + "description": "Port of the backend.", + "properties": { + "number": { + "description": "Port number of this port.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "description": "Protocol served by this port.", + "type": "string" + } + }, + "required": [ + "number", + "protocol" + ], + "type": "object" + }, + "tls": { + "description": "TLS configuration for the backend.", + "properties": { + "skipClientCertValidation": { + "description": "Skip client certificate validation.", + "type": "boolean" + }, + "sniHosts": { + "description": "SNI hosts allowed by the backend.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "skipClientCertValidation" + ], + "type": "object" + } + }, + "required": [ + "name", + "port" + ], + "type": "object" + }, + "type": "array" + }, + "matches": { + "description": "The resource references an IngressBackend policy should match on.", + "items": { + "properties": { + "apiGroup": { + "description": "API group for the resource being referenced.", + "type": "string" + }, + "kind": { + "description": "Type of resource being referenced.", + "type": "string" + }, + "name": { + "description": "Name of resource being referenced.", + "type": "string" + } + }, + "required": [ + "apiGroup", + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources the IngressBackend policy is applicable to.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "backends", + "sources" + ], + "title": "Ingress Backend", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.9.2/ingressbackend.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.9.2/ingressbackend.meshery.layer5.io_definition.json new file mode 100755 index 00000000..11fb88ab --- /dev/null +++ b/templates/oam/workloads/v0.9.2/ingressbackend.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "IngressBackend", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "ingressbackend.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "policy.openservicemesh.io/v1alpha1", + "k8sKind": "IngressBackend", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.9.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.9.2/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.9.2/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..b607634a --- /dev/null +++ b/templates/oam/workloads/v0.9.2/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,264 @@ +{ + "properties": { + "certificate": { + "description": "Configuration for certificate management", + "properties": { + "certKeyBitSize": { + "description": "Sets the certificate key bit size for data plane certificates.", + "type": "integer" + }, + "ingressGateway": { + "description": "Configuration for the ingress gateway's certificate", + "properties": { + "secret": { + "description": "Secret reference to store the certificate in", + "properties": { + "name": { + "description": "Name of the secret", + "type": "string" + }, + "namespace": { + "description": "Namespace of the secret", + "type": "string" + } + }, + "required": [ + "name", + "namespace" + ], + "type": "object" + }, + "subjectAltNames": { + "description": "Subject Alternative Names secured by the certificate", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "validityDuration": { + "description": "Certificate validity duration, represented as a sequence of decimal numbers each with optional fraction and a unit suffix", + "type": "string" + } + }, + "required": [ + "subjectAltNames", + "validityDuration", + "secret" + ], + "type": "object" + }, + "serviceCertValidityDuration": { + "description": "Sets the service certificate validity duration, represented as a sequence of decimal numbers each with optional fraction and a unit suffix.", + "type": "string" + } + }, + "required": [ + "serviceCertValidityDuration", + "certKeyBitSize" + ], + "type": "object" + }, + "featureFlags": { + "description": "OSM feature flags", + "properties": { + "enableAsyncProxyServiceMapping": { + "type": "boolean" + }, + "enableEgressPolicy": { + "type": "boolean" + }, + "enableEnvoyActiveHealthChecks": { + "type": "boolean" + }, + "enableIngressBackendPolicy": { + "type": "boolean" + }, + "enableMulticlusterMode": { + "type": "boolean" + }, + "enableRetryPolicy": { + "type": "boolean" + }, + "enableSnapshotCacheMode": { + "type": "boolean" + }, + "enableWASMStats": { + "type": "boolean" + } + }, + "type": "object" + }, + "observability": { + "description": "Configuration for observing the service mesh, including metrics, logs, tracing etc,.", + "properties": { + "enableDebugServer": { + "description": "Enables a debug endpoint on the osm-controller pod to list information regarding the mesh such as proxy connections, certificates, and SMI policies.", + "type": "boolean" + }, + "osmLogLevel": { + "description": "Allows setting OSM control plane log level at runtime", + "type": "string" + }, + "tracing": { + "description": "Configuration for distributed tracing", + "properties": { + "address": { + "description": "Address of Jaeger tracing deployment, if tracing is enabled.", + "type": "string" + }, + "enable": { + "description": "Enables Jaeger tracing for the mesh.", + "type": "boolean" + }, + "endpoint": { + "description": "Endpoint for tracing data, if tracing is enabled.", + "type": "string" + }, + "port": { + "description": "Port on which tracing is enabled.", + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "sidecar": { + "description": "Configuration for Envoy sidecar", + "properties": { + "configResyncInterval": { + "description": "Resync interval for regular proxy broadcast updates", + "type": "string" + }, + "enablePrivilegedInitContainer": { + "description": "Enables privileged init containers for pods in mesh. When false, init containers only have NET_ADMIN.", + "type": "boolean" + }, + "envoyImage": { + "description": "Image for the Envoy sidecar", + "type": "string" + }, + "envoyWindowsImage": { + "description": "Image for the Envoy sidecar on Windows workers", + "type": "string" + }, + "initContainerImage": { + "description": "Image for the init container", + "type": "string" + }, + "logLevel": { + "description": "Sets the logging verbosity of Envoy proxy sidecar, only applicable to newly created pods joining the mesh.", + "enum": [ + "trace", + "debug", + "info", + "warning", + "warn", + "error", + "critical", + "off" + ], + "type": "string" + }, + "maxDataPlaneConnections": { + "description": "Max allowed data plane sidecar connections", + "type": "integer" + }, + "resources": { + "properties": { + "limits": { + "additionalProperties": true, + "description": "Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/", + "type": "object" + }, + "requests": { + "additionalProperties": true, + "description": "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/", + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "traffic": { + "description": "Configuration for traffic management", + "properties": { + "enableEgress": { + "description": "Enables egress in the mesh", + "type": "boolean" + }, + "enablePermissiveTrafficPolicyMode": { + "description": "True for allowing traffic to flow between client and service pods within the mesh without SMI traffic policies, i.e. no traffic policy enforcement in the mesh. If set to false, enables deny-all traffic policy in mesh i.e. an SMI Traffic Target is necessary for services to communicate.", + "type": "boolean" + }, + "inboundExternalAuthorization": { + "description": "Configures external authorization for inbound and ingress connections.", + "properties": { + "address": { + "description": "Target destination endpoint that will handle external authorization.", + "type": "string" + }, + "enable": { + "description": "Enables/disables the inbound external authorization policy if present.", + "type": "boolean" + }, + "failureModeAllow": { + "description": "Allows specifying if traffic should succeed or fail if the external authorization endpoint fails to respond.", + "type": "boolean" + }, + "port": { + "description": "Remote destination port for the external authorization endpoint.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "statPrefix": { + "default": "inboundExtAuthz", + "description": "String prefix for inbound external authorization related metrics.", + "type": "string" + }, + "timeout": { + "default": "1s", + "description": "Defines the timeout to consider for the remote endpoint to reply in time.", + "type": "string" + } + }, + "type": "object" + }, + "inboundPortExclusionList": { + "description": "Global list of ports to exclude from inbound traffic interception by the sidecar proxy.", + "items": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "type": "array" + }, + "outboundIPRangeExclusionList": { + "description": "Global list of IP address ranges to exclude from outbound traffic interception by the sidecar proxy.", + "items": { + "pattern": "((?:\\d{1,3}\\.){3}\\d{1,3})\\/(\\d{1,2})$", + "type": "string" + }, + "type": "array" + }, + "outboundPortExclusionList": { + "description": "Global list of ports to exclude from outbound traffic interception by the sidecar proxy.", + "items": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "title": "Mesh Config", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.9.2/meshconfig.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.9.2/meshconfig.meshery.layer5.io_definition.json new file mode 100755 index 00000000..02ae3da3 --- /dev/null +++ b/templates/oam/workloads/v0.9.2/meshconfig.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "MeshConfig", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "meshconfig.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.openservicemesh.io/v1alpha1", + "k8sKind": "MeshConfig", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.9.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/workloads-v0.9.2/meshconfig.osm.meshery.layer5io.schema.json b/templates/oam/workloads/v0.9.2/meshconfig.osm.meshery.layer5io.schema.json similarity index 100% rename from templates/oam/workloads/workloads-v0.9.2/meshconfig.osm.meshery.layer5io.schema.json rename to templates/oam/workloads/v0.9.2/meshconfig.osm.meshery.layer5io.schema.json diff --git a/templates/oam/workloads/workloads-v0.9.2/meshconfig.osm_definition.json b/templates/oam/workloads/v0.9.2/meshconfig.osm_definition.json similarity index 100% rename from templates/oam/workloads/workloads-v0.9.2/meshconfig.osm_definition.json rename to templates/oam/workloads/v0.9.2/meshconfig.osm_definition.json diff --git a/templates/oam/workloads/v0.9.2/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.9.2/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..60d4f7dd --- /dev/null +++ b/templates/oam/workloads/v0.9.2/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "properties": { + "clusters": { + "description": "The clusters the service accounts are hosted on.", + "items": { + "properties": { + "address": { + "description": "a routable IP + port", + "pattern": "^(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3}):[0-9]+$", + "type": "string" + }, + "certificate": { + "description": "mTLS certificates (optional)", + "type": "string" + }, + "name": { + "description": "Name of the remote cluster", + "type": "string" + }, + "priority": { + "description": "Priority of the remote cluster in locality based load balancing", + "minimum": 0, + "type": "integer" + }, + "weight": { + "default": 0, + "description": "Load balancing weight of the remote cluster", + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "address", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "ports": { + "description": "The list of ports that are exposed by this service.", + "items": { + "properties": { + "port": { + "description": "The port that will be exposed by this service.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "default": "TCP", + "description": "The IP protocol for this port. Supports \"TCP\", \"UDP\", and \"SCTP\". Default is TCP.", + "enum": [ + "TCP", + "UDP", + "SCTP" + ], + "type": "string" + } + }, + "required": [ + "port", + "protocol" + ], + "type": "object" + }, + "type": "array" + }, + "serviceAccount": { + "type": "string" + } + }, + "required": [ + "serviceAccount", + "clusters" + ], + "title": "Multi Cluster Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.9.2/multiclusterservice.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.9.2/multiclusterservice.meshery.layer5.io_definition.json new file mode 100755 index 00000000..647afa05 --- /dev/null +++ b/templates/oam/workloads/v0.9.2/multiclusterservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "MultiClusterService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "multiclusterservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.openservicemesh.io/v1alpha1", + "k8sKind": "MultiClusterService", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.9.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.9.2/tcproute.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.9.2/tcproute.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..d0cc9bfe --- /dev/null +++ b/templates/oam/workloads/v0.9.2/tcproute.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,25 @@ +{ + "properties": { + "matches": { + "description": "Match conditions of this route.", + "properties": { + "ports": { + "description": "Port numbers to match TCP traffic.", + "items": { + "type": "integer" + }, + "type": "array" + } + }, + "required": [ + "ports" + ], + "type": "object" + } + }, + "required": [ + "matches" + ], + "title": "TCP Route", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.9.2/tcproute.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.9.2/tcproute.meshery.layer5.io_definition.json new file mode 100755 index 00000000..6a5dc174 --- /dev/null +++ b/templates/oam/workloads/v0.9.2/tcproute.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TCPRoute", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "tcproute.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "specs.smi-spec.io/v1alpha4", + "k8sKind": "TCPRoute", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.9.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/workloads-v0.9.2/tcproute.osm.meshery.layer5io.schema.json b/templates/oam/workloads/v0.9.2/tcproute.osm.meshery.layer5io.schema.json similarity index 100% rename from templates/oam/workloads/workloads-v0.9.2/tcproute.osm.meshery.layer5io.schema.json rename to templates/oam/workloads/v0.9.2/tcproute.osm.meshery.layer5io.schema.json diff --git a/templates/oam/workloads/workloads-v0.9.2/tcproute.osm_definition.json b/templates/oam/workloads/v0.9.2/tcproute.osm_definition.json similarity index 100% rename from templates/oam/workloads/workloads-v0.9.2/tcproute.osm_definition.json rename to templates/oam/workloads/v0.9.2/tcproute.osm_definition.json diff --git a/templates/oam/workloads/v0.9.2/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.9.2/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..13f0a9a2 --- /dev/null +++ b/templates/oam/workloads/v0.9.2/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,59 @@ +{ + "properties": { + "backends": { + "description": "The backend services of this split.", + "items": { + "properties": { + "service": { + "description": "Name of the Kubernetes service.", + "type": "string" + }, + "weight": { + "description": "Traffic weight value of this backend.", + "type": "number" + } + }, + "required": [ + "service", + "weight" + ], + "type": "object" + }, + "type": "array" + }, + "matches": { + "description": "The HTTP route groups that this traffic split should match.", + "items": { + "properties": { + "kind": { + "description": "Kind of the matching group.", + "enum": [ + "HTTPRouteGroup" + ], + "type": "string" + }, + "name": { + "description": "Name of the matching group.", + "type": "string" + } + }, + "required": [ + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "service": { + "description": "The apex service of this split.", + "type": "string" + } + }, + "required": [ + "service", + "backends" + ], + "title": "Traffic Split", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.9.2/trafficsplit.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.9.2/trafficsplit.meshery.layer5.io_definition.json new file mode 100755 index 00000000..e7ede530 --- /dev/null +++ b/templates/oam/workloads/v0.9.2/trafficsplit.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TrafficSplit", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "trafficsplit.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "split.smi-spec.io/v1alpha4", + "k8sKind": "TrafficSplit", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.9.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/workloads-v0.9.2/trafficsplit.osm.meshery.layer5io.schema.json b/templates/oam/workloads/v0.9.2/trafficsplit.osm.meshery.layer5io.schema.json similarity index 100% rename from templates/oam/workloads/workloads-v0.9.2/trafficsplit.osm.meshery.layer5io.schema.json rename to templates/oam/workloads/v0.9.2/trafficsplit.osm.meshery.layer5io.schema.json diff --git a/templates/oam/workloads/workloads-v0.9.2/trafficsplit.osm_definition.json b/templates/oam/workloads/v0.9.2/trafficsplit.osm_definition.json similarity index 100% rename from templates/oam/workloads/workloads-v0.9.2/trafficsplit.osm_definition.json rename to templates/oam/workloads/v0.9.2/trafficsplit.osm_definition.json diff --git a/templates/oam/workloads/v0.9.2/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v0.9.2/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..83a24559 --- /dev/null +++ b/templates/oam/workloads/v0.9.2/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,91 @@ +{ + "properties": { + "destination": { + "description": "The destination of this traffic target.", + "properties": { + "kind": { + "description": "Kind of the destination.", + "type": "string" + }, + "name": { + "description": "Name of the destination.", + "type": "string" + }, + "namespace": { + "description": "Namespace of the destination.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "rules": { + "description": "Specifications of this traffic target.", + "items": { + "properties": { + "kind": { + "description": "Kind of this spec.", + "enum": [ + "HTTPRouteGroup", + "TCPRoute", + "UDPRoute" + ], + "type": "string" + }, + "matches": { + "description": "Match conditions of this spec.", + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "Name of this spec.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources of this traffic target.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "destination", + "rules", + "sources" + ], + "title": "Traffic Target", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v0.9.2/traffictarget.meshery.layer5.io_definition.json b/templates/oam/workloads/v0.9.2/traffictarget.meshery.layer5.io_definition.json new file mode 100755 index 00000000..ec29ed2f --- /dev/null +++ b/templates/oam/workloads/v0.9.2/traffictarget.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TrafficTarget", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "traffictarget.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "access.smi-spec.io/v1alpha3", + "k8sKind": "TrafficTarget", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v0.9.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/workloads-v0.9.2/traffictarget.osm.meshery.layer5io.schema.json b/templates/oam/workloads/v0.9.2/traffictarget.osm.meshery.layer5io.schema.json similarity index 100% rename from templates/oam/workloads/workloads-v0.9.2/traffictarget.osm.meshery.layer5io.schema.json rename to templates/oam/workloads/v0.9.2/traffictarget.osm.meshery.layer5io.schema.json diff --git a/templates/oam/workloads/workloads-v0.9.2/traffictarget.osm_definition.json b/templates/oam/workloads/v0.9.2/traffictarget.osm_definition.json similarity index 100% rename from templates/oam/workloads/workloads-v0.9.2/traffictarget.osm_definition.json rename to templates/oam/workloads/v0.9.2/traffictarget.osm_definition.json diff --git a/templates/oam/workloads/v1.0.0-rc.1/egress.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v1.0.0-rc.1/egress.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..c77de28d --- /dev/null +++ b/templates/oam/workloads/v1.0.0-rc.1/egress.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,103 @@ +{ + "properties": { + "hosts": { + "description": "Hosts that the sources are allowed to direct external traffic to.", + "items": { + "type": "string" + }, + "type": "array" + }, + "ipAddresses": { + "description": "IP address ranges that the sources are allowed to direct external traffic to.", + "items": { + "pattern": "((?:\\d{1,3}\\.){3}\\d{1,3})\\/(\\d{1,2})$", + "type": "string" + }, + "type": "array" + }, + "matches": { + "description": "The resource references an Egress policy should match on.", + "items": { + "properties": { + "apiGroup": { + "description": "API group for the resource being referenced.", + "type": "string" + }, + "kind": { + "description": "Type of resource being referenced.", + "type": "string" + }, + "name": { + "description": "Name of resource being referenced.", + "type": "string" + } + }, + "required": [ + "apiGroup", + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "ports": { + "description": "Ports that the sources are allowed to direct external traffic to.", + "items": { + "properties": { + "number": { + "description": "Port number of this port.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "description": "Protocol served by this port.", + "type": "string" + } + }, + "required": [ + "number", + "protocol" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources the egress policy is applicable to.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "enum": [ + "ServiceAccount" + ], + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "kind", + "name", + "namespace" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "sources", + "ports" + ], + "title": "Egress", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v1.0.0-rc.1/egress.meshery.layer5.io_definition.json b/templates/oam/workloads/v1.0.0-rc.1/egress.meshery.layer5.io_definition.json new file mode 100755 index 00000000..4041656e --- /dev/null +++ b/templates/oam/workloads/v1.0.0-rc.1/egress.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Egress", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "egress.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "policy.openservicemesh.io/v1alpha1", + "k8sKind": "Egress", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v1.0.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v1.0.0-rc.1/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v1.0.0-rc.1/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..6951d46c --- /dev/null +++ b/templates/oam/workloads/v1.0.0-rc.1/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,60 @@ +{ + "properties": { + "matches": { + "description": "Match conditions of this route group.", + "items": { + "properties": { + "headers": { + "description": "Header match conditions of this route.", + "items": { + "additionalProperties": { + "type": "string" + }, + "description": "Header match condition of this route.", + "type": "object" + }, + "type": "array" + }, + "methods": { + "description": "The HTTP methods of this HTTP route.", + "items": { + "description": "The HTTP method of this HTTP route.", + "enum": [ + "*", + "GET", + "HEAD", + "PUT", + "POST", + "DELETE", + "CONNECT", + "OPTIONS", + "TRACE", + "PATCH" + ], + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "Name of the HTTP route.", + "type": "string" + }, + "pathRegex": { + "description": "URI path regex of the HTTP route.", + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "matches" + ], + "title": "HTTP Route Group", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v1.0.0-rc.1/httproutegroup.meshery.layer5.io_definition.json b/templates/oam/workloads/v1.0.0-rc.1/httproutegroup.meshery.layer5.io_definition.json new file mode 100755 index 00000000..dc115578 --- /dev/null +++ b/templates/oam/workloads/v1.0.0-rc.1/httproutegroup.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPRouteGroup", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httproutegroup.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "specs.smi-spec.io/v1alpha4", + "k8sKind": "HTTPRouteGroup", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v1.0.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v1.0.0-rc.1/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v1.0.0-rc.1/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..f5535897 --- /dev/null +++ b/templates/oam/workloads/v1.0.0-rc.1/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,118 @@ +{ + "properties": { + "backends": { + "description": "Backends the IngressBackend policy is applicable to.", + "items": { + "properties": { + "name": { + "description": "Name of the backend.", + "type": "string" + }, + "port": { + "description": "Port of the backend.", + "properties": { + "number": { + "description": "Port number of this port.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "description": "Protocol served by this port.", + "type": "string" + } + }, + "required": [ + "number", + "protocol" + ], + "type": "object" + }, + "tls": { + "description": "TLS configuration for the backend.", + "properties": { + "skipClientCertValidation": { + "description": "Skip client certificate validation.", + "type": "boolean" + }, + "sniHosts": { + "description": "SNI hosts allowed by the backend.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "skipClientCertValidation" + ], + "type": "object" + } + }, + "required": [ + "name", + "port" + ], + "type": "object" + }, + "type": "array" + }, + "matches": { + "description": "The resource references an IngressBackend policy should match on.", + "items": { + "properties": { + "apiGroup": { + "description": "API group for the resource being referenced.", + "type": "string" + }, + "kind": { + "description": "Type of resource being referenced.", + "type": "string" + }, + "name": { + "description": "Name of resource being referenced.", + "type": "string" + } + }, + "required": [ + "apiGroup", + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources the IngressBackend policy is applicable to.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "backends", + "sources" + ], + "title": "Ingress Backend", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v1.0.0-rc.1/ingressbackend.meshery.layer5.io_definition.json b/templates/oam/workloads/v1.0.0-rc.1/ingressbackend.meshery.layer5.io_definition.json new file mode 100755 index 00000000..989c47ea --- /dev/null +++ b/templates/oam/workloads/v1.0.0-rc.1/ingressbackend.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "IngressBackend", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "ingressbackend.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "policy.openservicemesh.io/v1alpha1", + "k8sKind": "IngressBackend", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v1.0.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v1.0.0-rc.1/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v1.0.0-rc.1/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..b607634a --- /dev/null +++ b/templates/oam/workloads/v1.0.0-rc.1/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,264 @@ +{ + "properties": { + "certificate": { + "description": "Configuration for certificate management", + "properties": { + "certKeyBitSize": { + "description": "Sets the certificate key bit size for data plane certificates.", + "type": "integer" + }, + "ingressGateway": { + "description": "Configuration for the ingress gateway's certificate", + "properties": { + "secret": { + "description": "Secret reference to store the certificate in", + "properties": { + "name": { + "description": "Name of the secret", + "type": "string" + }, + "namespace": { + "description": "Namespace of the secret", + "type": "string" + } + }, + "required": [ + "name", + "namespace" + ], + "type": "object" + }, + "subjectAltNames": { + "description": "Subject Alternative Names secured by the certificate", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "validityDuration": { + "description": "Certificate validity duration, represented as a sequence of decimal numbers each with optional fraction and a unit suffix", + "type": "string" + } + }, + "required": [ + "subjectAltNames", + "validityDuration", + "secret" + ], + "type": "object" + }, + "serviceCertValidityDuration": { + "description": "Sets the service certificate validity duration, represented as a sequence of decimal numbers each with optional fraction and a unit suffix.", + "type": "string" + } + }, + "required": [ + "serviceCertValidityDuration", + "certKeyBitSize" + ], + "type": "object" + }, + "featureFlags": { + "description": "OSM feature flags", + "properties": { + "enableAsyncProxyServiceMapping": { + "type": "boolean" + }, + "enableEgressPolicy": { + "type": "boolean" + }, + "enableEnvoyActiveHealthChecks": { + "type": "boolean" + }, + "enableIngressBackendPolicy": { + "type": "boolean" + }, + "enableMulticlusterMode": { + "type": "boolean" + }, + "enableRetryPolicy": { + "type": "boolean" + }, + "enableSnapshotCacheMode": { + "type": "boolean" + }, + "enableWASMStats": { + "type": "boolean" + } + }, + "type": "object" + }, + "observability": { + "description": "Configuration for observing the service mesh, including metrics, logs, tracing etc,.", + "properties": { + "enableDebugServer": { + "description": "Enables a debug endpoint on the osm-controller pod to list information regarding the mesh such as proxy connections, certificates, and SMI policies.", + "type": "boolean" + }, + "osmLogLevel": { + "description": "Allows setting OSM control plane log level at runtime", + "type": "string" + }, + "tracing": { + "description": "Configuration for distributed tracing", + "properties": { + "address": { + "description": "Address of Jaeger tracing deployment, if tracing is enabled.", + "type": "string" + }, + "enable": { + "description": "Enables Jaeger tracing for the mesh.", + "type": "boolean" + }, + "endpoint": { + "description": "Endpoint for tracing data, if tracing is enabled.", + "type": "string" + }, + "port": { + "description": "Port on which tracing is enabled.", + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "sidecar": { + "description": "Configuration for Envoy sidecar", + "properties": { + "configResyncInterval": { + "description": "Resync interval for regular proxy broadcast updates", + "type": "string" + }, + "enablePrivilegedInitContainer": { + "description": "Enables privileged init containers for pods in mesh. When false, init containers only have NET_ADMIN.", + "type": "boolean" + }, + "envoyImage": { + "description": "Image for the Envoy sidecar", + "type": "string" + }, + "envoyWindowsImage": { + "description": "Image for the Envoy sidecar on Windows workers", + "type": "string" + }, + "initContainerImage": { + "description": "Image for the init container", + "type": "string" + }, + "logLevel": { + "description": "Sets the logging verbosity of Envoy proxy sidecar, only applicable to newly created pods joining the mesh.", + "enum": [ + "trace", + "debug", + "info", + "warning", + "warn", + "error", + "critical", + "off" + ], + "type": "string" + }, + "maxDataPlaneConnections": { + "description": "Max allowed data plane sidecar connections", + "type": "integer" + }, + "resources": { + "properties": { + "limits": { + "additionalProperties": true, + "description": "Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/", + "type": "object" + }, + "requests": { + "additionalProperties": true, + "description": "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/", + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "traffic": { + "description": "Configuration for traffic management", + "properties": { + "enableEgress": { + "description": "Enables egress in the mesh", + "type": "boolean" + }, + "enablePermissiveTrafficPolicyMode": { + "description": "True for allowing traffic to flow between client and service pods within the mesh without SMI traffic policies, i.e. no traffic policy enforcement in the mesh. If set to false, enables deny-all traffic policy in mesh i.e. an SMI Traffic Target is necessary for services to communicate.", + "type": "boolean" + }, + "inboundExternalAuthorization": { + "description": "Configures external authorization for inbound and ingress connections.", + "properties": { + "address": { + "description": "Target destination endpoint that will handle external authorization.", + "type": "string" + }, + "enable": { + "description": "Enables/disables the inbound external authorization policy if present.", + "type": "boolean" + }, + "failureModeAllow": { + "description": "Allows specifying if traffic should succeed or fail if the external authorization endpoint fails to respond.", + "type": "boolean" + }, + "port": { + "description": "Remote destination port for the external authorization endpoint.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "statPrefix": { + "default": "inboundExtAuthz", + "description": "String prefix for inbound external authorization related metrics.", + "type": "string" + }, + "timeout": { + "default": "1s", + "description": "Defines the timeout to consider for the remote endpoint to reply in time.", + "type": "string" + } + }, + "type": "object" + }, + "inboundPortExclusionList": { + "description": "Global list of ports to exclude from inbound traffic interception by the sidecar proxy.", + "items": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "type": "array" + }, + "outboundIPRangeExclusionList": { + "description": "Global list of IP address ranges to exclude from outbound traffic interception by the sidecar proxy.", + "items": { + "pattern": "((?:\\d{1,3}\\.){3}\\d{1,3})\\/(\\d{1,2})$", + "type": "string" + }, + "type": "array" + }, + "outboundPortExclusionList": { + "description": "Global list of ports to exclude from outbound traffic interception by the sidecar proxy.", + "items": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "title": "Mesh Config", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v1.0.0-rc.1/meshconfig.meshery.layer5.io_definition.json b/templates/oam/workloads/v1.0.0-rc.1/meshconfig.meshery.layer5.io_definition.json new file mode 100755 index 00000000..c5167a32 --- /dev/null +++ b/templates/oam/workloads/v1.0.0-rc.1/meshconfig.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "MeshConfig", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "meshconfig.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.openservicemesh.io/v1alpha1", + "k8sKind": "MeshConfig", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v1.0.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v1.0.0-rc.1/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v1.0.0-rc.1/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..60d4f7dd --- /dev/null +++ b/templates/oam/workloads/v1.0.0-rc.1/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "properties": { + "clusters": { + "description": "The clusters the service accounts are hosted on.", + "items": { + "properties": { + "address": { + "description": "a routable IP + port", + "pattern": "^(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3}):[0-9]+$", + "type": "string" + }, + "certificate": { + "description": "mTLS certificates (optional)", + "type": "string" + }, + "name": { + "description": "Name of the remote cluster", + "type": "string" + }, + "priority": { + "description": "Priority of the remote cluster in locality based load balancing", + "minimum": 0, + "type": "integer" + }, + "weight": { + "default": 0, + "description": "Load balancing weight of the remote cluster", + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "address", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "ports": { + "description": "The list of ports that are exposed by this service.", + "items": { + "properties": { + "port": { + "description": "The port that will be exposed by this service.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "default": "TCP", + "description": "The IP protocol for this port. Supports \"TCP\", \"UDP\", and \"SCTP\". Default is TCP.", + "enum": [ + "TCP", + "UDP", + "SCTP" + ], + "type": "string" + } + }, + "required": [ + "port", + "protocol" + ], + "type": "object" + }, + "type": "array" + }, + "serviceAccount": { + "type": "string" + } + }, + "required": [ + "serviceAccount", + "clusters" + ], + "title": "Multi Cluster Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v1.0.0-rc.1/multiclusterservice.meshery.layer5.io_definition.json b/templates/oam/workloads/v1.0.0-rc.1/multiclusterservice.meshery.layer5.io_definition.json new file mode 100755 index 00000000..c97a43b8 --- /dev/null +++ b/templates/oam/workloads/v1.0.0-rc.1/multiclusterservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "MultiClusterService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "multiclusterservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.openservicemesh.io/v1alpha1", + "k8sKind": "MultiClusterService", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v1.0.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v1.0.0-rc.1/tcproute.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v1.0.0-rc.1/tcproute.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..d0cc9bfe --- /dev/null +++ b/templates/oam/workloads/v1.0.0-rc.1/tcproute.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,25 @@ +{ + "properties": { + "matches": { + "description": "Match conditions of this route.", + "properties": { + "ports": { + "description": "Port numbers to match TCP traffic.", + "items": { + "type": "integer" + }, + "type": "array" + } + }, + "required": [ + "ports" + ], + "type": "object" + } + }, + "required": [ + "matches" + ], + "title": "TCP Route", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v1.0.0-rc.1/tcproute.meshery.layer5.io_definition.json b/templates/oam/workloads/v1.0.0-rc.1/tcproute.meshery.layer5.io_definition.json new file mode 100755 index 00000000..8357dcd6 --- /dev/null +++ b/templates/oam/workloads/v1.0.0-rc.1/tcproute.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TCPRoute", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "tcproute.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "specs.smi-spec.io/v1alpha4", + "k8sKind": "TCPRoute", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v1.0.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v1.0.0-rc.1/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v1.0.0-rc.1/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..13f0a9a2 --- /dev/null +++ b/templates/oam/workloads/v1.0.0-rc.1/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,59 @@ +{ + "properties": { + "backends": { + "description": "The backend services of this split.", + "items": { + "properties": { + "service": { + "description": "Name of the Kubernetes service.", + "type": "string" + }, + "weight": { + "description": "Traffic weight value of this backend.", + "type": "number" + } + }, + "required": [ + "service", + "weight" + ], + "type": "object" + }, + "type": "array" + }, + "matches": { + "description": "The HTTP route groups that this traffic split should match.", + "items": { + "properties": { + "kind": { + "description": "Kind of the matching group.", + "enum": [ + "HTTPRouteGroup" + ], + "type": "string" + }, + "name": { + "description": "Name of the matching group.", + "type": "string" + } + }, + "required": [ + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "service": { + "description": "The apex service of this split.", + "type": "string" + } + }, + "required": [ + "service", + "backends" + ], + "title": "Traffic Split", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v1.0.0-rc.1/trafficsplit.meshery.layer5.io_definition.json b/templates/oam/workloads/v1.0.0-rc.1/trafficsplit.meshery.layer5.io_definition.json new file mode 100755 index 00000000..a169e64f --- /dev/null +++ b/templates/oam/workloads/v1.0.0-rc.1/trafficsplit.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TrafficSplit", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "trafficsplit.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "split.smi-spec.io/v1alpha4", + "k8sKind": "TrafficSplit", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v1.0.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v1.0.0-rc.1/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v1.0.0-rc.1/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..83a24559 --- /dev/null +++ b/templates/oam/workloads/v1.0.0-rc.1/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,91 @@ +{ + "properties": { + "destination": { + "description": "The destination of this traffic target.", + "properties": { + "kind": { + "description": "Kind of the destination.", + "type": "string" + }, + "name": { + "description": "Name of the destination.", + "type": "string" + }, + "namespace": { + "description": "Namespace of the destination.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "rules": { + "description": "Specifications of this traffic target.", + "items": { + "properties": { + "kind": { + "description": "Kind of this spec.", + "enum": [ + "HTTPRouteGroup", + "TCPRoute", + "UDPRoute" + ], + "type": "string" + }, + "matches": { + "description": "Match conditions of this spec.", + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "Name of this spec.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources of this traffic target.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "destination", + "rules", + "sources" + ], + "title": "Traffic Target", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v1.0.0-rc.1/traffictarget.meshery.layer5.io_definition.json b/templates/oam/workloads/v1.0.0-rc.1/traffictarget.meshery.layer5.io_definition.json new file mode 100755 index 00000000..bcb0d982 --- /dev/null +++ b/templates/oam/workloads/v1.0.0-rc.1/traffictarget.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TrafficTarget", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "traffictarget.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "access.smi-spec.io/v1alpha3", + "k8sKind": "TrafficTarget", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v1.0.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v1.0.0-rc.2/egress.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v1.0.0-rc.2/egress.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..c77de28d --- /dev/null +++ b/templates/oam/workloads/v1.0.0-rc.2/egress.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,103 @@ +{ + "properties": { + "hosts": { + "description": "Hosts that the sources are allowed to direct external traffic to.", + "items": { + "type": "string" + }, + "type": "array" + }, + "ipAddresses": { + "description": "IP address ranges that the sources are allowed to direct external traffic to.", + "items": { + "pattern": "((?:\\d{1,3}\\.){3}\\d{1,3})\\/(\\d{1,2})$", + "type": "string" + }, + "type": "array" + }, + "matches": { + "description": "The resource references an Egress policy should match on.", + "items": { + "properties": { + "apiGroup": { + "description": "API group for the resource being referenced.", + "type": "string" + }, + "kind": { + "description": "Type of resource being referenced.", + "type": "string" + }, + "name": { + "description": "Name of resource being referenced.", + "type": "string" + } + }, + "required": [ + "apiGroup", + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "ports": { + "description": "Ports that the sources are allowed to direct external traffic to.", + "items": { + "properties": { + "number": { + "description": "Port number of this port.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "description": "Protocol served by this port.", + "type": "string" + } + }, + "required": [ + "number", + "protocol" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources the egress policy is applicable to.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "enum": [ + "ServiceAccount" + ], + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "kind", + "name", + "namespace" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "sources", + "ports" + ], + "title": "Egress", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v1.0.0-rc.2/egress.meshery.layer5.io_definition.json b/templates/oam/workloads/v1.0.0-rc.2/egress.meshery.layer5.io_definition.json new file mode 100755 index 00000000..df1eb5c4 --- /dev/null +++ b/templates/oam/workloads/v1.0.0-rc.2/egress.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Egress", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "egress.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "policy.openservicemesh.io/v1alpha1", + "k8sKind": "Egress", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v1.0.0-rc.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v1.0.0-rc.2/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v1.0.0-rc.2/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..6951d46c --- /dev/null +++ b/templates/oam/workloads/v1.0.0-rc.2/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,60 @@ +{ + "properties": { + "matches": { + "description": "Match conditions of this route group.", + "items": { + "properties": { + "headers": { + "description": "Header match conditions of this route.", + "items": { + "additionalProperties": { + "type": "string" + }, + "description": "Header match condition of this route.", + "type": "object" + }, + "type": "array" + }, + "methods": { + "description": "The HTTP methods of this HTTP route.", + "items": { + "description": "The HTTP method of this HTTP route.", + "enum": [ + "*", + "GET", + "HEAD", + "PUT", + "POST", + "DELETE", + "CONNECT", + "OPTIONS", + "TRACE", + "PATCH" + ], + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "Name of the HTTP route.", + "type": "string" + }, + "pathRegex": { + "description": "URI path regex of the HTTP route.", + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "matches" + ], + "title": "HTTP Route Group", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v1.0.0-rc.2/httproutegroup.meshery.layer5.io_definition.json b/templates/oam/workloads/v1.0.0-rc.2/httproutegroup.meshery.layer5.io_definition.json new file mode 100755 index 00000000..018ef784 --- /dev/null +++ b/templates/oam/workloads/v1.0.0-rc.2/httproutegroup.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPRouteGroup", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httproutegroup.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "specs.smi-spec.io/v1alpha4", + "k8sKind": "HTTPRouteGroup", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v1.0.0-rc.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v1.0.0-rc.2/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v1.0.0-rc.2/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..f5535897 --- /dev/null +++ b/templates/oam/workloads/v1.0.0-rc.2/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,118 @@ +{ + "properties": { + "backends": { + "description": "Backends the IngressBackend policy is applicable to.", + "items": { + "properties": { + "name": { + "description": "Name of the backend.", + "type": "string" + }, + "port": { + "description": "Port of the backend.", + "properties": { + "number": { + "description": "Port number of this port.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "description": "Protocol served by this port.", + "type": "string" + } + }, + "required": [ + "number", + "protocol" + ], + "type": "object" + }, + "tls": { + "description": "TLS configuration for the backend.", + "properties": { + "skipClientCertValidation": { + "description": "Skip client certificate validation.", + "type": "boolean" + }, + "sniHosts": { + "description": "SNI hosts allowed by the backend.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "skipClientCertValidation" + ], + "type": "object" + } + }, + "required": [ + "name", + "port" + ], + "type": "object" + }, + "type": "array" + }, + "matches": { + "description": "The resource references an IngressBackend policy should match on.", + "items": { + "properties": { + "apiGroup": { + "description": "API group for the resource being referenced.", + "type": "string" + }, + "kind": { + "description": "Type of resource being referenced.", + "type": "string" + }, + "name": { + "description": "Name of resource being referenced.", + "type": "string" + } + }, + "required": [ + "apiGroup", + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources the IngressBackend policy is applicable to.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "backends", + "sources" + ], + "title": "Ingress Backend", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v1.0.0-rc.2/ingressbackend.meshery.layer5.io_definition.json b/templates/oam/workloads/v1.0.0-rc.2/ingressbackend.meshery.layer5.io_definition.json new file mode 100755 index 00000000..bd37350d --- /dev/null +++ b/templates/oam/workloads/v1.0.0-rc.2/ingressbackend.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "IngressBackend", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "ingressbackend.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "policy.openservicemesh.io/v1alpha1", + "k8sKind": "IngressBackend", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v1.0.0-rc.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v1.0.0-rc.2/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v1.0.0-rc.2/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..b607634a --- /dev/null +++ b/templates/oam/workloads/v1.0.0-rc.2/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,264 @@ +{ + "properties": { + "certificate": { + "description": "Configuration for certificate management", + "properties": { + "certKeyBitSize": { + "description": "Sets the certificate key bit size for data plane certificates.", + "type": "integer" + }, + "ingressGateway": { + "description": "Configuration for the ingress gateway's certificate", + "properties": { + "secret": { + "description": "Secret reference to store the certificate in", + "properties": { + "name": { + "description": "Name of the secret", + "type": "string" + }, + "namespace": { + "description": "Namespace of the secret", + "type": "string" + } + }, + "required": [ + "name", + "namespace" + ], + "type": "object" + }, + "subjectAltNames": { + "description": "Subject Alternative Names secured by the certificate", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "validityDuration": { + "description": "Certificate validity duration, represented as a sequence of decimal numbers each with optional fraction and a unit suffix", + "type": "string" + } + }, + "required": [ + "subjectAltNames", + "validityDuration", + "secret" + ], + "type": "object" + }, + "serviceCertValidityDuration": { + "description": "Sets the service certificate validity duration, represented as a sequence of decimal numbers each with optional fraction and a unit suffix.", + "type": "string" + } + }, + "required": [ + "serviceCertValidityDuration", + "certKeyBitSize" + ], + "type": "object" + }, + "featureFlags": { + "description": "OSM feature flags", + "properties": { + "enableAsyncProxyServiceMapping": { + "type": "boolean" + }, + "enableEgressPolicy": { + "type": "boolean" + }, + "enableEnvoyActiveHealthChecks": { + "type": "boolean" + }, + "enableIngressBackendPolicy": { + "type": "boolean" + }, + "enableMulticlusterMode": { + "type": "boolean" + }, + "enableRetryPolicy": { + "type": "boolean" + }, + "enableSnapshotCacheMode": { + "type": "boolean" + }, + "enableWASMStats": { + "type": "boolean" + } + }, + "type": "object" + }, + "observability": { + "description": "Configuration for observing the service mesh, including metrics, logs, tracing etc,.", + "properties": { + "enableDebugServer": { + "description": "Enables a debug endpoint on the osm-controller pod to list information regarding the mesh such as proxy connections, certificates, and SMI policies.", + "type": "boolean" + }, + "osmLogLevel": { + "description": "Allows setting OSM control plane log level at runtime", + "type": "string" + }, + "tracing": { + "description": "Configuration for distributed tracing", + "properties": { + "address": { + "description": "Address of Jaeger tracing deployment, if tracing is enabled.", + "type": "string" + }, + "enable": { + "description": "Enables Jaeger tracing for the mesh.", + "type": "boolean" + }, + "endpoint": { + "description": "Endpoint for tracing data, if tracing is enabled.", + "type": "string" + }, + "port": { + "description": "Port on which tracing is enabled.", + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "sidecar": { + "description": "Configuration for Envoy sidecar", + "properties": { + "configResyncInterval": { + "description": "Resync interval for regular proxy broadcast updates", + "type": "string" + }, + "enablePrivilegedInitContainer": { + "description": "Enables privileged init containers for pods in mesh. When false, init containers only have NET_ADMIN.", + "type": "boolean" + }, + "envoyImage": { + "description": "Image for the Envoy sidecar", + "type": "string" + }, + "envoyWindowsImage": { + "description": "Image for the Envoy sidecar on Windows workers", + "type": "string" + }, + "initContainerImage": { + "description": "Image for the init container", + "type": "string" + }, + "logLevel": { + "description": "Sets the logging verbosity of Envoy proxy sidecar, only applicable to newly created pods joining the mesh.", + "enum": [ + "trace", + "debug", + "info", + "warning", + "warn", + "error", + "critical", + "off" + ], + "type": "string" + }, + "maxDataPlaneConnections": { + "description": "Max allowed data plane sidecar connections", + "type": "integer" + }, + "resources": { + "properties": { + "limits": { + "additionalProperties": true, + "description": "Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/", + "type": "object" + }, + "requests": { + "additionalProperties": true, + "description": "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/", + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "traffic": { + "description": "Configuration for traffic management", + "properties": { + "enableEgress": { + "description": "Enables egress in the mesh", + "type": "boolean" + }, + "enablePermissiveTrafficPolicyMode": { + "description": "True for allowing traffic to flow between client and service pods within the mesh without SMI traffic policies, i.e. no traffic policy enforcement in the mesh. If set to false, enables deny-all traffic policy in mesh i.e. an SMI Traffic Target is necessary for services to communicate.", + "type": "boolean" + }, + "inboundExternalAuthorization": { + "description": "Configures external authorization for inbound and ingress connections.", + "properties": { + "address": { + "description": "Target destination endpoint that will handle external authorization.", + "type": "string" + }, + "enable": { + "description": "Enables/disables the inbound external authorization policy if present.", + "type": "boolean" + }, + "failureModeAllow": { + "description": "Allows specifying if traffic should succeed or fail if the external authorization endpoint fails to respond.", + "type": "boolean" + }, + "port": { + "description": "Remote destination port for the external authorization endpoint.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "statPrefix": { + "default": "inboundExtAuthz", + "description": "String prefix for inbound external authorization related metrics.", + "type": "string" + }, + "timeout": { + "default": "1s", + "description": "Defines the timeout to consider for the remote endpoint to reply in time.", + "type": "string" + } + }, + "type": "object" + }, + "inboundPortExclusionList": { + "description": "Global list of ports to exclude from inbound traffic interception by the sidecar proxy.", + "items": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "type": "array" + }, + "outboundIPRangeExclusionList": { + "description": "Global list of IP address ranges to exclude from outbound traffic interception by the sidecar proxy.", + "items": { + "pattern": "((?:\\d{1,3}\\.){3}\\d{1,3})\\/(\\d{1,2})$", + "type": "string" + }, + "type": "array" + }, + "outboundPortExclusionList": { + "description": "Global list of ports to exclude from outbound traffic interception by the sidecar proxy.", + "items": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "title": "Mesh Config", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v1.0.0-rc.2/meshconfig.meshery.layer5.io_definition.json b/templates/oam/workloads/v1.0.0-rc.2/meshconfig.meshery.layer5.io_definition.json new file mode 100755 index 00000000..8594477e --- /dev/null +++ b/templates/oam/workloads/v1.0.0-rc.2/meshconfig.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "MeshConfig", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "meshconfig.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.openservicemesh.io/v1alpha1", + "k8sKind": "MeshConfig", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v1.0.0-rc.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v1.0.0-rc.2/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v1.0.0-rc.2/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..60d4f7dd --- /dev/null +++ b/templates/oam/workloads/v1.0.0-rc.2/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "properties": { + "clusters": { + "description": "The clusters the service accounts are hosted on.", + "items": { + "properties": { + "address": { + "description": "a routable IP + port", + "pattern": "^(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3}):[0-9]+$", + "type": "string" + }, + "certificate": { + "description": "mTLS certificates (optional)", + "type": "string" + }, + "name": { + "description": "Name of the remote cluster", + "type": "string" + }, + "priority": { + "description": "Priority of the remote cluster in locality based load balancing", + "minimum": 0, + "type": "integer" + }, + "weight": { + "default": 0, + "description": "Load balancing weight of the remote cluster", + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "address", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "ports": { + "description": "The list of ports that are exposed by this service.", + "items": { + "properties": { + "port": { + "description": "The port that will be exposed by this service.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "default": "TCP", + "description": "The IP protocol for this port. Supports \"TCP\", \"UDP\", and \"SCTP\". Default is TCP.", + "enum": [ + "TCP", + "UDP", + "SCTP" + ], + "type": "string" + } + }, + "required": [ + "port", + "protocol" + ], + "type": "object" + }, + "type": "array" + }, + "serviceAccount": { + "type": "string" + } + }, + "required": [ + "serviceAccount", + "clusters" + ], + "title": "Multi Cluster Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v1.0.0-rc.2/multiclusterservice.meshery.layer5.io_definition.json b/templates/oam/workloads/v1.0.0-rc.2/multiclusterservice.meshery.layer5.io_definition.json new file mode 100755 index 00000000..ed26998c --- /dev/null +++ b/templates/oam/workloads/v1.0.0-rc.2/multiclusterservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "MultiClusterService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "multiclusterservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.openservicemesh.io/v1alpha1", + "k8sKind": "MultiClusterService", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v1.0.0-rc.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v1.0.0-rc.2/tcproute.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v1.0.0-rc.2/tcproute.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..d0cc9bfe --- /dev/null +++ b/templates/oam/workloads/v1.0.0-rc.2/tcproute.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,25 @@ +{ + "properties": { + "matches": { + "description": "Match conditions of this route.", + "properties": { + "ports": { + "description": "Port numbers to match TCP traffic.", + "items": { + "type": "integer" + }, + "type": "array" + } + }, + "required": [ + "ports" + ], + "type": "object" + } + }, + "required": [ + "matches" + ], + "title": "TCP Route", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v1.0.0-rc.2/tcproute.meshery.layer5.io_definition.json b/templates/oam/workloads/v1.0.0-rc.2/tcproute.meshery.layer5.io_definition.json new file mode 100755 index 00000000..92625701 --- /dev/null +++ b/templates/oam/workloads/v1.0.0-rc.2/tcproute.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TCPRoute", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "tcproute.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "specs.smi-spec.io/v1alpha4", + "k8sKind": "TCPRoute", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v1.0.0-rc.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v1.0.0-rc.2/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v1.0.0-rc.2/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..13f0a9a2 --- /dev/null +++ b/templates/oam/workloads/v1.0.0-rc.2/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,59 @@ +{ + "properties": { + "backends": { + "description": "The backend services of this split.", + "items": { + "properties": { + "service": { + "description": "Name of the Kubernetes service.", + "type": "string" + }, + "weight": { + "description": "Traffic weight value of this backend.", + "type": "number" + } + }, + "required": [ + "service", + "weight" + ], + "type": "object" + }, + "type": "array" + }, + "matches": { + "description": "The HTTP route groups that this traffic split should match.", + "items": { + "properties": { + "kind": { + "description": "Kind of the matching group.", + "enum": [ + "HTTPRouteGroup" + ], + "type": "string" + }, + "name": { + "description": "Name of the matching group.", + "type": "string" + } + }, + "required": [ + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "service": { + "description": "The apex service of this split.", + "type": "string" + } + }, + "required": [ + "service", + "backends" + ], + "title": "Traffic Split", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v1.0.0-rc.2/trafficsplit.meshery.layer5.io_definition.json b/templates/oam/workloads/v1.0.0-rc.2/trafficsplit.meshery.layer5.io_definition.json new file mode 100755 index 00000000..8e84598b --- /dev/null +++ b/templates/oam/workloads/v1.0.0-rc.2/trafficsplit.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TrafficSplit", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "trafficsplit.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "split.smi-spec.io/v1alpha4", + "k8sKind": "TrafficSplit", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v1.0.0-rc.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v1.0.0-rc.2/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v1.0.0-rc.2/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..83a24559 --- /dev/null +++ b/templates/oam/workloads/v1.0.0-rc.2/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,91 @@ +{ + "properties": { + "destination": { + "description": "The destination of this traffic target.", + "properties": { + "kind": { + "description": "Kind of the destination.", + "type": "string" + }, + "name": { + "description": "Name of the destination.", + "type": "string" + }, + "namespace": { + "description": "Namespace of the destination.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "rules": { + "description": "Specifications of this traffic target.", + "items": { + "properties": { + "kind": { + "description": "Kind of this spec.", + "enum": [ + "HTTPRouteGroup", + "TCPRoute", + "UDPRoute" + ], + "type": "string" + }, + "matches": { + "description": "Match conditions of this spec.", + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "Name of this spec.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources of this traffic target.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "destination", + "rules", + "sources" + ], + "title": "Traffic Target", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v1.0.0-rc.2/traffictarget.meshery.layer5.io_definition.json b/templates/oam/workloads/v1.0.0-rc.2/traffictarget.meshery.layer5.io_definition.json new file mode 100755 index 00000000..8f173f5b --- /dev/null +++ b/templates/oam/workloads/v1.0.0-rc.2/traffictarget.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TrafficTarget", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "traffictarget.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "access.smi-spec.io/v1alpha3", + "k8sKind": "TrafficTarget", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v1.0.0-rc.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v1.0.0-rc.3/egress.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v1.0.0-rc.3/egress.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..c77de28d --- /dev/null +++ b/templates/oam/workloads/v1.0.0-rc.3/egress.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,103 @@ +{ + "properties": { + "hosts": { + "description": "Hosts that the sources are allowed to direct external traffic to.", + "items": { + "type": "string" + }, + "type": "array" + }, + "ipAddresses": { + "description": "IP address ranges that the sources are allowed to direct external traffic to.", + "items": { + "pattern": "((?:\\d{1,3}\\.){3}\\d{1,3})\\/(\\d{1,2})$", + "type": "string" + }, + "type": "array" + }, + "matches": { + "description": "The resource references an Egress policy should match on.", + "items": { + "properties": { + "apiGroup": { + "description": "API group for the resource being referenced.", + "type": "string" + }, + "kind": { + "description": "Type of resource being referenced.", + "type": "string" + }, + "name": { + "description": "Name of resource being referenced.", + "type": "string" + } + }, + "required": [ + "apiGroup", + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "ports": { + "description": "Ports that the sources are allowed to direct external traffic to.", + "items": { + "properties": { + "number": { + "description": "Port number of this port.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "description": "Protocol served by this port.", + "type": "string" + } + }, + "required": [ + "number", + "protocol" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources the egress policy is applicable to.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "enum": [ + "ServiceAccount" + ], + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "kind", + "name", + "namespace" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "sources", + "ports" + ], + "title": "Egress", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v1.0.0-rc.3/egress.meshery.layer5.io_definition.json b/templates/oam/workloads/v1.0.0-rc.3/egress.meshery.layer5.io_definition.json new file mode 100755 index 00000000..d0eebdf0 --- /dev/null +++ b/templates/oam/workloads/v1.0.0-rc.3/egress.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Egress", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "egress.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "policy.openservicemesh.io/v1alpha1", + "k8sKind": "Egress", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v1.0.0-rc.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v1.0.0-rc.3/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v1.0.0-rc.3/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..6951d46c --- /dev/null +++ b/templates/oam/workloads/v1.0.0-rc.3/httproutegroup.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,60 @@ +{ + "properties": { + "matches": { + "description": "Match conditions of this route group.", + "items": { + "properties": { + "headers": { + "description": "Header match conditions of this route.", + "items": { + "additionalProperties": { + "type": "string" + }, + "description": "Header match condition of this route.", + "type": "object" + }, + "type": "array" + }, + "methods": { + "description": "The HTTP methods of this HTTP route.", + "items": { + "description": "The HTTP method of this HTTP route.", + "enum": [ + "*", + "GET", + "HEAD", + "PUT", + "POST", + "DELETE", + "CONNECT", + "OPTIONS", + "TRACE", + "PATCH" + ], + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "Name of the HTTP route.", + "type": "string" + }, + "pathRegex": { + "description": "URI path regex of the HTTP route.", + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "matches" + ], + "title": "HTTP Route Group", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v1.0.0-rc.3/httproutegroup.meshery.layer5.io_definition.json b/templates/oam/workloads/v1.0.0-rc.3/httproutegroup.meshery.layer5.io_definition.json new file mode 100755 index 00000000..fa8b25be --- /dev/null +++ b/templates/oam/workloads/v1.0.0-rc.3/httproutegroup.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPRouteGroup", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httproutegroup.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "specs.smi-spec.io/v1alpha4", + "k8sKind": "HTTPRouteGroup", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v1.0.0-rc.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v1.0.0-rc.3/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v1.0.0-rc.3/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..f5535897 --- /dev/null +++ b/templates/oam/workloads/v1.0.0-rc.3/ingressbackend.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,118 @@ +{ + "properties": { + "backends": { + "description": "Backends the IngressBackend policy is applicable to.", + "items": { + "properties": { + "name": { + "description": "Name of the backend.", + "type": "string" + }, + "port": { + "description": "Port of the backend.", + "properties": { + "number": { + "description": "Port number of this port.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "description": "Protocol served by this port.", + "type": "string" + } + }, + "required": [ + "number", + "protocol" + ], + "type": "object" + }, + "tls": { + "description": "TLS configuration for the backend.", + "properties": { + "skipClientCertValidation": { + "description": "Skip client certificate validation.", + "type": "boolean" + }, + "sniHosts": { + "description": "SNI hosts allowed by the backend.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "skipClientCertValidation" + ], + "type": "object" + } + }, + "required": [ + "name", + "port" + ], + "type": "object" + }, + "type": "array" + }, + "matches": { + "description": "The resource references an IngressBackend policy should match on.", + "items": { + "properties": { + "apiGroup": { + "description": "API group for the resource being referenced.", + "type": "string" + }, + "kind": { + "description": "Type of resource being referenced.", + "type": "string" + }, + "name": { + "description": "Name of resource being referenced.", + "type": "string" + } + }, + "required": [ + "apiGroup", + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources the IngressBackend policy is applicable to.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "backends", + "sources" + ], + "title": "Ingress Backend", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v1.0.0-rc.3/ingressbackend.meshery.layer5.io_definition.json b/templates/oam/workloads/v1.0.0-rc.3/ingressbackend.meshery.layer5.io_definition.json new file mode 100755 index 00000000..d81fa44d --- /dev/null +++ b/templates/oam/workloads/v1.0.0-rc.3/ingressbackend.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "IngressBackend", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "ingressbackend.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "policy.openservicemesh.io/v1alpha1", + "k8sKind": "IngressBackend", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v1.0.0-rc.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v1.0.0-rc.3/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v1.0.0-rc.3/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..b607634a --- /dev/null +++ b/templates/oam/workloads/v1.0.0-rc.3/meshconfig.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,264 @@ +{ + "properties": { + "certificate": { + "description": "Configuration for certificate management", + "properties": { + "certKeyBitSize": { + "description": "Sets the certificate key bit size for data plane certificates.", + "type": "integer" + }, + "ingressGateway": { + "description": "Configuration for the ingress gateway's certificate", + "properties": { + "secret": { + "description": "Secret reference to store the certificate in", + "properties": { + "name": { + "description": "Name of the secret", + "type": "string" + }, + "namespace": { + "description": "Namespace of the secret", + "type": "string" + } + }, + "required": [ + "name", + "namespace" + ], + "type": "object" + }, + "subjectAltNames": { + "description": "Subject Alternative Names secured by the certificate", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "validityDuration": { + "description": "Certificate validity duration, represented as a sequence of decimal numbers each with optional fraction and a unit suffix", + "type": "string" + } + }, + "required": [ + "subjectAltNames", + "validityDuration", + "secret" + ], + "type": "object" + }, + "serviceCertValidityDuration": { + "description": "Sets the service certificate validity duration, represented as a sequence of decimal numbers each with optional fraction and a unit suffix.", + "type": "string" + } + }, + "required": [ + "serviceCertValidityDuration", + "certKeyBitSize" + ], + "type": "object" + }, + "featureFlags": { + "description": "OSM feature flags", + "properties": { + "enableAsyncProxyServiceMapping": { + "type": "boolean" + }, + "enableEgressPolicy": { + "type": "boolean" + }, + "enableEnvoyActiveHealthChecks": { + "type": "boolean" + }, + "enableIngressBackendPolicy": { + "type": "boolean" + }, + "enableMulticlusterMode": { + "type": "boolean" + }, + "enableRetryPolicy": { + "type": "boolean" + }, + "enableSnapshotCacheMode": { + "type": "boolean" + }, + "enableWASMStats": { + "type": "boolean" + } + }, + "type": "object" + }, + "observability": { + "description": "Configuration for observing the service mesh, including metrics, logs, tracing etc,.", + "properties": { + "enableDebugServer": { + "description": "Enables a debug endpoint on the osm-controller pod to list information regarding the mesh such as proxy connections, certificates, and SMI policies.", + "type": "boolean" + }, + "osmLogLevel": { + "description": "Allows setting OSM control plane log level at runtime", + "type": "string" + }, + "tracing": { + "description": "Configuration for distributed tracing", + "properties": { + "address": { + "description": "Address of Jaeger tracing deployment, if tracing is enabled.", + "type": "string" + }, + "enable": { + "description": "Enables Jaeger tracing for the mesh.", + "type": "boolean" + }, + "endpoint": { + "description": "Endpoint for tracing data, if tracing is enabled.", + "type": "string" + }, + "port": { + "description": "Port on which tracing is enabled.", + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "sidecar": { + "description": "Configuration for Envoy sidecar", + "properties": { + "configResyncInterval": { + "description": "Resync interval for regular proxy broadcast updates", + "type": "string" + }, + "enablePrivilegedInitContainer": { + "description": "Enables privileged init containers for pods in mesh. When false, init containers only have NET_ADMIN.", + "type": "boolean" + }, + "envoyImage": { + "description": "Image for the Envoy sidecar", + "type": "string" + }, + "envoyWindowsImage": { + "description": "Image for the Envoy sidecar on Windows workers", + "type": "string" + }, + "initContainerImage": { + "description": "Image for the init container", + "type": "string" + }, + "logLevel": { + "description": "Sets the logging verbosity of Envoy proxy sidecar, only applicable to newly created pods joining the mesh.", + "enum": [ + "trace", + "debug", + "info", + "warning", + "warn", + "error", + "critical", + "off" + ], + "type": "string" + }, + "maxDataPlaneConnections": { + "description": "Max allowed data plane sidecar connections", + "type": "integer" + }, + "resources": { + "properties": { + "limits": { + "additionalProperties": true, + "description": "Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/", + "type": "object" + }, + "requests": { + "additionalProperties": true, + "description": "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/", + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "traffic": { + "description": "Configuration for traffic management", + "properties": { + "enableEgress": { + "description": "Enables egress in the mesh", + "type": "boolean" + }, + "enablePermissiveTrafficPolicyMode": { + "description": "True for allowing traffic to flow between client and service pods within the mesh without SMI traffic policies, i.e. no traffic policy enforcement in the mesh. If set to false, enables deny-all traffic policy in mesh i.e. an SMI Traffic Target is necessary for services to communicate.", + "type": "boolean" + }, + "inboundExternalAuthorization": { + "description": "Configures external authorization for inbound and ingress connections.", + "properties": { + "address": { + "description": "Target destination endpoint that will handle external authorization.", + "type": "string" + }, + "enable": { + "description": "Enables/disables the inbound external authorization policy if present.", + "type": "boolean" + }, + "failureModeAllow": { + "description": "Allows specifying if traffic should succeed or fail if the external authorization endpoint fails to respond.", + "type": "boolean" + }, + "port": { + "description": "Remote destination port for the external authorization endpoint.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "statPrefix": { + "default": "inboundExtAuthz", + "description": "String prefix for inbound external authorization related metrics.", + "type": "string" + }, + "timeout": { + "default": "1s", + "description": "Defines the timeout to consider for the remote endpoint to reply in time.", + "type": "string" + } + }, + "type": "object" + }, + "inboundPortExclusionList": { + "description": "Global list of ports to exclude from inbound traffic interception by the sidecar proxy.", + "items": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "type": "array" + }, + "outboundIPRangeExclusionList": { + "description": "Global list of IP address ranges to exclude from outbound traffic interception by the sidecar proxy.", + "items": { + "pattern": "((?:\\d{1,3}\\.){3}\\d{1,3})\\/(\\d{1,2})$", + "type": "string" + }, + "type": "array" + }, + "outboundPortExclusionList": { + "description": "Global list of ports to exclude from outbound traffic interception by the sidecar proxy.", + "items": { + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "title": "Mesh Config", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v1.0.0-rc.3/meshconfig.meshery.layer5.io_definition.json b/templates/oam/workloads/v1.0.0-rc.3/meshconfig.meshery.layer5.io_definition.json new file mode 100755 index 00000000..31a41a7a --- /dev/null +++ b/templates/oam/workloads/v1.0.0-rc.3/meshconfig.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "MeshConfig", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "meshconfig.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.openservicemesh.io/v1alpha1", + "k8sKind": "MeshConfig", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v1.0.0-rc.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v1.0.0-rc.3/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v1.0.0-rc.3/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..60d4f7dd --- /dev/null +++ b/templates/oam/workloads/v1.0.0-rc.3/multiclusterservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "properties": { + "clusters": { + "description": "The clusters the service accounts are hosted on.", + "items": { + "properties": { + "address": { + "description": "a routable IP + port", + "pattern": "^(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3}):[0-9]+$", + "type": "string" + }, + "certificate": { + "description": "mTLS certificates (optional)", + "type": "string" + }, + "name": { + "description": "Name of the remote cluster", + "type": "string" + }, + "priority": { + "description": "Priority of the remote cluster in locality based load balancing", + "minimum": 0, + "type": "integer" + }, + "weight": { + "default": 0, + "description": "Load balancing weight of the remote cluster", + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "address", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "ports": { + "description": "The list of ports that are exposed by this service.", + "items": { + "properties": { + "port": { + "description": "The port that will be exposed by this service.", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "protocol": { + "default": "TCP", + "description": "The IP protocol for this port. Supports \"TCP\", \"UDP\", and \"SCTP\". Default is TCP.", + "enum": [ + "TCP", + "UDP", + "SCTP" + ], + "type": "string" + } + }, + "required": [ + "port", + "protocol" + ], + "type": "object" + }, + "type": "array" + }, + "serviceAccount": { + "type": "string" + } + }, + "required": [ + "serviceAccount", + "clusters" + ], + "title": "Multi Cluster Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v1.0.0-rc.3/multiclusterservice.meshery.layer5.io_definition.json b/templates/oam/workloads/v1.0.0-rc.3/multiclusterservice.meshery.layer5.io_definition.json new file mode 100755 index 00000000..50da519b --- /dev/null +++ b/templates/oam/workloads/v1.0.0-rc.3/multiclusterservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "MultiClusterService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "multiclusterservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.openservicemesh.io/v1alpha1", + "k8sKind": "MultiClusterService", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v1.0.0-rc.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v1.0.0-rc.3/tcproute.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v1.0.0-rc.3/tcproute.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..d0cc9bfe --- /dev/null +++ b/templates/oam/workloads/v1.0.0-rc.3/tcproute.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,25 @@ +{ + "properties": { + "matches": { + "description": "Match conditions of this route.", + "properties": { + "ports": { + "description": "Port numbers to match TCP traffic.", + "items": { + "type": "integer" + }, + "type": "array" + } + }, + "required": [ + "ports" + ], + "type": "object" + } + }, + "required": [ + "matches" + ], + "title": "TCP Route", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v1.0.0-rc.3/tcproute.meshery.layer5.io_definition.json b/templates/oam/workloads/v1.0.0-rc.3/tcproute.meshery.layer5.io_definition.json new file mode 100755 index 00000000..51d86656 --- /dev/null +++ b/templates/oam/workloads/v1.0.0-rc.3/tcproute.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TCPRoute", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "tcproute.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "specs.smi-spec.io/v1alpha4", + "k8sKind": "TCPRoute", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v1.0.0-rc.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v1.0.0-rc.3/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v1.0.0-rc.3/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..13f0a9a2 --- /dev/null +++ b/templates/oam/workloads/v1.0.0-rc.3/trafficsplit.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,59 @@ +{ + "properties": { + "backends": { + "description": "The backend services of this split.", + "items": { + "properties": { + "service": { + "description": "Name of the Kubernetes service.", + "type": "string" + }, + "weight": { + "description": "Traffic weight value of this backend.", + "type": "number" + } + }, + "required": [ + "service", + "weight" + ], + "type": "object" + }, + "type": "array" + }, + "matches": { + "description": "The HTTP route groups that this traffic split should match.", + "items": { + "properties": { + "kind": { + "description": "Kind of the matching group.", + "enum": [ + "HTTPRouteGroup" + ], + "type": "string" + }, + "name": { + "description": "Name of the matching group.", + "type": "string" + } + }, + "required": [ + "kind", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "service": { + "description": "The apex service of this split.", + "type": "string" + } + }, + "required": [ + "service", + "backends" + ], + "title": "Traffic Split", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v1.0.0-rc.3/trafficsplit.meshery.layer5.io_definition.json b/templates/oam/workloads/v1.0.0-rc.3/trafficsplit.meshery.layer5.io_definition.json new file mode 100755 index 00000000..02614042 --- /dev/null +++ b/templates/oam/workloads/v1.0.0-rc.3/trafficsplit.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TrafficSplit", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "trafficsplit.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "split.smi-spec.io/v1alpha4", + "k8sKind": "TrafficSplit", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v1.0.0-rc.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/v1.0.0-rc.3/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/v1.0.0-rc.3/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 00000000..83a24559 --- /dev/null +++ b/templates/oam/workloads/v1.0.0-rc.3/traffictarget.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,91 @@ +{ + "properties": { + "destination": { + "description": "The destination of this traffic target.", + "properties": { + "kind": { + "description": "Kind of the destination.", + "type": "string" + }, + "name": { + "description": "Name of the destination.", + "type": "string" + }, + "namespace": { + "description": "Namespace of the destination.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "rules": { + "description": "Specifications of this traffic target.", + "items": { + "properties": { + "kind": { + "description": "Kind of this spec.", + "enum": [ + "HTTPRouteGroup", + "TCPRoute", + "UDPRoute" + ], + "type": "string" + }, + "matches": { + "description": "Match conditions of this spec.", + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "Name of this spec.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "description": "Sources of this traffic target.", + "items": { + "properties": { + "kind": { + "description": "Kind of this source.", + "type": "string" + }, + "name": { + "description": "Name of this source.", + "type": "string" + }, + "namespace": { + "description": "Namespace of this source.", + "type": "string" + } + }, + "required": [ + "name", + "kind" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "destination", + "rules", + "sources" + ], + "title": "Traffic Target", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/v1.0.0-rc.3/traffictarget.meshery.layer5.io_definition.json b/templates/oam/workloads/v1.0.0-rc.3/traffictarget.meshery.layer5.io_definition.json new file mode 100755 index 00000000..19deaad3 --- /dev/null +++ b/templates/oam/workloads/v1.0.0-rc.3/traffictarget.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "TrafficTarget", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "traffictarget.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "access.smi-spec.io/v1alpha3", + "k8sKind": "TrafficTarget", + "meshName": "OPEN_SERVICE_MESH", + "meshVersion": "v1.0.0-rc.3" + } + } +} \ No newline at end of file