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 ContainerExclusionReason
- type Deployment
- type DeploymentInstance
- type DeploymentManager
- func (dm *DeploymentManager) BuildDeployments(ctx context.Context, logger *slog.Logger) (hasChanged bool, excludedContainers []ExcludedContainerInfo, err error)
- func (dm *DeploymentManager) Deployments() map[string]Deployment
- func (dm *DeploymentManager) GetCertificateDomains() ([]CertificatesDomain, error)
- func (dm *DeploymentManager) HealthCheckNewContainers(ctx context.Context, logger *slog.Logger) (checked []Deployment, failedContainerIDs []string)
- type ExcludedContainerInfo
- type HAProxyManager
- type TriggerReason
- type TriggeredByApp
- 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 ContainerExclusionReason ¶
type ContainerExclusionReason int
const ( ExclusionReasonInspectionFailed ContainerExclusionReason = iota ExclusionReasonLabelParsingFailed ExclusionReasonNoDomains ExclusionReasonNotDefaultNetwork ExclusionReasonIPExtractionFailed ExclusionReasonPortMismatch )
func (ContainerExclusionReason) String ¶
func (r ContainerExclusionReason) String() string
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) BuildDeployments ¶
func (dm *DeploymentManager) BuildDeployments(ctx context.Context, logger *slog.Logger) (hasChanged bool, excludedContainers []ExcludedContainerInfo, err error)
BuildDeployments gets running Docker containers with the app label and builds a map of current deployments in the system. It compares the new deployment state with the previous state to determine if any changes have occurred (additions, removals, or updates to deployments). Returns true if the deployment state has changed, along with any error encountered.
func (*DeploymentManager) Deployments ¶
func (dm *DeploymentManager) Deployments() map[string]Deployment
func (*DeploymentManager) GetCertificateDomains ¶
func (dm *DeploymentManager) GetCertificateDomains() ([]CertificatesDomain, error)
GetCertificateDomains collects all canonical domains and their aliases for certificate management.
func (*DeploymentManager) HealthCheckNewContainers ¶
func (dm *DeploymentManager) HealthCheckNewContainers(ctx context.Context, logger *slog.Logger) (checked []Deployment, failedContainerIDs []string)
type ExcludedContainerInfo ¶
type ExcludedContainerInfo struct {
ContainerID string
Reason ContainerExclusionReason
Message string
Labels *config.ContainerLabels
}
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 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 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) error
type UpdaterConfig ¶
type UpdaterConfig struct {
Cli *client.Client
DeploymentManager *DeploymentManager
CertManager *CertificatesManager
HAProxyManager *HAProxyManager
}