config

package
v0.8.26 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 3, 2025 License: Apache-2.0 Imports: 18 Imported by: 0

Documentation

Index

Constants

View Source
const (
	ServerKey         = "server-config"
	PipelineNameKey   = "meshsync-pipeline"
	ResourcesKey      = "resources"
	GlobalResourceKey = "global"
	LocalResourceKey  = "local"
	ListenersKey      = "listeners"
	LogStreamsKey     = "log-streams"
	BrokerURL         = "broker-url"
	RequestStream     = "request-stream"
	LogStream         = "log-stream"
	ExecShell         = "exec-shell"
	InformerStore     = "informer-store"
	OutputModeBroker  = "broker"
	OutputModeFile    = "file"
)
View Source
const (
	ErrInitConfigCode = "1000"
)

Variables

View Source
var (
	Server = map[string]string{
		"name":      "meshery-meshsync",
		"port":      "11000",
		"version":   "latest",
		"startedat": time.Now().String(),
	}

	DefaultPublishingSubject = "meshery.meshsync.core"

	Pipelines = map[string]PipelineConfigs{
		GlobalResourceKey: []PipelineConfig{

			{
				Name:      "namespaces.v1.",
				PublishTo: DefaultPublishingSubject,
			},
			{
				Name:      "configmaps.v1.",
				PublishTo: "meshery.meshsync.core",
			},
			{
				Name:      "nodes.v1.",
				PublishTo: "meshery.meshsync.core",
			},
			{
				Name:      "secrets.v1.",
				PublishTo: "meshery.meshsync.core",
			},
			{
				Name:      "persistentvolumes.v1.",
				PublishTo: "meshery.meshsync.core",
			},
			{
				Name:      "persistentvolumeclaims.v1.",
				PublishTo: "meshery.meshsync.core",
			},
		},
		LocalResourceKey: []PipelineConfig{

			{
				Name:      "replicasets.v1.apps",
				PublishTo: DefaultPublishingSubject,
			},
			{
				Name:      "pods.v1.",
				PublishTo: DefaultPublishingSubject,
			},
			{
				Name:      "services.v1.",
				PublishTo: DefaultPublishingSubject,
			},
			{
				Name:      "deployments.v1.apps",
				PublishTo: DefaultPublishingSubject,
			},
			{
				Name:      "statefulsets.v1.apps",
				PublishTo: DefaultPublishingSubject,
			},
			{
				Name:      "daemonsets.v1.apps",
				PublishTo: DefaultPublishingSubject,
			},

			{
				Name:      "ingresses.v1.networking.k8s.io",
				PublishTo: DefaultPublishingSubject,
			},

			{
				Name:      "ingressclass.v1.networking.k8s.io",
				PublishTo: DefaultPublishingSubject,
			},

			{
				Name:      "endpoints.v1.",
				PublishTo: DefaultPublishingSubject,
			},

			{
				Name:      "endpointslices.v1.discovery.k8s.io",
				PublishTo: DefaultPublishingSubject,
			},

			{
				Name:      "container.v1.core",
				PublishTo: DefaultPublishingSubject,
			},

			{
				Name:      "job.v1.batch",
				PublishTo: DefaultPublishingSubject,
			},

			{
				Name:      "service.apis",
				PublishTo: DefaultPublishingSubject,
			},

			{
				Name:      "csidriver.v1.storage.k8s.io",
				PublishTo: DefaultPublishingSubject,
			},

			{
				Name:      "csinode.v1.storage.k8s.io",
				PublishTo: DefaultPublishingSubject,
			},

			{
				Name:      "csistoragecapacity.v1.storage.k8s.io",
				PublishTo: DefaultPublishingSubject,
			},

			{
				Name:      "volume.v1.",
				PublishTo: DefaultPublishingSubject,
			},

			{
				Name:      "volumeattributesclass.v1alpha1.storage.k8s.io",
				PublishTo: DefaultPublishingSubject,
			},

			{
				Name:      "clustertrustbundle.v1alpha1.certificates.k8s.io",
				PublishTo: DefaultPublishingSubject,
			},

			{
				Name:      "controllerrevision.v1.apps",
				PublishTo: DefaultPublishingSubject,
			},

			{
				Name:      "customresourcedefinition.v1.apiextensions.k8s.io",
				PublishTo: DefaultPublishingSubject,
			},

			{
				Name:      "event.v1.events.k8s.io",
				PublishTo: DefaultPublishingSubject,
			},

			{
				Name:      "limitrange.v1.",
				PublishTo: DefaultPublishingSubject,
			},

			{
				Name:      "horizontalpodautoscaler.v2.autoscaling",
				PublishTo: DefaultPublishingSubject,
			},

			{
				Name:      "mutatingwebhookconfiguration.v1.admissionregistration.k8s.io",
				PublishTo: DefaultPublishingSubject,
			},

			{
				Name:      "podschedulingcontext.v1alpha2.resource.k8s.io",
				PublishTo: DefaultPublishingSubject,
			},

			{
				Name:      "podtemplate.v1.",
				PublishTo: DefaultPublishingSubject,
			},

			{
				Name:      "poddisruptionbudget.v1.policy",
				PublishTo: DefaultPublishingSubject,
			},

			{
				Name:      "priorityclass.v1.scheduling.k8s.io",
				PublishTo: DefaultPublishingSubject,
			},

			{
				Name:      "resourceclaim.v1alpha2.resource.k8s.io",
				PublishTo: DefaultPublishingSubject,
			},

			{
				Name:      "resourceclaimtemplate.v1alpha2.resource.k8s.io",
				PublishTo: DefaultPublishingSubject,
			},

			{
				Name:      "resourceclass.v1alpha2.resource.k8s.io",
				PublishTo: DefaultPublishingSubject,
			},

			{
				Name:      "validatingwebhookconfiguration.v1.admissionregistration.k8s.io",
				PublishTo: DefaultPublishingSubject,
			},

			{
				Name:      "validatingadmissionpolicy.v1beta1.admissionregistration.k8s.io",
				PublishTo: DefaultPublishingSubject,
			},

			{
				Name:      "validatingadmissionpolicybinding.v1beta1.admissionregistration.k8s.io",
				PublishTo: DefaultPublishingSubject,
			},

			{
				Name:      "binding.v1.",
				PublishTo: DefaultPublishingSubject,
			},

			{
				Name:      "certificatesigningrequest.v1.certificates.k8s.io",
				PublishTo: DefaultPublishingSubject,
			},

			{
				Name:      "clusterrolebinding.v1.rbac.authorization.k8s.io",
				PublishTo: DefaultPublishingSubject,
			},

			{
				Name:      "componentstatus.v1.",
				PublishTo: DefaultPublishingSubject,
			},

			{
				Name:      "flowschema.v1.flowcontrol.apiserver.k8s.io",
				PublishTo: DefaultPublishingSubject,
			},

			{
				Name:      "ipaddress.v1alpha1.networking.k8s.io",
				PublishTo: DefaultPublishingSubject,
			},

			{
				Name:      "lease.v1.coordination.k8s.io",
				PublishTo: DefaultPublishingSubject,
			},

			{
				Name:      "localsubjectaccessreview.v1.authorization.k8s.io",
				PublishTo: DefaultPublishingSubject,
			},

			{
				Name:      "node.v1.",
				PublishTo: DefaultPublishingSubject,
			},

			{
				Name:      "networkpolicy.v1.networking.k8s.io",
				PublishTo: DefaultPublishingSubject,
			},

			{
				Name:      "prioritylevelconfiguration.v1.flowcontrol.apiserver.k8s.io",
				PublishTo: DefaultPublishingSubject,
			},

			{
				Name:      "resourcequota.v1.",
				PublishTo: DefaultPublishingSubject,
			},

			{
				Name:      "role.v1.rbac.authorization.k8s.io",
				PublishTo: DefaultPublishingSubject,
			},

			{
				Name:      "rolebinding.v1.rbac.authorization.k8s.io",
				PublishTo: DefaultPublishingSubject,
			},

			{
				Name:      "runtimeclass.v1.node.k8s.io",
				PublishTo: DefaultPublishingSubject,
			},

			{
				Name:      "selfsubjectaccessreview.v1.authorization.k8s.io",
				PublishTo: DefaultPublishingSubject,
			},

			{
				Name:      "selfsubjectreview.v1.authentication.k8s.io",
				PublishTo: DefaultPublishingSubject,
			},

			{
				Name:      "selfsubjectrulesreview.v1.authorization.k8s.io",
				PublishTo: DefaultPublishingSubject,
			},

			{
				Name:      "serviceaccount.v1.",
				PublishTo: DefaultPublishingSubject,
			},

			{
				Name:      "servicecidr.v1alpha1.networking.k8s.io",
				PublishTo: DefaultPublishingSubject,
			},

			{
				Name:      "storageversion.v1alpha1.internal.apiserver.k8s.io",
				PublishTo: DefaultPublishingSubject,
			},

			{
				Name:      "subjectaccessreview.v1.authorization.k8s.io",
				PublishTo: DefaultPublishingSubject,
			},

			{
				Name:      "tokenrequest.v1.authentication.k8s.io",
				PublishTo: DefaultPublishingSubject,
			},

			{
				Name:      "tokenreview.v1.authentication.k8s.io",
				PublishTo: DefaultPublishingSubject,
			},

			{
				Name:      "cronjobs.v1.batch",
				PublishTo: DefaultPublishingSubject,
			},

			{
				Name:      "replicationcontrollers.v1.",
				PublishTo: DefaultPublishingSubject,
			},

			{
				Name:      "storageclasses.v1.storage.k8s.io",
				PublishTo: DefaultPublishingSubject,
			},

			{
				Name:      "clusterroles.v1.rbac.authorization.k8s.io",
				PublishTo: DefaultPublishingSubject,
			},

			{
				Name:      "volumeattachments.v1.storage.k8s.io",
				PublishTo: DefaultPublishingSubject,
			},

			{
				Name:      "apiservices.v1.apiregistration.k8s.io",
				PublishTo: DefaultPublishingSubject,
			},
		},
	}

	Listeners = map[string]ListenerConfig{
		LogStream: {
			Name:           LogStream,
			ConnectionName: "meshsync-logstream",
			PublishTo:      "meshery.meshsync.logs",
		},
		ExecShell: {
			Name:           ExecShell,
			ConnectionName: "meshsync-exec",
			PublishTo:      "meshery.meshsync.exec",
		},
		RequestStream: {
			Name:           RequestStream,
			ConnectionName: "meshsync-request-stream",
			SubscribeTo:    "meshery.meshsync.request",
		},
	}

	DefaultEvents = []string{"ADD", "UPDATE", "DELETE"}
)
View Source
var LocalMeshsyncConfig map[string]string = map[string]string{
	"whitelist": `[{"Resource":"grafanas.v1beta1.grafana.integreatly.org","Events":["ADDED","MODIFIED","DELETED"]},{"Resource":"prometheuses.v1.monitoring.coreos.com","Events":["ADDED","MODIFIED","DELETED"]},{"Resource":"namespaces.v1.","Events":["ADDED","MODIFIED","DELETED"]},{"Resource":"configmaps.v1.","Events":["ADDED","MODIFIED","DELETED"]},{"Resource":"nodes.v1.","Events":["ADDED","MODIFIED","DELETED"]},{"Resource":"secrets.v1.","Events":["ADDED","MODIFIED","DELETED"]},{"Resource":"persistentvolumes.v1.","Events":["ADDED","MODIFIED","DELETED"]},{"Resource":"persistentvolumeclaims.v1.","Events":["ADDED","MODIFIED","DELETED"]},{"Resource":"replicasets.v1.apps","Events":["ADDED","MODIFIED","DELETED"]},{"Resource":"pods.v1.","Events":["ADDED","MODIFIED","DELETED"]},{"Resource":"services.v1.","Events":["ADDED","MODIFIED","DELETED"]},{"Resource":"deployments.v1.apps","Events":["ADDED","MODIFIED","DELETED"]},{"Resource":"statefulsets.v1.apps","Events":["ADDED","MODIFIED","DELETED"]},{"Resource":"daemonsets.v1.apps","Events":["ADDED","MODIFIED","DELETED"]},{"Resource":"ingresses.v1.networking.k8s.io","Events":["ADDED","MODIFIED","DELETED"]},{"Resource":"endpoints.v1.","Events":["ADDED","MODIFIED","DELETED"]},{"Resource":"endpointslices.v1.discovery.k8s.io","Events":["ADDED","MODIFIED","DELETED"]},{"Resource":"cronjobs.v1.batch","Events":["ADDED","MODIFIED","DELETED"]},{"Resource":"replicationcontrollers.v1.","Events":["ADDED","MODIFIED","DELETED"]},{"Resource":"storageclasses.v1.storage.k8s.io","Events":["ADDED","MODIFIED","DELETED"]},{"Resource":"clusterroles.v1.rbac.authorization.k8s.io","Events":["ADDED","MODIFIED","DELETED"]},{"Resource":"volumeattachments.v1.storage.k8s.io","Events":["ADDED","MODIFIED","DELETED"]},{"Resource":"apiservices.v1.apiregistration.k8s.io","Events":["ADDED","MODIFIED","DELETED"]}]`,
}

how it is defined in https://github.com/meshery/meshery/blob/master/install/kubernetes/helm/meshery-operator/charts/meshery-meshsync/values.yaml#L8

Functions

func ErrInitConfig

func ErrInitConfig(err error) error

func GetMeshsyncCRD

func GetMeshsyncCRD(dyClient dynamic.Interface) (*unstructured.Unstructured, error)

func New

func New(provider string) (config.Handler, error)

New creates a new config instance

func PatchCRVersion

func PatchCRVersion(config *rest.Config) error

Types

type ListenerConfig

type ListenerConfig struct {
	Name           string   `json:"name" yaml:"name"`
	ConnectionName string   `json:"connection-name" yaml:"connection-name"`
	PublishTo      string   `json:"publish-to" yaml:"publish-to"`
	SubscribeTo    string   `json:"subscribe-to" yaml:"subscribe-to"`
	Events         []string `json:"events" yaml:"events"`
}

type ListenerConfigs

type ListenerConfigs []ListenerConfig

type MeshsyncConfig

type MeshsyncConfig struct {
	BlackList []string                   `json:"blacklist" yaml:"blacklist"`
	Pipelines map[string]PipelineConfigs `json:"pipeline-configs,omitempty" yaml:"pipeline-configs,omitempty"`
	Listeners map[string]ListenerConfig  `json:"listener-config,omitempty" yaml:"listener-config,omitempty"`
	WhiteList []ResourceConfig           `json:"resource-configs" yaml:"resource-configs"`
}

Meshsync configuration controls the resources meshsync produces and consumes

func GetMeshsyncCRDConfigs

func GetMeshsyncCRDConfigs(dyClient dynamic.Interface) (*MeshsyncConfig, error)

func GetMeshsyncCRDConfigsLocal

func GetMeshsyncCRDConfigsLocal() (*MeshsyncConfig, error)

func PopulateConfigs

func PopulateConfigs(configMap corev1.ConfigMap) (*MeshsyncConfig, error)

PopulateConfigs compares the default configs and the whitelist and blacklist

func PopulateConfigsFromMap

func PopulateConfigsFromMap(data map[string]string) (*MeshsyncConfig, error)

type OutputFiltrationContainer added in v0.8.22

type OutputFiltrationContainer struct {
	NamespaceSet OutputNamespaceSet
	ResourceSet  OutputResourceSet
}

func NewOutputFiltrationContainer added in v0.8.22

func NewOutputFiltrationContainer(
	namespaceSet OutputNamespaceSet,
	resourceSet OutputResourceSet,
) OutputFiltrationContainer

type OutputNamespaceSet added in v0.8.22

type OutputNamespaceSet map[string]bool

func NewOutputNamespaceSet added in v0.8.22

func NewOutputNamespaceSet(namespaces ...string) OutputNamespaceSet

func (OutputNamespaceSet) Contains added in v0.8.22

func (s OutputNamespaceSet) Contains(value string) bool

type OutputResourceSet added in v0.8.22

type OutputResourceSet map[string]bool

func NewOutputResourceSet added in v0.8.22

func NewOutputResourceSet(resources []string) OutputResourceSet

func (OutputResourceSet) Contains added in v0.8.22

func (s OutputResourceSet) Contains(value string) bool

type PipelineConfig

type PipelineConfig struct {
	Name      string   `json:"name" yaml:"name"`
	PublishTo string   `json:"publish-to" yaml:"publish-to"`
	Events    []string `json:"events" yaml:"events"`
}

type PipelineConfigs

type PipelineConfigs []PipelineConfig

func (PipelineConfigs) Add

func (PipelineConfigs) Delete

type ResourceConfig

type ResourceConfig struct {
	Resource string
	Events   []string
}

Watched Resource configuration

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL