client

package
v0.0.0-...-d9aaf1c Latest Latest
Warning

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

Go to latest
Published: Jun 28, 2023 License: Apache-2.0 Imports: 72 Imported by: 1

Documentation

Index

Constants

View Source
const (
	GatewayServiceType string = "service"
	GatewayDockerType  string = "docker"
	GatewayPodmanType  string = "podman"
	GatewayMockType    string = "mock"
)
View Source
const (
	ValidRfc1123Label                = `^(` + ValidRfc1123LabelKey + `)+=(` + ValidRfc1123LabelValue + `)+(,(` + ValidRfc1123LabelKey + `)+=(` + ValidRfc1123LabelValue + `)+)*$`
	ValidRfc1123LabelKey             = "[a-z0-9]([-._a-z0-9]*[a-z0-9])*"
	ValidRfc1123LabelValue           = "[a-zA-Z0-9]([-._a-zA-Z0-9]*[a-zA-Z0-9])*"
	DefaultSkupperExtraLabels string = ""
)
View Source
const (
	// core options
	SiteConfigNameKey                string = "name"
	SiteConfigRouterModeKey          string = "router-mode"
	SiteConfigIngressKey             string = "ingress"
	SiteConfigIngressAnnotationsKey  string = "ingress-annotations"
	SiteConfigIngressHostKey         string = "ingress-host"
	SiteConfigCreateNetworkPolicyKey string = "create-network-policy"
	SiteConfigRoutersKey             string = "routers"
	SiteConfigRunAsUserKey           string = "run-as-user"
	SiteConfigRunAsGroupKey          string = "run-as-group"
	SiteConfigClusterPermissionsKey  string = "cluster-permissions"

	// console options
	SiteConfigConsoleKey               string = "console"
	SiteConfigConsoleAuthenticationKey string = "console-authentication"
	SiteConfigConsoleUserKey           string = "console-user"
	SiteConfigConsolePasswordKey       string = "console-password"
	SiteConfigConsoleIngressKey        string = "console-ingress"
	SiteConfigRestAPIKey               string = "rest-api"

	// flow collector options
	SiteConfigFlowCollectorKey            string = "flow-collector"
	SiteConfigFlowCollectorRecordTtlKey   string = "flow-collector-record-ttl"
	SiteConfigFlowCollectorCpuKey         string = "flow-collector-cpu"
	SiteConfigFlowCollectorMemoryKey      string = "flow-collector-memory"
	SiteConfigFlowCollectorCpuLimitKey    string = "flow-collector-cpu-limit"
	SiteConfigFlowCollectorMemoryLimitKey string = "flow-collector-memory-limit"

	// prometheus server options
	SiteConfigPrometheusExternalServerKey       string = "prometheus-external-server"
	SiteConfigPrometheusServerAuthenticationKey string = "prometheus-server-authentication"
	SiteConfigPrometheusServerUserKey           string = "prometheus-server-user"
	SiteConfigPrometheusServerPasswordKey       string = "prometheus-server-password"
	SiteConfigPrometheusServerCpuKey            string = "prometheus-server-cpu"
	SiteConfigPrometheusServerMemoryKey         string = "prometheus-server-memory"
	SiteConfigPrometheusServerCpuLimitKey       string = "prometheus-server-cpu-limit"
	SiteConfigPrometheusServerMemoryLimitKey    string = "prometheus-server-memory-limit"

	// router options
	SiteConfigRouterConsoleKey             string = "router-console"
	SiteConfigRouterLoggingKey             string = "router-logging"
	SiteConfigRouterDebugModeKey           string = "router-debug-mode"
	SiteConfigRouterCpuKey                 string = "router-cpu"
	SiteConfigRouterMemoryKey              string = "router-memory"
	SiteConfigRouterCpuLimitKey            string = "router-cpu-limit"
	SiteConfigRouterMemoryLimitKey         string = "router-memory-limit"
	SiteConfigRouterAffinityKey            string = "router-pod-affinity"
	SiteConfigRouterAntiAffinityKey        string = "router-pod-antiaffinity"
	SiteConfigRouterNodeSelectorKey        string = "router-node-selector"
	SiteConfigRouterMaxFrameSizeKey        string = "xp-router-max-frame-size"
	SiteConfigRouterMaxSessionFramesKey    string = "xp-router-max-session-frames"
	SiteConfigRouterDataConnectionCountKey string = "router-data-connection-count"
	SiteConfigRouterIngressHostKey         string = "router-ingress-host"
	SiteConfigRouterServiceAnnotationsKey  string = "router-service-annotations"
	SiteConfigRouterLoadBalancerIp         string = "router-load-balancer-ip"
	SiteConfigRouterDisableMutualTLS       string = "router-disable-mutual-tls"

	// controller options
	SiteConfigServiceControllerKey            string = "service-controller"
	SiteConfigServiceSyncKey                  string = "service-sync"
	SiteConfigServiceSyncSiteTtlKey           string = "service-sync-site-ttl"
	SiteConfigControllerCpuKey                string = "controller-cpu"
	SiteConfigControllerMemoryKey             string = "controller-memory"
	SiteConfigControllerCpuLimitKey           string = "controller-cpu-limit"
	SiteConfigControllerMemoryLimitKey        string = "controller-memory-limit"
	SiteConfigControllerAffinityKey           string = "controller-pod-affinity"
	SiteConfigControllerAntiAffinityKey       string = "controller-pod-antiaffinity"
	SiteConfigControllerNodeSelectorKey       string = "controller-node-selector"
	SiteConfigControllerIngressHostKey        string = "controller-ingress-host"
	SiteConfigControllerServiceAnnotationsKey string = "controller-service-annotations"
	SiteConfigControllerLoadBalancerIp        string = "controller-load-balancer-ip"

	// config-sync options
	SiteConfigConfigSyncCpuKey         string = "config-sync-cpu"
	SiteConfigConfigSyncMemoryKey      string = "config-sync-memory"
	SiteConfigConfigSyncCpuLimitKey    string = "config-sync-cpu-limit"
	SiteConfigConfigSyncMemoryLimitKey string = "config-sync-memory-limit"

	SiteConfigEnableSkupperEventsKey string = "enable-skupper-events"
)

Variables

This section is empty.

Functions

func ClusterRoleBindings

func ClusterRoleBindings(namespace string) []*rbacv1.ClusterRoleBinding

func ConfigSyncContainer

func ConfigSyncContainer() *corev1.Container

func Contains

func Contains(elements []uint32, element uint32) bool

func ContainsAllPolicies

func ContainsAllPolicies(elements []rbacv1.PolicyRule, included []rbacv1.PolicyRule) bool

func GatewayDetectTypeIfPresent

func GatewayDetectTypeIfPresent() (string, error)
func GetFormattedLinks(getLocalLinks GetLocalLinks, cli *VanClient, site types.SiteInfo, siteNameMap map[string]string, isLocalSite bool) ([]string, error)

func GetFreePort

func GetFreePort() (port int, err error)

func GetLocalLinkStatus

func GetLocalLinkStatus(cli *VanClient, namespace string, siteNameMap map[string]string) (map[string]*types.LinkStatus, error)

func OauthProxyContainer

func OauthProxyContainer(serviceAccount string, servicePort string) *corev1.Container

Types

type AllowedBy

type AllowedBy map[string][]string

func (AllowedBy) Add

func (a AllowedBy) Add(key, policy string)

func (AllowedBy) SortedKeys

func (a AllowedBy) SortedKeys() []string

type ClusterPolicyValidator

type ClusterPolicyValidator struct {
	// contains filtered or unexported fields
}

ClusterPolicyValidator The policy validator component must be used internally by the service-controller only. Client applications must use the PolicyAPIClient (rest client).

func NewClusterPolicyValidator

func NewClusterPolicyValidator(cli *VanClient) *ClusterPolicyValidator

func (*ClusterPolicyValidator) AppliesToNS

func (p *ClusterPolicyValidator) AppliesToNS(policyName string) bool

func (*ClusterPolicyValidator) CrdDefined

func (p *ClusterPolicyValidator) CrdDefined() bool

func (*ClusterPolicyValidator) Dump

func (*ClusterPolicyValidator) Enabled

func (p *ClusterPolicyValidator) Enabled() bool

func (*ClusterPolicyValidator) HasPermission

func (p *ClusterPolicyValidator) HasPermission() bool

func (*ClusterPolicyValidator) LoadNamespacePolicies

func (p *ClusterPolicyValidator) LoadNamespacePolicies() ([]v1alpha12.SkupperClusterPolicy, error)

func (*ClusterPolicyValidator) SetStaticPolicyList

func (p *ClusterPolicyValidator) SetStaticPolicyList(policies []v1alpha12.SkupperClusterPolicy)

func (*ClusterPolicyValidator) ValidateExpose

func (p *ClusterPolicyValidator) ValidateExpose(resourceType, resourceName string) *PolicyValidationResult

func (*ClusterPolicyValidator) ValidateImportService

func (p *ClusterPolicyValidator) ValidateImportService(serviceName string) *PolicyValidationResult
func (p *ClusterPolicyValidator) ValidateIncomingLink() *PolicyValidationResult
func (p *ClusterPolicyValidator) ValidateOutgoingLink(hostname string) *PolicyValidationResult

type GatewayConfig

type GatewayConfig struct {
	GatewayName  string                  `yaml:"name,omitempty"`
	QdrListeners []qdr.Listener          `yaml:"qdr-listeners,omitempty"`
	Bindings     []types.GatewayEndpoint `yaml:"bindings,omitempty"`
	Forwards     []types.GatewayEndpoint `yaml:"forwards,omitempty"`
}

type GatewayInstance

type GatewayInstance struct {
	WorkingDir string
	Hostname   string
	RouterID   string
}
type GetLocalLinks func(*VanClient, string, map[string]string) (map[string]*types.LinkStatus, error)

type HostPort

type HostPort struct {
	Host string
	Port string
}

TODO: should these move to types?

type PolicyAPIClient

type PolicyAPIClient struct {
	// contains filtered or unexported fields
}

func NewPolicyValidatorAPI

func NewPolicyValidatorAPI(cli *VanClient) *PolicyAPIClient

func (*PolicyAPIClient) Expose

func (p *PolicyAPIClient) Expose(resourceType, resourceName string) (*PolicyAPIResult, error)
func (p *PolicyAPIClient) IncomingLink() (*PolicyAPIResult, error)
func (p *PolicyAPIClient) OutgoingLink(hostname string) (*PolicyAPIResult, error)

func (*PolicyAPIClient) Service

func (p *PolicyAPIClient) Service(name string) (*PolicyAPIResult, error)

func (*PolicyAPIClient) Services

func (p *PolicyAPIClient) Services(names ...string) (map[string]*PolicyAPIResult, error)

type PolicyAPIResult

type PolicyAPIResult struct {
	Allowed   bool     `json:"allowed"`
	AllowedBy []string `json:"allowedBy"`
	Enabled   bool     `json:"enabled"`
	Error     string   `json:"error"`
}

func (*PolicyAPIResult) Err

func (p *PolicyAPIResult) Err() error

type PolicyInfo

type PolicyInfo struct {
	AllowIncomingLinks            AllowedBy `json:"allowIncomingLinks"`
	AllowedOutgoingLinksHostnames AllowedBy `json:"allowedOutgoingLinksHostnames"`
	AllowedExposedResources       AllowedBy `json:"allowedExposedResources"`
	AllowedServices               AllowedBy `json:"allowedServices"`
}

func (*PolicyInfo) String

func (p *PolicyInfo) String() string

type PolicyValidationResult

type PolicyValidationResult struct {
	// contains filtered or unexported fields
}

func (*PolicyValidationResult) AllowPolicies

func (*PolicyValidationResult) AllowPolicyNames

func (p *PolicyValidationResult) AllowPolicyNames() []string

func (*PolicyValidationResult) Allowed

func (p *PolicyValidationResult) Allowed() bool

func (*PolicyValidationResult) Enabled

func (p *PolicyValidationResult) Enabled() bool

func (*PolicyValidationResult) Error

func (p *PolicyValidationResult) Error() error

type PrometheusInfo

type PrometheusInfo struct {
	BasicAuth   bool
	TlsAuth     bool
	ServiceName string
	Namespace   string
	Port        string
	User        string
	Password    string
	Hash        string
}

type RouterHostPorts

type RouterHostPorts struct {
	Edge        HostPort
	InterRouter HostPort
	Hosts       string
	LocalOnly   bool
}

type UnitInfo

type UnitInfo struct {
	IsSystemService bool
	Binary          string
	Image           string
	ConfigPath      string
	GatewayName     string
}

type VanClient

type VanClient struct {
	Namespace       string
	KubeClient      kubernetes.Interface
	RouteClient     *routev1client.RouteV1Client
	OCAppsClient    openshiftapps.Interface
	RestConfig      *restclient.Config
	DynamicClient   dynamic.Interface
	DiscoveryClient *discovery.DiscoveryClient
	LinkHandler     domain.LinkHandler
}

A VAN Client manages orchestration and communications with the network components

func NewClient

func NewClient(namespace string, context string, kubeConfigPath string) (*VanClient, error)

func (*VanClient) ClusterRoles

func (cli *VanClient) ClusterRoles(enablePermissions bool) []*rbacv1.ClusterRole

func (*VanClient) ConnectorCreate

func (cli *VanClient) ConnectorCreate(ctx context.Context, secret *corev1.Secret, options types.ConnectorCreateOptions) error

func (*VanClient) ConnectorCreateFromFile

func (cli *VanClient) ConnectorCreateFromFile(ctx context.Context, secretFile string, options types.ConnectorCreateOptions) (*corev1.Secret, error)

func (*VanClient) ConnectorCreateSecretFromData

func (cli *VanClient) ConnectorCreateSecretFromData(ctx context.Context, options types.ConnectorCreateOptions) (*corev1.Secret, error)

func (*VanClient) ConnectorInspect

func (cli *VanClient) ConnectorInspect(ctx context.Context, name string) (*types.LinkStatus, error)

ConnectorInspect VAN connector instance

func (*VanClient) ConnectorList

func (cli *VanClient) ConnectorList(ctx context.Context) ([]types.LinkStatus, error)

func (*VanClient) ConnectorRemove

func (cli *VanClient) ConnectorRemove(ctx context.Context, options types.ConnectorRemoveOptions) error

func (*VanClient) ConnectorTokenCreate

func (cli *VanClient) ConnectorTokenCreate(ctx context.Context, subject string, namespace string) (*corev1.Secret, bool, error)

func (*VanClient) ConnectorTokenCreateFile

func (cli *VanClient) ConnectorTokenCreateFile(ctx context.Context, subject string, secretFile string) error

func (*VanClient) ConnectorTokenCreateFromTemplate

func (cli *VanClient) ConnectorTokenCreateFromTemplate(ctx context.Context, tokenName string, templateName string) (*corev1.Secret, bool, error)

func (*VanClient) GatewayBind

func (cli *VanClient) GatewayBind(ctx context.Context, gatewayName string, endpoint types.GatewayEndpoint) error

func (*VanClient) GatewayDownload

func (cli *VanClient) GatewayDownload(ctx context.Context, gatewayName string, downloadPath string) (string, error)

func (*VanClient) GatewayExportConfig

func (cli *VanClient) GatewayExportConfig(ctx context.Context, targetGatewayName string, exportGatewayName string, exportPath string) (string, error)

func (*VanClient) GatewayExpose

func (cli *VanClient) GatewayExpose(ctx context.Context, gatewayName string, gatewayType string, endpoint types.GatewayEndpoint) (string, error)

func (*VanClient) GatewayForward

func (cli *VanClient) GatewayForward(ctx context.Context, gatewayName string, endpoint types.GatewayEndpoint) error

func (*VanClient) GatewayGenerateBundle

func (cli *VanClient) GatewayGenerateBundle(ctx context.Context, configFile string, bundlePath string) (string, error)

func (*VanClient) GatewayInit

func (cli *VanClient) GatewayInit(ctx context.Context, gatewayName string, gatewayType string, configFile string) (string, error)

func (*VanClient) GatewayInspect

func (cli *VanClient) GatewayInspect(ctx context.Context, gatewayName string) (*types.GatewayInspectResponse, error)

func (*VanClient) GatewayList

func (cli *VanClient) GatewayList(ctx context.Context) ([]*types.GatewayInspectResponse, error)

func (*VanClient) GatewayRemove

func (cli *VanClient) GatewayRemove(ctx context.Context, gatewayName string) error

func (*VanClient) GatewayUnbind

func (cli *VanClient) GatewayUnbind(ctx context.Context, gatewayName string, endpoint types.GatewayEndpoint) error

func (*VanClient) GatewayUnexpose

func (cli *VanClient) GatewayUnexpose(ctx context.Context, gatewayName string, endpoint types.GatewayEndpoint, deleteLast bool) error

func (*VanClient) GatewayUnforward

func (cli *VanClient) GatewayUnforward(ctx context.Context, gatewayName string, endpoint types.GatewayEndpoint) error

func (*VanClient) GetDiscoveryClient

func (cli *VanClient) GetDiscoveryClient() *discovery.DiscoveryClient

func (*VanClient) GetDynamicClient

func (cli *VanClient) GetDynamicClient() dynamic.Interface

func (*VanClient) GetHeadlessServiceConfiguration

func (cli *VanClient) GetHeadlessServiceConfiguration(targetName string, protocol string, address string, ports []int, publishNotReadyAddresses bool, namespace string) (*types.ServiceInterface, error)

func (*VanClient) GetIngressDefault

func (cli *VanClient) GetIngressDefault() string

func (*VanClient) GetKubeClient

func (cli *VanClient) GetKubeClient() kubernetes.Interface

func (*VanClient) GetNamespace

func (cli *VanClient) GetNamespace() string
func (cli *VanClient) GetRemoteLinks(ctx context.Context, siteConfig *types.SiteConfig) ([]*types.RemoteLinkInfo, error)

func (*VanClient) GetRouterSpecFromOpts

func (cli *VanClient) GetRouterSpecFromOpts(options types.SiteConfigSpec, siteId string) *types.RouterSpec

func (*VanClient) GetSiteMetadata

func (cli *VanClient) GetSiteMetadata() (*qdr.SiteMetadata, error)

func (*VanClient) GetVanControllerSpec

func (cli *VanClient) GetVanControllerSpec(options types.SiteConfigSpec, van *types.RouterSpec, transport *appsv1.Deployment, siteId string)

func (*VanClient) GetVanPrometheusServerSpec

func (cli *VanClient) GetVanPrometheusServerSpec(options types.SiteConfigSpec, van *types.RouterSpec)

func (*VanClient) GetVersion

func (cli *VanClient) GetVersion(component string, name string) string

func (*VanClient) NetworkStatus

func (cli *VanClient) NetworkStatus(ctx context.Context) ([]*types.SiteInfo, error)

func (*VanClient) RevokeAccess

func (cli *VanClient) RevokeAccess(ctx context.Context) error

func (*VanClient) RouterCreate

func (cli *VanClient) RouterCreate(ctx context.Context, options types.SiteConfig) error

RouterCreate instantiates a VAN (router and controller) deployment

func (*VanClient) RouterInspect

func (cli *VanClient) RouterInspect(ctx context.Context) (*types.RouterInspectResponse, error)

func (*VanClient) RouterInspectNamespace

func (cli *VanClient) RouterInspectNamespace(ctx context.Context, namespace string) (*types.RouterInspectResponse, error)

RouterInspect VAN deployment

func (*VanClient) RouterRemove

func (cli *VanClient) RouterRemove(ctx context.Context) error

RouterRemove delete a VAN (router and controller) deployment

func (*VanClient) RouterRestart

func (cli *VanClient) RouterRestart(ctx context.Context, namespace string) error

func (*VanClient) RouterUpdateAnnotations

func (cli *VanClient) RouterUpdateAnnotations(ctx context.Context, settings *corev1.ConfigMap) (bool, error)

func (*VanClient) RouterUpdateDebugMode

func (cli *VanClient) RouterUpdateDebugMode(ctx context.Context, settings *corev1.ConfigMap) (bool, error)

func (*VanClient) RouterUpdateLogging

func (cli *VanClient) RouterUpdateLogging(ctx context.Context, settings *corev1.ConfigMap, hup bool) (bool, error)

func (*VanClient) RouterUpdateVersion

func (cli *VanClient) RouterUpdateVersion(ctx context.Context, hup bool) (bool, error)

func (*VanClient) RouterUpdateVersionInNamespace

func (cli *VanClient) RouterUpdateVersionInNamespace(ctx context.Context, hup bool, namespace string) (bool, error)

func (*VanClient) ServiceInterfaceBind

func (cli *VanClient) ServiceInterfaceBind(ctx context.Context, service *types.ServiceInterface, targetType string, targetName string, targetPorts map[int]int, namespace string) error

func (*VanClient) ServiceInterfaceCreate

func (cli *VanClient) ServiceInterfaceCreate(ctx context.Context, service *types.ServiceInterface) error

func (*VanClient) ServiceInterfaceInspect

func (cli *VanClient) ServiceInterfaceInspect(ctx context.Context, address string) (*types.ServiceInterface, error)

func (*VanClient) ServiceInterfaceList

func (cli *VanClient) ServiceInterfaceList(ctx context.Context) ([]*types.ServiceInterface, error)

func (*VanClient) ServiceInterfaceRemove

func (cli *VanClient) ServiceInterfaceRemove(ctx context.Context, address string) error

func (*VanClient) ServiceInterfaceUnbind

func (cli *VanClient) ServiceInterfaceUnbind(ctx context.Context, targetType string, targetName string, address string, deleteIfNoTargets bool, namespace string) error

func (*VanClient) ServiceInterfaceUpdate

func (cli *VanClient) ServiceInterfaceUpdate(ctx context.Context, service *types.ServiceInterface) error

func (*VanClient) SiteConfigCreate

func (cli *VanClient) SiteConfigCreate(ctx context.Context, spec types.SiteConfigSpec) (*types.SiteConfig, error)

func (*VanClient) SiteConfigInspect

func (cli *VanClient) SiteConfigInspect(ctx context.Context, input *corev1.ConfigMap) (*types.SiteConfig, error)

func (*VanClient) SiteConfigInspectInNamespace

func (cli *VanClient) SiteConfigInspectInNamespace(ctx context.Context, input *corev1.ConfigMap, namespace string) (*types.SiteConfig, error)

func (*VanClient) SiteConfigRemove

func (cli *VanClient) SiteConfigRemove(ctx context.Context) error

func (*VanClient) SiteConfigUpdate

func (cli *VanClient) SiteConfigUpdate(ctx context.Context, config types.SiteConfigSpec) ([]string, error)

func (*VanClient) SkupperCheckService

func (cli *VanClient) SkupperCheckService(service string, verbose bool) (*bytes.Buffer, error)

func (*VanClient) SkupperDump

func (cli *VanClient) SkupperDump(ctx context.Context, tarName string, version string, kubeConfigPath string, kubeConfigContext string) (string, error)

func (*VanClient) SkupperEvents

func (cli *VanClient) SkupperEvents(verbose bool) (*bytes.Buffer, error)

func (*VanClient) TokenClaimCreate

func (cli *VanClient) TokenClaimCreate(ctx context.Context, name string, password []byte, expiry time.Duration, uses int) (*corev1.Secret, bool, error)

func (*VanClient) TokenClaimCreateFile

func (cli *VanClient) TokenClaimCreateFile(ctx context.Context, name string, password []byte, expiry time.Duration, uses int, secretFile string) error

func (*VanClient) TokenClaimTemplateCreate

func (cli *VanClient) TokenClaimTemplateCreate(ctx context.Context, name string, password []byte, recordName string) (*corev1.Secret, *corev1.Service, bool, error)

func (*VanClient) VerifySecretCompatibility

func (cli *VanClient) VerifySecretCompatibility(secret corev1.Secret) error

VerifySecretCompatibility returns nil if current site version is compatible with the token or cert provided. If sites are not compatible an error is returned with the appropriate information

func (*VanClient) VerifySiteCompatibility

func (cli *VanClient) VerifySiteCompatibility(siteVersion string) error

VerifySiteCompatibility returns nil if current site version is compatible with the provided version, otherwise it returns a clear error.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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