Documentation
¶
Index ¶
- func Run(debug bool)
- type CertificatesClientManager
- type CertificatesDomain
- type CertificatesKeyManager
- type CertificatesManager
- func (m *CertificatesManager) CleanupExpiredCertificates(logger *slog.Logger, domains []CertificatesDomain)
- func (cm *CertificatesManager) Refresh(logger *slog.Logger, domains []CertificatesDomain)
- func (cm *CertificatesManager) RefreshSync(logger *slog.Logger, domains []CertificatesDomain) error
- func (m *CertificatesManager) Stop()
- type CertificatesManagerConfig
- type CertificatesUser
- type ContainerEvent
- type Deployment
- type DeploymentInstance
- type DeploymentManager
- func (dm *DeploymentManager) Deployments() map[string]Deployment
- func (dm *DeploymentManager) DiscoverContainers(ctx context.Context, logger *slog.Logger) (discovered []DiscoveredContainer, failed []FailedContainer, err error)
- func (dm *DeploymentManager) GetCertificateDomains() ([]CertificatesDomain, error)
- func (dm *DeploymentManager) HealthCheckContainers(ctx context.Context, logger *slog.Logger, discovered []DiscoveredContainer) (healthy []HealthyContainer, failed []FailedContainer)
- func (dm *DeploymentManager) UpdateDeployments(healthy []HealthyContainer) (hasChanged bool)
- type DiscoveredContainer
- type FailedContainer
- type HAProxyManager
- type HealthyContainer
- type TriggerReason
- type TriggeredByApp
- type UpdateResult
- type Updater
- type UpdaterConfig
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
Types ¶
type CertificatesClientManager ¶
type CertificatesClientManager struct {
// contains filtered or unexported fields
}
func NewCertificatesClientManager ¶
func NewCertificatesClientManager( certDir string, tlsStaging bool, httpProviderPort string, ) (*CertificatesClientManager, error)
func (*CertificatesClientManager) LoadOrRegisterClient ¶
func (cm *CertificatesClientManager) LoadOrRegisterClient(email string) (*lego.Client, error)
type CertificatesDomain ¶
func (*CertificatesDomain) Validate ¶
func (cm *CertificatesDomain) Validate() error
type CertificatesKeyManager ¶
type CertificatesKeyManager struct {
// contains filtered or unexported fields
}
CertificatesKeyManager handles private key operations for the ACME client
func NewCertificatesKeyManager ¶
func NewCertificatesKeyManager(keyDir string) (*CertificatesKeyManager, error)
func (*CertificatesKeyManager) LoadOrCreateKey ¶
func (km *CertificatesKeyManager) LoadOrCreateKey(email string) (crypto.PrivateKey, error)
type CertificatesManager ¶
type CertificatesManager struct {
// contains filtered or unexported fields
}
func NewCertificatesManager ¶
func NewCertificatesManager(config CertificatesManagerConfig, updateSignal chan<- string) (*CertificatesManager, error)
func (*CertificatesManager) CleanupExpiredCertificates ¶
func (m *CertificatesManager) CleanupExpiredCertificates(logger *slog.Logger, domains []CertificatesDomain)
func (*CertificatesManager) Refresh ¶
func (cm *CertificatesManager) Refresh(logger *slog.Logger, domains []CertificatesDomain)
Refresh is used for periodic refreshes of certificates.
func (*CertificatesManager) RefreshSync ¶
func (cm *CertificatesManager) RefreshSync(logger *slog.Logger, domains []CertificatesDomain) error
func (*CertificatesManager) Stop ¶
func (m *CertificatesManager) Stop()
type CertificatesUser ¶
type CertificatesUser struct {
Email string
Registration *registration.Resource
// contains filtered or unexported fields
}
func (*CertificatesUser) GetEmail ¶
func (u *CertificatesUser) GetEmail() string
func (*CertificatesUser) GetPrivateKey ¶
func (u *CertificatesUser) GetPrivateKey() crypto.PrivateKey
func (*CertificatesUser) GetRegistration ¶
func (u *CertificatesUser) GetRegistration() *registration.Resource
type ContainerEvent ¶
type ContainerEvent struct {
Event events.Message
Container container.InspectResponse
Labels *config.ContainerLabels
}
type Deployment ¶
type Deployment struct {
Labels *config.ContainerLabels
Instances []DeploymentInstance
}
type DeploymentInstance ¶
type DeploymentManager ¶
type DeploymentManager struct {
// contains filtered or unexported fields
}
func NewDeploymentManager ¶
func NewDeploymentManager(cli *client.Client, haloydConfig *config.HaloydConfig) *DeploymentManager
func (*DeploymentManager) Deployments ¶
func (dm *DeploymentManager) Deployments() map[string]Deployment
func (*DeploymentManager) DiscoverContainers ¶
func (dm *DeploymentManager) DiscoverContainers(ctx context.Context, logger *slog.Logger) (discovered []DiscoveredContainer, failed []FailedContainer, err error)
DiscoverContainers finds all containers with haloy labels and validates their basic configuration. It returns containers that are eligible for health checking, and containers that failed validation.
func (*DeploymentManager) GetCertificateDomains ¶
func (dm *DeploymentManager) GetCertificateDomains() ([]CertificatesDomain, error)
GetCertificateDomains collects all canonical domains and their aliases for certificate management.
func (*DeploymentManager) HealthCheckContainers ¶
func (dm *DeploymentManager) HealthCheckContainers(ctx context.Context, logger *slog.Logger, discovered []DiscoveredContainer) (healthy []HealthyContainer, failed []FailedContainer)
HealthCheckContainers performs health checks on all discovered containers. Returns healthy containers (with IPs) and failed containers with detailed error information.
func (*DeploymentManager) UpdateDeployments ¶
func (dm *DeploymentManager) UpdateDeployments(healthy []HealthyContainer) (hasChanged bool)
UpdateDeployments builds the deployment map from healthy containers and compares with previous state. Returns whether the deployment state has changed.
type DiscoveredContainer ¶
type DiscoveredContainer struct {
ContainerID string
Labels *config.ContainerLabels
ContainerInfo container.InspectResponse
Port string
}
DiscoveredContainer represents a container found with haloy labels but not yet validated as healthy/routable.
type FailedContainer ¶
type FailedContainer struct {
ContainerID string
Labels *config.ContainerLabels // May be nil if label parsing failed
Reason string // Human-readable failure reason
Err error // Underlying error
}
FailedContainer represents a container that failed discovery or health check.
type HAProxyManager ¶
type HAProxyManager struct {
// contains filtered or unexported fields
}
func NewHAProxyManager ¶
func NewHAProxyManager(cli *client.Client, haloydConfig *config.HaloydConfig, configDir string, debug bool) *HAProxyManager
func (*HAProxyManager) ApplyConfig ¶
func (hpm *HAProxyManager) ApplyConfig(ctx context.Context, logger *slog.Logger, deployments map[string]Deployment) error
ApplyConfig generates, writes (if not debug), and reloads HAProxy config. This method is concurrency-safe due to the internal mutex.
type HealthyContainer ¶
type HealthyContainer struct {
ContainerID string
Labels *config.ContainerLabels
IP string
Port string
}
HealthyContainer is a container that passed health checks and is ready to receive traffic.
type TriggerReason ¶
type TriggerReason int
const ( TriggerReasonInitial TriggerReason = iota // Initial update at startup TriggerReasonAppUpdated // An app container was stopped, killed or removed TriggerPeriodicRefresh // Periodic refresh (e.g., every 5 minutes) )
func (TriggerReason) String ¶
func (r TriggerReason) String() string
type TriggeredByApp ¶
type TriggeredByApp struct {
// contains filtered or unexported fields
}
func (*TriggeredByApp) Validate ¶
func (tba *TriggeredByApp) Validate() error
type UpdateResult ¶
type UpdateResult struct {
// FailedContainers contains containers that failed discovery or health check.
// This is used by the caller to determine if a triggered app deployment failed.
FailedContainers []FailedContainer
}
UpdateResult contains information about the update operation.
func (*UpdateResult) GetAppFailures ¶
func (r *UpdateResult) GetAppFailures(appName string) []FailedContainer
GetAppFailures returns failures for a specific app from the update result.
type Updater ¶
type Updater struct {
// contains filtered or unexported fields
}
func NewUpdater ¶
func NewUpdater(config UpdaterConfig) *Updater
func (*Updater) Update ¶
func (u *Updater) Update(ctx context.Context, logger *slog.Logger, reason TriggerReason, app *TriggeredByApp) (UpdateResult, error)
type UpdaterConfig ¶
type UpdaterConfig struct {
Cli *client.Client
DeploymentManager *DeploymentManager
CertManager *CertificatesManager
HAProxyManager *HAProxyManager
}