Skip to content

test(e2e): prove cert-manager gets a CryptOS certificate over ACME in a kind cluster #293

Closed

Description

@Bugs5382

Summary

Nothing in CI shows that a real Kubernetes client can get a certificate from CryptOS over ACME. The ACME tests in internal/acme drive the handler with a Go client, and the lab run needs hardware. A kind cluster on a GitHub-hosted runner can close that gap: CryptOS runs from the repo's code on the runner, and cert-manager in the cluster enrols against it through an ingress, the way an operator would set it up.

Acceptance criteria

  • An issuing node is stood up from the repo's code outside the OS image, reusing the in-process e2e harness (software key backend, embedded etcd, no TPM): a Root signs an Intermediate, and the Intermediate serves ACME from a pki.acme block parsed through config.Parse, built by the same code the boot uses.
  • A kind cluster (pinned kind binary with checksum, kindest/node pinned by digest) runs cert-manager (pinned manifest with checksum), an ingress controller (pinned manifest with checksum) and a small test app pinned by digest.
  • A ClusterIssuer points at the node with the CryptOS root as caBundle, an External Account Binding, and an http-01 solver through the ingress. The node validates the challenge through normal name resolution, with no validator bypass.
  • A Certificate with an ECDSA P-384 private key goes Ready. The secret's chain verifies to the CryptOS root, the SANs match, and the serial is in the node's issued set.
  • A forced renewal produces a new serial, also recorded by the node.
  • task e2e:kind runs it locally on Linux and skips with a clear message when docker or kind is missing.
  • A CI workflow runs it on pull requests that touch internal/acme, internal/config, internal/node, internal/e2e or the workflow, skips drafts, sets a timeout, and is not a required check.

Notes

Related: #110 (ACME for cert-manager and native clients).

Activity

  1. added this to the v1.0.0 milestone on Sep 30, 2026
  2. self-assigned this
    on Sep 30, 2026
  3. added
    enhancementNew feature (feat). Minor version bump.
    skip-changelogExcluded from release notes (chore/ci/test/style).
    on Sep 30, 2026
  4. added theissue type on Sep 30, 2026
  5. Bugs5382 commented on Sep 30, 2026

    @Bugs5382
    ContributorAuthor

    Done in #294. The full-image version is tracked separately.

  6. Bugs5382 commented on Sep 30, 2026

    @Bugs5382
    ContributorAuthor

    Follow-up: #295 adds a slower companion that boots the real image in QEMU and runs this same cert-manager enrolment against a booted Intermediate. This kind test stays the pull-request check.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

enhancementNew feature (feat). Minor version bump.skip-changelogExcluded from release notes (chore/ci/test/style).

Type

Projects

No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions