NAME

IO::K8s::CertManager - cert-manager CRD resource map provider for IO::K8s

VERSION

version 1.108

SYNOPSIS

my $k8s = IO::K8s->new(with => ['IO::K8s::CertManager']);

my $cert = $k8s->new_object('Certificate',
    metadata => { name => 'my-cert', namespace => 'default' },
    spec => {
        secretName => 'my-cert-tls',
        issuerRef  => { name => 'letsencrypt', kind => 'ClusterIssuer' },
        dnsNames   => ['example.com'],
    },
);

print $cert->to_yaml;

DESCRIPTION

Resource map provider for cert-manager Custom Resource Definitions. Registers 6 CRD classes covering cert-manager.io/v1 and acme.cert-manager.io/v1, modeled to full depth: spec (and, where upstream declares one, status) is a typed object graph of 71 further IO::K8s::CertManager::V1::* classes, one per upstream Go structure, named after the upstream Go types (IO::K8s::CertManager::V1::Certificate's issuerRef is an IO::K8s::CertManager::V1::IssuerReference, and so on down) rather than an opaque hashref. Embedded core and Gateway API types are referenced, not re-modeled. A Go type used by more than one Kind (SecretKeySelector, IssuerReference, LocalObjectReference, ServiceAccountRef, the whole ACMEChallengeSolver family) is one shared class, not a copy per Kind -- most notably IssuerSpec/IssuerStatus themselves, the literal same Go types embedded by both Issuer and ClusterIssuer, so those two Kinds share their entire spec/status tree.

Not loaded by default — opt in via the with constructor parameter of IO::K8s or by calling $k8s->add('IO::K8s::CertManager') at runtime.

Included CRDs (cert-manager.io/v1)

  • Certificate (namespaced) -- a human-readable request that an up to date, signed X.509 certificate be kept stored in the Kubernetes Secret named in spec.secretName.

  • CertificateRequest (namespaced) -- the single-shot request cert-manager generates from a Certificate to actually obtain one signed certificate from the referenced issuer; disposable, and re-created on each renewal.

  • Issuer (namespaced) -- a certificate-issuing authority (ACME, CA, Vault, self-signed, ...), usable only by Certificates in its own namespace.

  • ClusterIssuer (cluster-scoped) -- the same issuer abstraction as Issuer, but referenceable from Certificates in any namespace. Issuer and ClusterIssuer embed the identical upstream IssuerSpec/IssuerStatus Go types, which is why this distribution models them as one shared spec/status class tree (see above).

Included CRDs (acme.cert-manager.io/v1)

  • Order (namespaced) -- represents a single ACME certificate order, created automatically once a CertificateRequest referencing an ACME issuer exists.

  • Challenge (namespaced) -- represents one ACME challenge (HTTP-01, DNS-01, ...) that must be completed to authorize a single DNS name/identifier within an Order.

SEE ALSO

IO::K8s

cert-manager documentation

cert-manager API reference

ACME issuer

SUPPORT

Issues

Please report bugs and feature requests on GitHub at https://github.com/pplu/io-k8s-p5/issues.

CONTRIBUTING

Contributions are welcome! Please fork the repository and submit a pull request.

AUTHORS

  • Torsten Raudssus <getty@cpan.org>

  • Jose Luis Martinez Torres <jlmartin@cpan.org>

COPYRIGHT AND LICENSE

This software is Copyright (c) 2018-2026 by Jose Luis Martinez Torres <jlmartin@cpan.org>.

This is free software, licensed under:

The Apache License, Version 2.0, January 2004