managerutil

package
v2.22.1 Latest Latest
Warning

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

Go to latest
Published: Mar 27, 2025 License: Apache-2.0 Imports: 21 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func AgentInjectorEnabled added in v2.19.0

func AgentInjectorEnabled(ctx context.Context) bool

func AgentsAreCompatible

func AgentsAreCompatible(agents []*rpc.AgentInfo) bool

AgentsAreCompatible returns whether all the specified agents have the same product, version, and mechanisms. This might not be true for a number of reasons, such as when a deployment is restarting its Pods for an upgrade. This helper also compares Agent names as a sanity check.

func GetAgentImage added in v2.6.0

func GetAgentImage(ctx context.Context) string

GetAgentImage returns the fully qualified name of the traffic-agent image, i.e. "ghcr.io/telepresenceio/tel2:2.20.0", or an empty string if no agent image has been configured.

func GetSessionID added in v2.3.2

func GetSessionID(ctx context.Context) tunnel.SessionID

func LoadEnv added in v2.3.1

func LoadEnv(ctx context.Context, lookupFunc func(string) (string, bool)) (context.Context, error)

func LoadEnvInto added in v2.14.1

func LoadEnvInto(env any, lookupFunc func(string) (string, bool)) (any, error)

func LogAgentImageInfo added in v2.14.1

func LogAgentImageInfo(ctx context.Context, img string)

func WithAgentImageRetriever added in v2.7.4

func WithAgentImageRetriever(ctx context.Context, onChange func(context.Context, string) error) (context.Context, error)

WithAgentImageRetriever returns a context that is configured with an agent image retriever which will retrieve the agent image from the environment variable AGENT_IMAGE. An error is returned if the environment variable is empty.

func WithEnv added in v2.3.1

func WithEnv(ctx context.Context, env *Env) context.Context

func WithResolvedAgentImageRetriever added in v2.14.1

func WithResolvedAgentImageRetriever(ctx context.Context, ir ImageRetriever) context.Context

func WithSessionID added in v2.3.2

func WithSessionID(ctx context.Context, sessionID tunnel.SessionID) context.Context

func WithSessionInfo added in v2.3.2

func WithSessionInfo(ctx context.Context, si *manager.SessionInfo) context.Context

Types

type Env added in v2.3.1

type Env struct {
	Registry                     string        `env:"REGISTRY,                 parser=nonempty-string"`
	LogLevel                     string        `env:"LOG_LEVEL,                parser=logLevel"`
	User                         string        `env:"USER,                     parser=string,      default="`
	ServerHost                   string        `env:"SERVER_HOST,              parser=string,      default="`
	ServerPort                   uint16        `env:"SERVER_PORT,              parser=port-number"`
	PrometheusPort               uint16        `env:"PROMETHEUS_PORT,          parser=port-number, default=0"`
	MutatorWebhookPort           uint16        `env:"MUTATOR_WEBHOOK_PORT,     parser=port-number, default=0"`
	ManagerNamespace             string        `env:"MANAGER_NAMESPACE,        parser=string,      default="`
	APIPort                      uint16        `env:"AGENT_REST_API_PORT,      parser=port-number, default=0"`
	AgentArrivalTimeout          time.Duration `env:"AGENT_ARRIVAL_TIMEOUT,    parser=time.ParseDuration, default=0"`
	MaxNamespaceSpecificWatchers int           `env:"MAX_NAMESPACE_SPECIFIC_WATCHERS,parser=int,  default=10"`

	MaxReceiveSize resource.Quantity `env:"GRPC_MAX_RECEIVE_SIZE, parser=quantity"`

	PodCIDRStrategy string         `env:"POD_CIDR_STRATEGY, parser=nonempty-string"`
	PodCIDRs        []netip.Prefix `env:"POD_CIDRS,         parser=split-ipnet, default="`
	PodIP           netip.Addr     `env:"POD_IP,            parser=ip"`

	AgentRegistry            string                      `env:"AGENT_REGISTRY,                parser=string,         default="`
	AgentImageName           string                      `env:"AGENT_IMAGE_NAME,              parser=string,         default="`
	AgentImageTag            string                      `env:"AGENT_IMAGE_TAG,               parser=string,         default="`
	AgentImagePullPolicy     string                      `env:"AGENT_IMAGE_PULL_POLICY,       parser=string,         default="`
	AgentImagePullSecrets    []core.LocalObjectReference `env:"AGENT_IMAGE_PULL_SECRETS,      parser=json-local-refs,default="`
	AgentInjectPolicy        agentconfig.InjectPolicy    `env:"AGENT_INJECT_POLICY,           parser=enable-policy,  default=Never"`
	AgentAppProtocolStrategy k8sapi.AppProtocolStrategy  `env:"AGENT_APP_PROTO_STRATEGY,      parser=app-proto-strategy, default=http2Probe"`
	AgentLogLevel            string                      `env:"AGENT_LOG_LEVEL,               parser=logLevel,       defaultFrom=LogLevel"`
	AgentPort                uint16                      `env:"AGENT_PORT,                    parser=port-number,    default=0"`
	AgentResources           *core.ResourceRequirements  `env:"AGENT_RESOURCES,               parser=json-resources, default="`
	AgentMountPolicies       agentconfig.MountPolicies   `env:"AGENT_MOUNT_POLICIES,          parser=json-mount-policies, default="`
	AgentInitResources       *core.ResourceRequirements  `env:"AGENT_INIT_RESOURCES,          parser=json-resources, default="`
	AgentInjectorName        string                      `env:"AGENT_INJECTOR_NAME,           parser=string,         default="`
	AgentInjectorSecret      string                      `env:"AGENT_INJECTOR_SECRET,         parser=string,         default="`
	AgentSecurityContext     *core.SecurityContext       `env:"AGENT_SECURITY_CONTEXT,        parser=json-security-context, default="`
	AgentInitSecurityContext *core.SecurityContext       `env:"AGENT_INIT_SECURITY_CONTEXT,   parser=json-security-context, default="`

	ClientRoutingAlsoProxySubnets        []netip.Prefix `env:"CLIENT_ROUTING_ALSO_PROXY_SUBNETS,  		parser=split-ipnet, default="`
	ClientRoutingNeverProxySubnets       []netip.Prefix `env:"CLIENT_ROUTING_NEVER_PROXY_SUBNETS, 		parser=split-ipnet, default="`
	ClientRoutingAllowConflictingSubnets []netip.Prefix `env:"CLIENT_ROUTING_ALLOW_CONFLICTING_SUBNETS, 	parser=split-ipnet, default="`
	ClientDnsExcludeSuffixes             []string       `env:"CLIENT_DNS_EXCLUDE_SUFFIXES,        		parser=split-trim"`
	ClientDnsIncludeSuffixes             []string       `env:"CLIENT_DNS_INCLUDE_SUFFIXES,       		parser=split-trim,  default="`
	ClientConnectionTTL                  time.Duration  `env:"CLIENT_CONNECTION_TTL,              		parser=time.ParseDuration"`

	EnabledWorkloadKinds k8sapi.Kinds `env:"ENABLED_WORKLOAD_KINDS, parser=split-trim, default=Deployment StatefulSet ReplicaSet"`

	// For testing only
	CompatibilityVersion *semver.Version `env:"COMPATIBILITY_VERSION, parser=version, default="`
}

Env is the traffic-manager's environment. It does not define any defaults because all defaults are declared in the Helm chart that creates the deployment. The reason for this is that some defaults are needed in other places in the Helm chart. In other words, since the Helm chart needs access to all defaults, and the traffic-manager only needs a subset, it's better to declare defaults in the Helm chart.

The Env is responsible for all parsing of the environment strings. No parsing of such strings should be made elsewhere in the code.

func GetEnv added in v2.3.1

func GetEnv(ctx context.Context) *Env

func (*Env) GeneratorConfig added in v2.6.0

func (e *Env) GeneratorConfig(qualifiedAgentImage string) (agentmap.GeneratorConfig, error)

func (*Env) QualifiedAgentImage added in v2.6.0

func (e *Env) QualifiedAgentImage() string

type ImageFromEnv added in v2.14.1

type ImageFromEnv string

func (ImageFromEnv) GetImage added in v2.14.1

func (p ImageFromEnv) GetImage() string

type ImageRetriever added in v2.14.1

type ImageRetriever interface {
	GetImage() string
}

func GetAgentImageRetriever added in v2.18.0

func GetAgentImageRetriever(ctx context.Context) ImageRetriever

Jump to

Keyboard shortcuts

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