Commit Graph
28 Commits
Author SHA1 Message Date
Thibault VINCENTandThibault VINCENT 58b2ec8d21 feat(cert/jks): implement native JCEKS reader (keystore-go rejects JCEKS magic) 2026-05-15 16:54:25 +02:00
Thibault VINCENTandThibault VINCENT 074db8806a fix(k8s): trim only CR/LF from secret-sourced passphrases, not all whitespace 2026-05-13 17:55:30 +02:00
Thibault VINCENTandThibault VINCENT 19305f0774 feat(config, cmd): wire format: jks + jks: passphrase block 2026-05-13 17:55:30 +02:00
Thibault VINCENTandThibault VINCENT 36aaf393da feat(registry): add x509_jks_passphrase_failures_total + format-aware routing 2026-05-13 17:55:30 +02:00
Thibault VINCENTandThibault VINCENT 3d571b6de3 feat(cert/jks): parse JKS and JCEKS keystores and truststores 2026-05-13 17:55:30 +02:00
Thibault VINCENTandThibault VINCENT 7ce1092693 feat(cert/der): parse single-blob DER as cert or CRL via x509 stdlib 2026-05-13 16:57:02 +02:00
Thibault VINCENTandThibault VINCENT 176e25ce1f feat(registry): emit x509_crl_* metric family from Bundle.RevocationItems 2026-05-13 16:57:02 +02:00
Thibault VINCENTandThibault VINCENT fcc6dd2205 feat(cert/pem): parse X509 CRL blocks into Bundle.RevocationItems 2026-05-13 16:57:02 +02:00
Thibault VINCENTandThibault VINCENT 80b44e80f3 test(cabundle): close audit gaps (rotation, cross-kind, validation, fixtures) 2026-05-13 14:24:36 +02:00
Thibault VINCENTandThibault VINCENT 7610ca68fe feat(cabundle): extend source to APIService and CRD conversion webhooks 2026-05-13 14:24:36 +02:00
Thibault VINCENTandThibault VINCENT 6f8d78396a feat(source/cabundle): watch MWC + VWC caBundles cluster-wide 2026-05-13 14:24:36 +02:00
Thibault VINCENTandThibault VINCENT 4431be6714 test(file): cover SkipUnchanged invalidation on edit 2026-05-13 14:06:52 +02:00
Thibault VINCENTandThibault VINCENT 13222ed141 test(kubeconfig): cover embedded cert rotation in place 2026-05-13 14:06:52 +02:00
Thibault VINCENTandThibault VINCENT f2189b43ca test(k8s): cover Secret rotation and Secret/ConfigMap same-name disambiguation 2026-05-13 14:06:52 +02:00
Thibault VINCENTandThibault VINCENT ab1ce3ad77 feat(k8s): support shell-glob patterns in include/exclude names 2026-05-11 18:16:38 +02:00
Thibault VINCENT 5614977544 refactor: drop pre-v4 leftover debug constant and timing placeholder 2026-05-06 04:56:29 +02:00
Thibault VINCENT aabe4eaa9b refactor(pkg): promote fileglob and source/* from internal 2026-05-06 04:52:48 +02:00
Thibault VINCENT ea0c765a59 docs: document deferred Lot 4 optimisations as inline TODOs 2026-05-05 15:22:41 +02:00
Thibault VINCENT d8a9f3073c refactor(cert): centralize remaining error reason codes 2026-05-05 15:09:56 +02:00
Thibault VINCENT 7ab4d2972b refactor(cert): extract typed constants for parser format names 2026-05-05 15:08:14 +02:00
Thibault VINCENT 4c6f518fed refactor: centralize secret_label/configmap_label attribute prefixes 2026-05-05 15:06:31 +02:00
Thibault VINCENT 14b17c79dc docs: align comments and documentation with direct LIST+WATCH architecture 2026-05-05 14:34:42 +02:00
Thibault VINCENT ab4d4709d0 refactor: extract typed constants for Source kind values 2026-05-05 14:22:20 +02:00
Thibault VINCENT 650a1a4923 test: add regression guards for the stats UI 2026-05-03 16:12:17 +02:00
Thibault VINCENT cbd272456f fix: bundle errors not reaching the stats UI 2026-05-03 16:11:12 +02:00
Thibault VINCENT a719113cb8 feat!: add new metric gates, diags and not_before off by defaut, 2026-05-03 16:07:48 +02:00
Thibault VINCENT 647f284706 test(fuzz): new tests on cert parsers and glob pattern 2026-05-02 14:57:36 +02:00
Thibault VINCENT b4f3f84086 feat!: rewrite from scratch with new architecture and toolchain
Complete rewrite of the codebase, the build pipeline, the dev loop,
and the release pipeline.

For the exporter itself, refer to the updated README and Helm chart
documentation to discover the new functionality and assess the impact
of the breaking changes on your existing setup.

Build & release:
- QA/CI pipelines now run through a Dagger Module, wrapped by
  Taskfile.yml for the developer interface.
- Releases run through GoReleaser: cross-compiled binaries × OS/arch,
  archives, checksums, multi-arch container images (busybox + scratch
  variants on linux/amd64,arm64,riscv64), pushed to ghcr/quay/docker.io.
- Everything is cosign-signed (binaries, images, Helm chart). Image
  CycloneDX SBOMs are attached as cosign attestations. SLSA-3
  provenance is attached to every GitHub Release.
- The Helm chart is published as a cosign-signed OCI artifact.
- Versioning and changelog are automated by release-please from
  Conventional Commits.

Dev experience:
- Local loop driven by Tilt + k3d + Dagger; one command brings up an
  exporter with seeded fixtures and a Prometheus scraping it.
- End-to-end tests run on a throwaway k3d cluster against the real
  rendered chart.

BREAKING CHANGE: the Helm chart is now published exclusively as an OCI
artifact at oci://quay.io/enix/charts/x509-certificate-exporter. The
legacy Helm repository at https://charts.enix.io is no longer updated;
users must switch to the OCI reference (Helm 3.8+ required).
Installation: `helm install x509-certificate-exporter
oci://quay.io/enix/charts/x509-certificate-exporter --version <vX.Y.Z>`.
BREAKING CHANGE: the Helm chart's values schema may diverge from v3 in
edge cases despite a best-effort to preserve backwards compatibility.
Review your existing values against the updated chart/values.yaml
before upgrading. A JSON schema (chart/values.schema.json) is shipped
with the chart so `helm install` / `helm upgrade` will reject any
values that no longer match the expected shape, surfacing regressions
early instead of at runtime.
BREAKING CHANGE: Alpine-based container images are no longer published.
The release pipeline now ships only the `busybox` and `scratch` variants
on linux/amd64,arm64,riscv64. Users pulling `*-alpine` tags must switch
to one of the new variants — `busybox` is the closest functional
replacement (still has a shell), `scratch` is the minimal distroless
option.
2026-04-30 20:35:54 +02:00