haloyd

package
v0.1.0-beta.4 Latest Latest
Warning

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

Go to latest
Published: Nov 24, 2025 License: MIT Imports: 41 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Run

func Run(debug bool)

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

type CertificatesDomain struct {
	Canonical string
	Aliases   []string
	Email     string
}

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 CertificatesManagerConfig

type CertificatesManagerConfig struct {
	CertDir          string
	HTTPProviderPort string
	TlsStaging       bool
}

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 DeploymentInstance struct {
	ContainerID string
	IP          string
	Port        string
}

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
}

Jump to

Keyboard shortcuts

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