managerutil

package
v2.18.0 Latest Latest
Warning

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

Go to latest
Published: Feb 10, 2024 License: Apache-2.0 Imports: 19 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

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. "docker.io/tel2:2.7.4", or an empty string if no agent image has been configured.

func GetSessionID added in v2.3.2

func GetSessionID(ctx context.Context) string

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 string) 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="`
	ManagedNamespaces   []string      `env:"MANAGED_NAMESPACES,       parser=split-trim,  default="`
	APIPort             uint16        `env:"AGENT_REST_API_PORT,      parser=port-number, default=0"`
	AgentArrivalTimeout time.Duration `env:"AGENT_ARRIVAL_TIMEOUT,    parser=time.ParseDuration"`

	TracingGrpcPort uint16            `env:"TRACING_GRPC_PORT,     parser=port-number,default=0"`
	MaxReceiveSize  resource.Quantity `env:"GRPC_MAX_RECEIVE_SIZE, parser=quantity"`

	PodCIDRStrategy string       `env:"POD_CIDR_STRATEGY, parser=nonempty-string"`
	PodCIDRs        []*net.IPNet `env:"POD_CIDRS,         parser=split-ipnet, default="`
	PodIP           net.IP       `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"`
	AgentAppProtocolStrategy k8sapi.AppProtocolStrategy  `env:"AGENT_APP_PROTO_STRATEGY, parser=app-proto-strategy"`
	AgentLogLevel            string                      `env:"AGENT_LOG_LEVEL,          parser=logLevel,       defaultFrom=LogLevel"`
	AgentPort                uint16                      `env:"AGENT_PORT,               parser=port-number"`
	AgentResources           *core.ResourceRequirements  `env:"AGENT_RESOURCES,          parser=json-resources, default="`
	AgentInitResources       *core.ResourceRequirements  `env:"AGENT_INIT_RESOURCES,     parser=json-resources, default="`
	AgentInjectorName        string                      `env:"AGENT_INJECTOR_NAME,      parser=string"`
	AgentInjectorSecret      string                      `env:"AGENT_INJECTOR_SECRET,    parser=nonempty-string"`

	ClientRoutingAlsoProxySubnets        []*net.IPNet  `env:"CLIENT_ROUTING_ALSO_PROXY_SUBNETS,  		parser=split-ipnet, default="`
	ClientRoutingNeverProxySubnets       []*net.IPNet  `env:"CLIENT_ROUTING_NEVER_PROXY_SUBNETS, 		parser=split-ipnet, default="`
	ClientRoutingAllowConflictingSubnets []*net.IPNet  `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"`
}

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