v0.1.1
Hardens the distribution: the image base, configuration loading,
the release gate, and installs on a private network.
Added
-
Chart installation on a private network.
The chart README covered only a direct pull from GHCR,
which a cluster without egress cannot do.
It now covers three ways in:
a proxy for the helm client,
a one-time file transfer withhelm pullandskopeo copy --all,
and a standing mirror in an internal OCI registry that holds the chart next to the image.
Each one names the version forms that differ,
chartX.Y.Zagainst imagevX.Y.Z,
and the values an internal registry needs,
image.repositoryandimagePullSecrets. -
A guarded release task.
mise run release -- vX.Y.Zrefuses a malformed version,
a dirty tree, aHEADthat is notorigin/main,
a tag that already exists locally or on the remote,
and a commit whose check and e2e runs onmaindid not both succeed,
and only then creates and pushes the annotated tag that cuts a release.
Changed
-
The image is based on distroless static.
gcr.io/distroless/static-debian12:nonrootreplaces the Chainguard static image.
Both bases carry the CA bundle profgate needs whennats.urlusestls://,
but distroless offers a pinned tag that still receives security updates,
where the Chainguard free tier tracks onlylatest.
The runtime UID stays 65532, so no manifest changes. -
Configuration loading adopts fuda v1.7.0.
The loader now tracks which keys the YAML document supplied,
so a declared default no longer overwrites a value the operator wrote as the field's zero.
Validation failures render as<key>: <plain statement>,
for examplediscovery.pprof.port: must be at most 65535.
Fixed
- The PGO sampling defaults gained floors.
Four keys had a default but no lower bound:
pgo.defaults.sampling.duration,rounds,maxParallel, andpgo.defaults.artifact.retention.
A zero duration samples nothing,
and zero rounds or zeromaxParalleldescribes a Collection that does no work.
Each field now refuses values below the floor an operator override was already held to:
1s, 1, 1, and 1m.
pgo.defaults.sampling.roundIntervalkeeps accepting zero,
which is a setting an operator can mean.
Artifacts
- Image:
ghcr.io/arloliu/profgate:v0.1.1 - Chart:
oci://ghcr.io/arloliu/charts/profgateversion0.1.1