Documentation
¶
Index ¶
- Constants
- func BuildPortEnvVars(template *model.Template) []string
- func CreateManagedPath(path string) (string, error)
- func DeleteManagedPath(path string) error
- func FormatEnvStrings(env []EnvVar) []string
- func RemoveExistingPortEnvVars(env []string) []string
- func ResolveManagedPath(path string) (string, error)
- func ResolveManagedPathBinds(binds []string, volumeData model.VolumeDataMap) []string
- func ValidateManagedVolumeBinds(binds []string, volumeData model.VolumeDataMap) error
- type AgentDNSInjection
- type ContainerManager
- type EnvVar
Constants ¶
const ( // AgentDNSEnvVar gates the in-container agent's resident resolver. AgentDNSEnvVar = "KNOT_AGENT_DNS" // AgentServerResolveEnv carries a curl "--resolve" value // ("<host>:<port>:<ip>") for the URL the entrypoint fetches the agent from. // The container's nameserver is 127.0.0.1 (not up until the agent starts), // so the fetch can't resolve KNOT_SERVER; curl --resolve connects straight // to the IP while keeping the hostname for SNI/Host. AgentServerResolveEnv = "KNOT_SERVER_RESOLVE" // AgentServerDNSEnv is the address ("<ip>:<port>") of the knot server's own // DNS server, which lives on the same host as the agent endpoint. The agent // forwards every query here; the server answers the wildcard zone from its // dns-records and forwards the rest upstream. AgentServerDNSEnv = "KNOT_SERVER_DNS" // AgentDNSListener is the address the agent resolver listens on; the // container's sole nameserver is pointed here. AgentDNSListener = "127.0.0.1" )
const ManagedPathType = "path"
Variables ¶
This section is empty.
Functions ¶
func BuildPortEnvVars ¶ added in v0.25.0
func CreateManagedPath ¶ added in v0.25.0
func DeleteManagedPath ¶ added in v0.25.0
func FormatEnvStrings ¶ added in v0.32.0
FormatEnvStrings formats env vars back to "KEY=value" strings, preserving the order of the input slice.
func RemoveExistingPortEnvVars ¶ added in v0.25.0
RemoveExistingPortEnvVars removes any existing KNOT_HTTP_PORT, KNOT_HTTPS_PORT, or KNOT_TCP_PORT entries from the given environment slice.
func ResolveManagedPath ¶ added in v0.25.0
func ResolveManagedPathBinds ¶ added in v0.25.0
func ResolveManagedPathBinds(binds []string, volumeData model.VolumeDataMap) []string
func ValidateManagedVolumeBinds ¶ added in v0.25.0
func ValidateManagedVolumeBinds(binds []string, volumeData model.VolumeDataMap) error
Types ¶
type AgentDNSInjection ¶ added in v0.32.0
type AgentDNSInjection struct {
Env []string
DNS []string // 127.0.0.1 (the agent resolver) — single entry
}
AgentDNSInjection is the set of container-level additions applied to a space when the server's DNS server is enabled (the signal that knot manages DNS for the wildcard domain, both for external clients and inside spaces).
func BuildAgentDNSInjection ¶ added in v0.32.0
func BuildAgentDNSInjection() (AgentDNSInjection, error)
BuildAgentDNSInjection computes the injection for a space. It returns a zero value when the server's DNS server is disabled.
The container's only nameserver is 127.0.0.1 (the agent resolver), which forwards every query to the knot server's own DNS (KNOT_SERVER_DNS). That makes the server the single DNS point for the space: it serves the wildcard zone from its dns-records and forwards the rest upstream (using the server's configured nameservers, or the system default). The agent needs no upstream list of its own.
Two different server addresses are involved:
- KNOT_SERVER_RESOLVE uses the URL host (the address the entrypoint fetches the agent from — typically the ingress).
- KNOT_SERVER_DNS uses the agent-endpoint host (where the server process, and thus its DNS listener, actually runs) — often a different host.
If either host can't be resolved, an error is returned so the caller refuses to start the space.
type ContainerManager ¶
type ContainerManager interface {
// space management
CreateSpaceJob(user *model.User, template *model.Template, space *model.Space, variables map[string]interface{}) error
DeleteSpaceJob(space *model.Space, onStopped func()) error
CreateSpaceVolumes(user *model.User, template *model.Template, space *model.Space, variables map[string]interface{}) error
DeleteSpaceVolumes(space *model.Space) error
CleanupSpaceArtifacts(space *model.Space) error
StopSpaceRuntime(space *model.Space) error
// volume management
CreateVolume(vol *model.Volume, variables map[string]interface{}) error
DeleteVolume(vol *model.Volume, variables map[string]interface{}) error
}
type EnvVar ¶ added in v0.32.0
EnvVar is a single environment variable as an ordered key/value pair.
func ParseEnvStrings ¶ added in v0.32.0
ParseEnvStrings parses "KEY=value" entries into an ordered slice of EnvVar. Entries without "=" or with an empty key are skipped. Order is preserved so callers that care about insertion order (e.g. the spec wizard, which round-trips the user's ordering through HCL/YAML emission) don't lose it.