cert-manager OCI Webhook (module.cert-manager-oci-webhook)

Purpose: Optional. Issues TLS certificates via DNS-01 validation when the operator does not provide their own certificate and the cluster is not internet-accessible.

This module is needed when both of these conditions are true:

  • The operator does not bring their own TLS certificate

  • The cluster is not reachable from the internet. Firewall rules (public_lb_cidrs) block port 80, or the DR standby cluster needs the certificate issued before failover when no traffic is routed to it yet.

Deployed on: Any workspace with cert_dns01_provider="oci" and cert_dns01_webhook_enabled=true when DNS-01 is needed.

This diagram shows how Terraform provisions the webhook resources and how the runtime certificate issuance flow works end-to-end using DNS-01 validation:

OCI Webhook provisioning

Step by step certificate flow:

Step Component Action
1IngressAnnotation triggers cert-manager to request a certificate
2cert-managerCreates ACME Order with DNS-01 challenge type
3ClusterIssuerRoutes challenge to OCI DNS webhook via APIService
4WebhookReads OCI API credentials from oci-dns-credentials secret
5WebhookCreates _acme-challenge.{domain} TXT record in OCI DNS
6Let's EncryptQueries DNS, finds the token, validates domain ownership
7cert-managerStores issued certificate in Kubernetes Secret
8WebhookRemoves the challenge TXT record (cleanup)

HTTP-01 vs DNS-01 Comparison:

Aspect HTTP-01 DNS-01 (Webhook)
Strimzi Kafka clusterMust allow Let's Encrypt IPs to port 80No inbound access needed
Humio operatorRequiredNot required
HumioCluster CRNot supportedSupported
nginx-ingressMay fail during DNS switchWorks anytime
cert-managerSimpleRequires webhook + OCI credentials

Configuration (tfvars):

terraform
cert_dns01_provider         = "oci"
cert_dns01_webhook_enabled  = true
cert_dns01_webhook_mode     = "auto"   # or "always"