CertManagerExtensions Methods
ClusterIssuer resources against it. AddCertManager(IResourceBuilder<KubernetesEnvironmentResource>, string, string?) Section titled AddCertManager(IResourceBuilder<KubernetesEnvironmentResource>, string, string?) extension IResourceBuilder<CertManagerResource> CertManagerResource that can host issuer resources. public static class CertManagerExtensions{ public static IResourceBuilder<CertManagerResource> AddCertManager( this IResourceBuilder<KubernetesEnvironmentResource> builder, string name, string? chartVersion = null) { // ... }}Parameters
builder IResourceBuilder<KubernetesEnvironmentResource> The Kubernetes environment resource builder. name string The Aspire resource name for the cert-manager installation. Each call adds a uniquely-named resource to the application model, so multiple Kubernetes environments must each pass distinct names. chartVersion string? optional The cert-manager Helm chart version to install. Defaults to a pinned version validated against this Aspire build. Returns
IResourceBuilder<CertManagerResource> A reference to the ApplicationModel.IResourceBuilder`1 for chaining. Remarks
Internally creates a KubernetesHelmChartResource via KubernetesHelmChartExtensions.AddHelmChart pointed at oci://quay.io/jetstack/charts/cert-manager. The chart is configured with:
crds.enabled = true— installs the cert-manager CRDs (ClusterIssuer,Certificate, ...) so issuer manifests can be applied immediately afterwards.config.enableGatewayAPI = true— lets cert-manager watch Gateway APIGateway/HTTPRouteresources for the cluster-issuer annotation.WithForceConflicts()— works around the AKS Azure Policy add-on mutating cert-manager'sValidatingWebhookConfigurationafter install.WithDestroy()— uninstalls the Helm release onaspire destroy.
Issuer manifests are applied directly via kubectl apply at deploy time (not as part of the Helm release), and are deleted via kubectl delete on aspire destroy before the cert-manager Helm release itself is uninstalled.
To customise additional Helm values, access the underlying chart via CertManagerResource.HelmChart.
AddIssuer(IResourceBuilder<CertManagerResource>, string) Section titled AddIssuer(IResourceBuilder<CertManagerResource>, string) extension IResourceBuilder<CertManagerIssuerResource> ClusterIssuer to this cert-manager installation. public static class CertManagerExtensions{ public static IResourceBuilder<CertManagerIssuerResource> AddIssuer( this IResourceBuilder<CertManagerResource> builder, string name) { // ... }}Parameters
builder IResourceBuilder<CertManagerResource> The cert-manager resource builder. name string The Aspire resource name. Also used as the metadata.name of the generated ClusterIssuer, so it must be a valid DNS-1123 label. Returns
IResourceBuilder<CertManagerIssuerResource> A reference to the ApplicationModel.IResourceBuilder`1 for chaining. WithAcmeServer(IResourceBuilder<CertManagerIssuerResource>, string, string) Section titled WithAcmeServer(IResourceBuilder<CertManagerIssuerResource>, string, string) extension IResourceBuilder<CertManagerIssuerResource> public static class CertManagerExtensions{ public static IResourceBuilder<CertManagerIssuerResource> WithAcmeServer( this IResourceBuilder<CertManagerIssuerResource> builder, string serverUrl, string email) { // ... }}Parameters
builder IResourceBuilder<CertManagerIssuerResource> The issuer resource builder. serverUrl string The ACME directory URL (e.g., https://acme.example.com/directory). email string The contact email registered with the ACME account. Returns
IResourceBuilder<CertManagerIssuerResource> A reference to the ApplicationModel.IResourceBuilder`1 for chaining. WithAcmeServer(IResourceBuilder<CertManagerIssuerResource>, string, IResourceBuilder<ParameterResource>) Section titled WithAcmeServer(IResourceBuilder<CertManagerIssuerResource>, string, IResourceBuilder<ParameterResource>) extension IResourceBuilder<CertManagerIssuerResource> public static class CertManagerExtensions{ public static IResourceBuilder<CertManagerIssuerResource> WithAcmeServer( this IResourceBuilder<CertManagerIssuerResource> builder, string serverUrl, IResourceBuilder<ParameterResource> email) { // ... }}Parameters
builder IResourceBuilder<CertManagerIssuerResource> The issuer resource builder. serverUrl string The ACME directory URL (e.g., https://acme.example.com/directory). email IResourceBuilder<ParameterResource> A parameter resource builder whose value is the contact email registered with the ACME account. Returns
IResourceBuilder<CertManagerIssuerResource> A reference to the ApplicationModel.IResourceBuilder`1 for chaining. WithHttp01Solver(IResourceBuilder<CertManagerIssuerResource>) Section titled WithHttp01Solver(IResourceBuilder<CertManagerIssuerResource>) extension IResourceBuilder<CertManagerIssuerResource> /.well-known/acme-challenge/{token} on the same hostname being validated. This requires the hostname to be publicly reachable on port 80. public static class CertManagerExtensions{ public static IResourceBuilder<CertManagerIssuerResource> WithHttp01Solver( this IResourceBuilder<CertManagerIssuerResource> builder) { // ... }}Parameters
builder IResourceBuilder<CertManagerIssuerResource> The issuer resource builder. Returns
IResourceBuilder<CertManagerIssuerResource> A reference to the ApplicationModel.IResourceBuilder`1 for chaining. Remarks
WithLetsEncryptProduction(IResourceBuilder<CertManagerIssuerResource>, string) Section titled WithLetsEncryptProduction(IResourceBuilder<CertManagerIssuerResource>, string) extension IResourceBuilder<CertManagerIssuerResource> public static class CertManagerExtensions{ public static IResourceBuilder<CertManagerIssuerResource> WithLetsEncryptProduction( this IResourceBuilder<CertManagerIssuerResource> builder, string email) { // ... }}Parameters
builder IResourceBuilder<CertManagerIssuerResource> The issuer resource builder. email string The contact email registered with the ACME account. Let's Encrypt uses this address for expiry notifications and rate-limit appeals. Returns
IResourceBuilder<CertManagerIssuerResource> A reference to the ApplicationModel.IResourceBuilder`1 for chaining. Remarks
CertManagerExtensions.WithLetsEncryptStaging which uses untrusted staging certificates with much higher rate limits. WithLetsEncryptProduction(IResourceBuilder<CertManagerIssuerResource>, IResourceBuilder<ParameterResource>) Section titled WithLetsEncryptProduction(IResourceBuilder<CertManagerIssuerResource>, IResourceBuilder<ParameterResource>) extension IResourceBuilder<CertManagerIssuerResource> public static class CertManagerExtensions{ public static IResourceBuilder<CertManagerIssuerResource> WithLetsEncryptProduction( this IResourceBuilder<CertManagerIssuerResource> builder, IResourceBuilder<ParameterResource> email) { // ... }}Parameters
builder IResourceBuilder<CertManagerIssuerResource> The issuer resource builder. email IResourceBuilder<ParameterResource> A parameter resource builder whose value is the contact email registered with the ACME account. Returns
IResourceBuilder<CertManagerIssuerResource> A reference to the ApplicationModel.IResourceBuilder`1 for chaining. WithLetsEncryptStaging(IResourceBuilder<CertManagerIssuerResource>, string) Section titled WithLetsEncryptStaging(IResourceBuilder<CertManagerIssuerResource>, string) extension IResourceBuilder<CertManagerIssuerResource> public static class CertManagerExtensions{ public static IResourceBuilder<CertManagerIssuerResource> WithLetsEncryptStaging( this IResourceBuilder<CertManagerIssuerResource> builder, string email) { // ... }}Parameters
builder IResourceBuilder<CertManagerIssuerResource> The issuer resource builder. email string The contact email registered with the ACME account. Returns
IResourceBuilder<CertManagerIssuerResource> A reference to the ApplicationModel.IResourceBuilder`1 for chaining. WithLetsEncryptStaging(IResourceBuilder<CertManagerIssuerResource>, IResourceBuilder<ParameterResource>) Section titled WithLetsEncryptStaging(IResourceBuilder<CertManagerIssuerResource>, IResourceBuilder<ParameterResource>) extension IResourceBuilder<CertManagerIssuerResource> public static class CertManagerExtensions{ public static IResourceBuilder<CertManagerIssuerResource> WithLetsEncryptStaging( this IResourceBuilder<CertManagerIssuerResource> builder, IResourceBuilder<ParameterResource> email) { // ... }}Parameters
builder IResourceBuilder<CertManagerIssuerResource> The issuer resource builder. email IResourceBuilder<ParameterResource> A parameter resource builder whose value is the contact email registered with the ACME account. Returns
IResourceBuilder<CertManagerIssuerResource> A reference to the ApplicationModel.IResourceBuilder`1 for chaining. WithTls(IResourceBuilder<KubernetesGatewayResource>, IResourceBuilder<CertManagerIssuerResource>) Section titled WithTls(IResourceBuilder<KubernetesGatewayResource>, IResourceBuilder<CertManagerIssuerResource>) extension IResourceBuilder<KubernetesGatewayResource> ClusterIssuer. This adds the cert-manager.io/cluster-issuer annotation to the generated Gateway resource, causing cert-manager to provision and renew a certificate for each gateway listener hostname. public static class CertManagerExtensions{ public static IResourceBuilder<KubernetesGatewayResource> WithTls( this IResourceBuilder<KubernetesGatewayResource> builder, IResourceBuilder<CertManagerIssuerResource> issuer) { // ... }}Parameters
builder IResourceBuilder<KubernetesGatewayResource> The gateway resource builder. issuer IResourceBuilder<CertManagerIssuerResource> The cert-manager ClusterIssuer to issue certificates from. Returns
IResourceBuilder<KubernetesGatewayResource> A reference to the ApplicationModel.IResourceBuilder`1 for chaining. Remarks
WithTls() followed by WithGatewayAnnotation("cert-manager.io/cluster-issuer", issuer.Resource.Name), but type-safe and refactor-friendly. Throws if the gateway and the issuer's cert-manager installation are not part of the same Kubernetes environment, since cert-manager is per-cluster and would otherwise silently produce an unsatisfiable TLS configuration.