cert-manager webhook for open-provider DNS01 challenges. (Not officially supported by Open Provider)
  • Go 77%
  • Go Template 11.6%
  • Shell 8.3%
  • Dockerfile 3.1%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
JesseBot b891266494
Some checks failed
docker-push.yml / Merge pull request 'Update module github.com/cert-manager/cert-manager to v1.21.1' (#37) from renovate/github.com-cert-manager-cert-manager-1.x into main (push) Failing after 0s
Merge pull request 'Update module github.com/cert-manager/cert-manager to v1.21.1' (#37) from renovate/github.com-cert-manager-cert-manager-1.x into main
Reviewed-on: #37
Reviewed-by: JesseBot <jessebot@linux.com>
2026-08-16 20:49:40 +00:00
.forgejo add workflow dispatch 2026-07-06 13:33:55 +00:00
charts/cert-manager-webhook-open-provider Update to version 2.1.1 and regenerate docs. 2026-07-06 13:31:15 +00:00
docker Update module github.com/cert-manager/cert-manager to v1.21.1 2026-07-29 13:57:53 +00:00
.gitignore Stop logging credentials, add more docs, and add .ignore files 2026-06-23 08:32:27 +02:00
AI_POLICY.md add AI Policy 2026-06-20 11:18:29 +02:00
CONTRIBUTING.md Stop logging credentials, add more docs, and add .ignore files 2026-06-23 08:32:27 +02:00
LICENSE Initial commit 2026-06-19 19:32:44 +00:00
README.md get rid of the httproute and ingress, bump appVerion to prod version, update more docs (#35) 2026-06-23 06:52:50 +00:00
renovate.json add super basic helm chart 2026-06-20 10:51:13 +02:00

cert-manager-webhook-open-provider

This repo implements a cert-manager webhook for DNS01 challenges using Open Provider. It contains the golang code, it's Dockerfile, and helm chart.

Helm Chart

Installation

helm repo add codeberg.org https://codeberg.org/api/packages/open-engineering/helm
helm repo update
helm install cert-manager-webhook-open-provider codeberg.org/cert-manager-webhook-open-provider

Setting the log level

You can update your values.yaml with the following:

# this can any of the following: DEBUG, INFO, WARN, ERROR
logLevel: "DEBUG"

How to Setup the Issuer or ClusterIssuer

Make sure you first have an existing Kubernetes Secret with your Open Provider username and password. Example:

---
apiVersion: v1
kind: Secret
metadata:
  name: openprovider-api-credentials
stringData:
  username: my-username
  password: my-password-that-is-real-and-secur3

Here's a basic example of creating a ClusterIssuer:

apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
  name: letsencrypt-staging
spec:
  acme:
    # this should be YOUR actual email address
    email: your@email.tld
    privateKeySecretRef:
      name: letsencrypt-staging
    server: https://acme-staging-v02.api.letsencrypt.org/directory
    solvers:
      - dns01:
          webhook:
            # leave this like this unless you changed groupName in the helm values.
            groupName: acme.openprovider.eu
            # this must be this value
            solverName: openprovider
            config:
              userSecretRef:
                # name of the Kubernetes Secret where you have your Open Provider username
                name: openprovider-api-credentials
                # key in your Kubernetes secret with the username
                key: USERNAME
              passwordSecretRef:
                # name of the Kubernetes Secret where you have your Open Provider password
                name: openprovider-api-credentials
                # key in your Kubernetes secret with the password
                key: PASSWORD

Status

This is still in the later beta phases as @jessebot and @cloudymax develop the open provider webhook from scratch :)

We followed this guide for cert-manager webhooks: https://cert-manager.io/docs/contributing/dns-providers/

And this guide for Open Provider's API: https://docs.openprovider.com/doc/all#tag/descDNSQuickstart

We need to add proper tests and ci for said tests, but this is otherwise in a good state for you to start testing in your own dev environments. PRs welcome for those tests after you read our contributing guide!

Limitations and Roadmap

We'd like to take an optional zoneId and/or zoneName in the spec.acme.solvers[].dns01.webhook.config section, so we can allow users to jail a given Issuer or ClusterIssuer to only one specific DNS Zone. Right now, we just assume it's the base domain like domain.tld, but this doesn't cover if you have a special zone like my.domain.tld that you want to use.