container

package
v0.50.4 Latest Latest
Warning

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

Go to latest
Published: Apr 28, 2026 License: Apache-2.0 Imports: 46 Imported by: 1

Documentation

Index

Constants

View Source
const (
	// DefaultWorkspaceDir is the default path to the workspace directory in the runner's environment.
	DefaultWorkspaceDir = "/home/build"
	// DefaultCacheDir is the default path to the cache directory in the runner's environment.
	DefaultCacheDir = "/var/cache/melange"
	// DefaultResolvConfPath is the default path to the resolv.conf file in the runner's environment.
	DefaultResolvConfPath = "/etc/resolv.conf"
)
View Source
const (
	KB = 1 << (10 * iota)
	MB
	GB
	TB
)

Use binary values for all units

View Source
const (
	BubblewrapName = "bubblewrap"
)
View Source
const QemuName = "qemu"

Variables

This section is empty.

Functions

func GenerateBaseInitramfs added in v0.46.0

func GenerateBaseInitramfs(ctx context.Context, arch apko_types.Architecture, cfg MicrovmConfig, outputPath string) error

GenerateBaseInitramfs generates a base initramfs suitable for the QEMU runner. This can be reused via QEMU_BASE_INITRAMFS, but is cached if not.

The generated initramfs does NOT contain SSH host keys or kernel modules, those are injected at runtime by the QEMU runner.

func LogObservabilityEvents added in v0.48.0

func LogObservabilityEvents(ctx context.Context, events *ObservabilityEvents)

LogObservabilityEvents writes all observability events to melange's stdout via the structured logger. Each raw event is logged as a separate line with an [OBSERVABILITY] prefix for filtering. Network connections get a dedicated summary section. In the elastic build environment, these log lines flow to Cloud Logging via GKE pod stdout and are individually searchable.

Types

type BindMount

type BindMount struct {
	Source      string
	Destination string
}

type Capabilities

type Capabilities struct {
	Networking bool
	Add        []string // List of kernel capabilities to add to the container.
	Drop       []string // List of kernel capabilities to drop from the container.
}

type Config

type Config struct {
	PackageName              string
	Mounts                   []BindMount
	Capabilities             Capabilities
	Environment              map[string]string
	ImgRef                   string
	PodID                    string
	Arch                     apko_types.Architecture
	RunAsUID                 string
	RunAs                    string
	WorkspaceDir             string
	CacheDir                 string
	CPU, CPUModel, Memory    string
	SSHKey                   ssh.Signer
	SSHAddress               string             // SSH address for the build / chrooted environment
	SSHControlAddress        string             // SSH address for the control / management environment
	SSHHostKey               string             // Path to known_hosts file containing the VM's host key
	VMHostKeySigner          ssh.Signer         // VM's SSH host key (private signer)
	VMHostKeyPublic          ssh.PublicKey      // VM's SSH host key (public) - for verification
	VMHostKeyPrivateKeyBytes []byte             // VM's SSH host key (raw private key bytes) - for injection
	VMHostKeyPrivate         ed25519.PrivateKey // VM's SSH host key (raw private key) - for explicit zeroing
	InitramfsPath            string             // Path to temp initramfs file (contains sensitive key material)
	Disk                     string
	Timeout                  time.Duration
	SSHBuildClient           *ssh.Client // SSH client for the build environment, may not have privileges
	SSHControlBuildClient    *ssh.Client // SSH client for control operations in the build environment, has privileges
	SSHControlClient         *ssh.Client // SSH client for unrestricted control environment, has privileges
	QemuProcess              *os.Process // QEMU process handle (not just PID, to avoid PID reuse issues)
	RunAsGID                 string

	// Virtiofs-related fields for cache directory
	VirtiofsEnabled     bool   // Whether virtiofs is enabled for cache
	VirtiofsdPID        int    // PID of virtiofsd daemon for cleanup
	VirtiofsdSocketPath string // Path to Unix socket for virtiofsd

	// ObservabilityHook is true when the observability hook's sentinel file
	// was found in the initramfs CPIO during VM setup. When false,
	// RetrieveObservabilityEvents returns immediately without probing the VM.
	ObservabilityHook bool
}

type Debugger added in v0.6.0

type Debugger interface {
	Debug(ctx context.Context, cfg *Config, envOverride map[string]string, cmd ...string) error
}

type Loader added in v0.4.0

type Loader interface {
	LoadImage(ctx context.Context, layer v1.Layer, arch apko_types.Architecture, bc *apko_build.Context) (ref string, err error)