Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
132 commits
Select commit Hold shift + click to select a range
f08bf18
Update NetworkPolicy guidelines to reflect the correct namespace
sztyup Nov 2, 2025
f34c670
docs: add Rackspace supported webhook
cardoe Jan 12, 2026
af6df60
Remove outdated information regarding Let's Encrypt ACME client behavior
jnoordsij Jan 14, 2026
9c4e19e
Reword description for ACMEIssuer email field
jnoordsij Jan 14, 2026
3bc0c77
chore(deps): update actions/setup-node digest to 6044e13
renovate[bot] Jan 16, 2026
09b6c4c
Merge pull request #1915 from cert-manager/renovate/misc-github-actions
cert-manager-prow[bot] Jan 16, 2026
577c7af
chore(deps): update dependency globals to v17
renovate[bot] Jan 19, 2026
f06c5c0
fix(deps): update misc npm packages
renovate[bot] Jan 19, 2026
577e308
BOT: run 'make upgrade-klone' and 'make generate'
cert-manager-bot Jan 20, 2026
6bc3b91
Merge pull request #1922 from cert-manager/self-upgrade-master
cert-manager-prow[bot] Jan 20, 2026
d6b4a8f
update supported releases to reflect changes for c-m 1.19
SgtCoDFish Jan 20, 2026
e620400
Merge pull request #1902 from cert-manager/renovate/misc-npm-packages
cert-manager-prow[bot] Jan 20, 2026
276e4dc
Merge pull request #1904 from cert-manager/renovate/globals-17.x
cert-manager-prow[bot] Jan 20, 2026
9d4a628
BOT: run 'make upgrade-klone' and 'make generate'
cert-manager-bot Jan 21, 2026
296ace6
Merge pull request #1924 from cert-manager/self-upgrade-master
cert-manager-prow[bot] Jan 21, 2026
93be6b4
Merge pull request #1923 from SgtCoDFish/update-support
cert-manager-prow[bot] Jan 21, 2026
9259eeb
BOT: run 'make upgrade-klone' and 'make generate'
cert-manager-bot Jan 23, 2026
509fe3b
Merge pull request #1929 from cert-manager/self-upgrade-master
cert-manager-prow[bot] Jan 23, 2026
e91668b
BOT: run 'make upgrade-klone' and 'make generate'
cert-manager-bot Jan 24, 2026
f1e4a24
Merge pull request #1931 from cert-manager/self-upgrade-master
cert-manager-prow[bot] Jan 24, 2026
fd00b6c
chore(deps): update actions/checkout action to v6.0.2
renovate[bot] Jan 24, 2026
0fcf995
Update copyright year in Footer component
rohitkbc Jan 24, 2026
c6234bd
Merge pull request #1928 from cert-manager/renovate/misc-github-actions
cert-manager-prow[bot] Jan 24, 2026
d14e643
fix(deps): update misc npm packages
renovate[bot] Jan 24, 2026
84730b3
Merge pull request #1930 from cert-manager/renovate/misc-npm-packages
cert-manager-prow[bot] Jan 25, 2026
9aab20c
build(deps-dev): bump lodash
dependabot[bot] Jan 25, 2026
6e2e711
Merge pull request #1925 from cert-manager/dependabot/npm_and_yarn/np…
cert-manager-prow[bot] Jan 25, 2026
212d573
docs: remove outdated instruction (#1894)
JoeyC-Dev Jan 25, 2026
adda23c
Merge pull request #1916 from jnoordsij/patch-1
cert-manager-prow[bot] Jan 25, 2026
bdd8151
docs: fix and update Gateway API bundle installation instruction (#1897)
JoeyC-Dev Jan 25, 2026
b92d967
Merge pull request #1914 from cardoe/add-rackspace-webhook
cert-manager-prow[bot] Jan 25, 2026
9543c59
Merge pull request #1827 from sztyup/docs-fix
cert-manager-prow[bot] Jan 25, 2026
dc8d09a
fix(deps): update misc npm packages
renovate[bot] Jan 26, 2026
bd14b8d
Merge pull request #1933 from cert-manager/renovate/misc-npm-packages
inteon Jan 26, 2026
36d5cf6
Merge pull request #1932 from rohitkbc/master
inteon Jan 26, 2026
1987864
chore(deps): update dependency next to v15.5.10 [security]
renovate[bot] Jan 28, 2026
8417d3b
BOT: run 'make upgrade-klone' and 'make generate'
cert-manager-bot Jan 30, 2026
b39bc64
update cert-manager 1.20 release date from Feb 10 to Feb 24, 2026
maelvls Jan 30, 2026
ca5fb55
fix(deps): update misc npm packages
renovate[bot] Jan 30, 2026
ab1d288
Merge pull request #1934 from cert-manager/self-upgrade-master
cert-manager-prow[bot] Jan 30, 2026
535af4d
Merge pull request #1937 from cert-manager/renovate/npm-next-vulnerab…
cert-manager-prow[bot] Jan 30, 2026
318f88c
docs(gateway): fix example dnsNames in certificate (#1890)
derbengel Jan 30, 2026
d68cb1b
Merge pull request #1938 from cert-manager/renovate/misc-npm-packages
cert-manager-prow[bot] Jan 30, 2026
ff3bdfb
chore(deps): update dependency stylelint to v17
renovate[bot] Jan 30, 2026
fac0121
Fix stylelint v17 breaking changes
Copilot Jan 30, 2026
90dbb43
Merge pull request #1920 from cert-manager/renovate/stylelint-17.x
cert-manager-prow[bot] Jan 30, 2026
a064ca2
BOT: run 'make upgrade-klone' and 'make generate'
cert-manager-bot Jan 31, 2026
77308ce
fix(deps): update misc npm packages to v16.1.6
renovate[bot] Jan 31, 2026
abd909f
Merge pull request #1944 from cert-manager/self-upgrade-master
cert-manager-prow[bot] Jan 31, 2026
fffc0f1
Merge pull request #1940 from cert-manager/renovate/misc-npm-packages
cert-manager-prow[bot] Jan 31, 2026
38dc902
Use correct Renovate preset config
erikgb Jan 31, 2026
c5c58c2
docs(policy,approval,approver-policy): add username and groups to fie…
jonasbadstuebner Feb 2, 2026
6e438f4
Merge pull request #1939 from maelvls/bump-date
cert-manager-prow[bot] Feb 2, 2026
b7ab240
BOT: run 'make upgrade-klone' and 'make generate'
cert-manager-bot Feb 3, 2026
e147990
Merge pull request #1952 from cert-manager/self-upgrade-master
cert-manager-prow[bot] Feb 3, 2026
d3b1da3
fix(docs): correct spelling of constraints in approver-policy documen…
chiragkyal Feb 3, 2026
db2be10
add release notes for cert-manager v1.18.5 and v1.19.3
SgtCoDFish Feb 2, 2026
71be766
Merge pull request #1951 from SgtCoDFish/cert-manager-releases
cert-manager-prow[bot] Feb 3, 2026
ddd8ec7
BOT: run 'make upgrade-klone' and 'make generate'
cert-manager-bot Feb 5, 2026
a3075bb
Merge pull request #1954 from cert-manager/self-upgrade-master
cert-manager-prow[bot] Feb 5, 2026
550de1e
fix(deps): update dependency next to v16
renovate[bot] Feb 5, 2026
5971078
Force webpack with next
erikgb Feb 5, 2026
487cd4e
Merge pull request #1955 from cert-manager/renovate/major-nextjs-mono…
cert-manager-prow[bot] Feb 5, 2026
5e74086
chore(deps): update misc npm packages
renovate[bot] Feb 5, 2026
bff28f5
Merge pull request #1950 from cert-manager/renovate/misc-npm-packages
cert-manager-prow[bot] Feb 5, 2026
747cc71
Merge pull request #1953 from chiragkyal/fix-typo
cert-manager-prow[bot] Feb 5, 2026
d0d3bd4
chore(deps): update dependency stylelint to v17.1.1
renovate[bot] Feb 6, 2026
a9d8266
Merge pull request #1956 from cert-manager/renovate/misc-npm-packages
cert-manager-prow[bot] Feb 7, 2026
d1cdabc
BOT: run 'make upgrade-klone' and 'make generate'
cert-manager-bot Feb 8, 2026
a90091b
Merge pull request #1957 from cert-manager/self-upgrade-master
cert-manager-prow[bot] Feb 8, 2026
3d0c4b7
fix(deps): update dependency @docsearch/react to v4.5.4
renovate[bot] Feb 8, 2026
6a51446
Merge pull request #1958 from cert-manager/renovate/misc-npm-packages
cert-manager-prow[bot] Feb 8, 2026
b6e14a9
BOT: run 'make upgrade-klone' and 'make generate'
cert-manager-bot Feb 10, 2026
368d6dc
Merge pull request #1960 from cert-manager/self-upgrade-master
cert-manager-prow[bot] Feb 10, 2026
b0c07c5
Merge pull request #1946 from erikgb/correct-renovate-preset
cert-manager-prow[bot] Feb 10, 2026
5a6ad31
BOT: run 'make upgrade-klone' and 'make generate'
cert-manager-bot Feb 11, 2026
36b7e3e
Merge pull request #1961 from cert-manager/self-upgrade-master
cert-manager-prow[bot] Feb 11, 2026
80e6a8c
BOT: run 'make upgrade-klone' and 'make generate'
cert-manager-bot Feb 12, 2026
77bd6cd
Merge pull request #1962 from cert-manager/self-upgrade-master
cert-manager-prow[bot] Feb 12, 2026
8601612
BOT: run 'make upgrade-klone' and 'make generate'
cert-manager-bot Feb 13, 2026
4df1335
Merge pull request #1963 from cert-manager/self-upgrade-master
cert-manager-prow[bot] Feb 13, 2026
b6bc19d
chore(deps): update dependency stylelint to v17.2.0
renovate[bot] Feb 13, 2026
2a9295d
Merge pull request #1964 from cert-manager/renovate/misc-npm-packages
cert-manager-prow[bot] Feb 14, 2026
86e4ba2
BOT: run 'make upgrade-klone' and 'make generate'
cert-manager-bot Feb 15, 2026
d9934e9
Merge pull request #1965 from cert-manager/self-upgrade-master
cert-manager-prow[bot] Feb 15, 2026
f23e737
chore(deps): lock file maintenance
renovate[bot] Feb 16, 2026
7a9322a
Merge pull request #1967 from cert-manager/renovate/lock-file-mainten…
cert-manager-prow[bot] Feb 16, 2026
ed67353
chore(deps): update dependency stylelint to v17.3.0
renovate[bot] Feb 16, 2026
7542fb8
Merge pull request #1968 from cert-manager/renovate/misc-npm-packages
cert-manager-prow[bot] Feb 16, 2026
81bd27b
BOT: run 'make upgrade-klone' and 'make generate'
cert-manager-bot Feb 17, 2026
298a296
Merge pull request #1969 from cert-manager/self-upgrade-master
cert-manager-prow[bot] Feb 17, 2026
d9d273b
update link to cert-manager-webhook-linode
j-zimnowoda Feb 19, 2026
299935b
fix(deps): update misc npm packages
renovate[bot] Feb 21, 2026
6795b02
Merge pull request #1948 from jonasbadstuebner/1947_approver-policy_7…
cert-manager-prow[bot] Feb 22, 2026
16fcbd1
Merge pull request #1973 from cert-manager/renovate/misc-npm-packages
cert-manager-prow[bot] Feb 22, 2026
ee22dfd
Merge pull request #1972 from j-zimnowoda/master
cert-manager-prow[bot] Feb 22, 2026
aba3bd1
BOT: run 'make upgrade-klone' and 'make generate'
cert-manager-bot Feb 23, 2026
d496304
Merge pull request #1974 from cert-manager/self-upgrade-master
cert-manager-prow[bot] Feb 23, 2026
5fa3b77
fix(deps): update dependency next-mdx-remote to v6 [security]
renovate[bot] Feb 24, 2026
4635794
release process updates for simple release notes
SgtCoDFish Feb 24, 2026
f30a6c4
release notes for cert-manager v1.19.4
SgtCoDFish Feb 24, 2026
30a0f3f
add release notes for v1.18.6
SgtCoDFish Feb 24, 2026
4664c3c
fix irregular whitespace in generated API docs
SgtCoDFish Feb 24, 2026
3c4a0a3
Merge pull request #1981 from SgtCoDFish/cm-releases
cert-manager-prow[bot] Feb 24, 2026
2df648d
Merge pull request #1980 from SgtCoDFish/release-process-update
cert-manager-prow[bot] Feb 24, 2026
105b8cf
chore(deps): update misc npm packages
renovate[bot] Feb 26, 2026
64af98a
BOT: run 'make upgrade-klone' and 'make generate'
cert-manager-bot Feb 28, 2026
da57168
Merge pull request #1982 from cert-manager/self-upgrade-master
cert-manager-prow[bot] Feb 28, 2026
823a656
Merge pull request #1979 from cert-manager/renovate/npm-next-mdx-remo…
cert-manager-prow[bot] Feb 28, 2026
6c733ef
Merge pull request #1976 from cert-manager/renovate/misc-npm-packages
cert-manager-prow[bot] Feb 28, 2026
d63cb8f
chore(deps): lock file maintenance
renovate[bot] Feb 28, 2026
acae1ca
Merge pull request #1975 from cert-manager/renovate/lock-file-mainten…
cert-manager-prow[bot] Feb 28, 2026
28f864b
chore(deps): update dependency stylelint to v17.4.0
renovate[bot] Feb 28, 2026
70a0e03
Merge pull request #1984 from cert-manager/renovate/misc-npm-packages
cert-manager-prow[bot] Feb 28, 2026
8da7875
Initial plan
Copilot Mar 1, 2026
5b357b8
Fix: move blockJS: false to top-level serialize options in next-mdx-r…
Copilot Mar 1, 2026
ee7911d
BOT: run 'make upgrade-klone' and 'make generate'
cert-manager-bot Mar 3, 2026
616997d
Merge pull request #1990 from cert-manager/self-upgrade-master
cert-manager-prow[bot] Mar 3, 2026
c68f211
Revise ACME Azure DNS-01 authentication docs
lunarwhite Mar 3, 2026
0f85690
Merge pull request #1991 from lunarwhite/az
SgtCoDFish Mar 3, 2026
3b2826d
Merge pull request #1988 from cert-manager/copilot/fix-mdx-js-express…
cert-manager-prow[bot] Mar 3, 2026
d457ce8
release-process: update after releasing v1.20.0-beta.0 with Hemant
maelvls Mar 5, 2026
0e0dee1
release process: remind us to disable generate-klone after creating r…
maelvls Mar 5, 2026
a426964
let's drop the many "Follow the cmrel publish logs..." Slack messages
maelvls Mar 5, 2026
1107cb6
Merge pull request #1993 from maelvls/update-release-process
cert-manager-prow[bot] Mar 5, 2026
ce34069
BOT: run 'make upgrade-klone' and 'make generate'
cert-manager-bot Mar 10, 2026
75ed7af
Merge pull request #1995 from cert-manager/self-upgrade-master
cert-manager-prow[bot] Mar 10, 2026
9e79d81
Merge branch 'master' into release-next
maelvls Mar 10, 2026
3f8b3f5
Merge pull request #1996 from maelvls/merge-master-into-release-next
cert-manager-prow[bot] Mar 10, 2026
828601f
Revert "[release-next] Merge master into release-next"
maelvls Mar 10, 2026
9a333ad
Merge pull request #1999 from cert-manager/revert-1996-merge-master-i…
cert-manager-prow[bot] Mar 10, 2026
a824d17
Merge branch 'master' into release-next
maelvls Mar 10, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/renovate.json5
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
$schema: 'https://docs.renovatebot.com/renovate-schema.json',
extends: [
'github>cert-manager/renovate-config:default.json5',
'github>cert-manager/makefile-modules:renovate-config.json5',
],
packageRules: [
{
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/check.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@ jobs:
pull-cert-manager-website-verify:
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6
with:
node-version: 24
cache: npm
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/make-self-upgrade.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ jobs:
scope: 'cert-manager/website'
identity: make-self-upgrade

- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
# Adding `fetch-depth: 0` makes sure tags are also fetched. We need
# the tags so `git describe` returns a valid version.
# see https://github.com/actions/checkout/issues/701 for extra info about this option
Expand All @@ -50,7 +50,7 @@ jobs:
run: |
make print-go-version >> "$GITHUB_OUTPUT"

- uses: actions/setup-go@7a3fe6cf4cb3a834922a1244abfce67bcef6a0c5 # v6.2.0
- uses: actions/setup-go@4b73464bb391d4059bd26b0524d20df3927bd417 # v6.3.0
with:
go-version: ${{ steps.go-version.outputs.result }}

Expand Down
8 changes: 2 additions & 6 deletions .spelling
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,8 @@ pinkfloydx33
karlschriek
cmcga1125
OIDs
Oleh
Konko
rfc4514
SpectralHiss
weisdd
Expand Down Expand Up @@ -592,11 +594,8 @@ v1.18.0.
v1.19
v1.19.0
v1.19.1
v1.20.0
v1.19.2
v1.20.0
alpha.0
beta.0
v1.4.1
v1.5
v1.5.0
Expand Down Expand Up @@ -862,9 +861,6 @@ example.org
experimental.cert
http01-edit-in-place
http01-ingress-class
http01-ingress-ingressclassname
http01-parentrefkind
http01-parentrefname
ingress.class
ip-sans
kubernetes.io
Expand Down
5 changes: 3 additions & 2 deletions components/Footer.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,17 @@ import Link from 'next/link'
import FooterSepartor from './snippets/FooterSeparator'

export default function Footer() {
const currentYear = new Date().getFullYear()
return (
<footer className="mt-[-117px]">
<div className="relative w-screen h-[117px] overflow-x-hidden">
<FooterSepartor className="absolute top-0 left-[-696px]" />
</div>
<div className="bg-dark-2 pb-10 pt-5">
<div className="container text-sm text-white">
<p>&copy; 2025 The cert-manager Authors.</p>
<p>&copy; {currentYear} The cert-manager Authors.</p>
<p className="mb-6">
&copy; 2025 The Linux Foundation. All rights reserved.
&copy; {currentYear} The Linux Foundation. All rights reserved.
Comment on lines 4 to +15
Copy link

Copilot AI Mar 10, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This site is configured for static export (output: 'export' in next.config.js). Using new Date().getFullYear() directly in the render output can cause hydration mismatches if the exported HTML was built in a different year than when a user visits (or if the build output is cached across New Year). Prefer injecting a build-time constant (e.g. via a prop or environment variable baked into the export) or keep the year static to avoid runtime divergence.

Copilot uses AI. Check for mistakes.
</p>
<p>
The Linux Foundation has registered trademarks and uses trademarks.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ with certificates configured on cluster-operator-owned Gateways.

The missing piece is Gateway API's experimental XListenerSet resource, which
aims to restore per-team TLS configuration on a shared Gateway. cert-manager
plans to add experimental XListenerSet support in 1.20, targeted for 10 February
plans to add experimental XListenerSet support in 1.20, targeted for 24 February
2026, with alpha builds in January 2026.

[the announcement]: https://kubernetes.io/blog/2025/11/11/ingress-nginx-retirement/
Expand Down Expand Up @@ -150,7 +150,7 @@ which act as the default issuer.

- **January 2026:** Alpha builds with XListenerSet support. We will need your
help to test it out!
- **10 February 2026:** cert-manager 1.20 is expected to include XListenerSet
- **24 February 2026:** cert-manager 1.20 is expected to include XListenerSet
support as an experimental feature gated behind a feature flag.

As Gateway API graduates ListenerSet to stable, we'll add support for the stable
Expand Down
2 changes: 0 additions & 2 deletions content/docs/configuration/acme/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -54,8 +54,6 @@ metadata:
spec:
acme:
# You must replace this email address with your own.
# Let's Encrypt will use this to contact you about expiring
# certificates, and issues related to your account.
email: user@example.com
# If the ACME server supports profiles, you can specify the profile name here.
# See #acme-certificate-profiles below.
Expand Down
3 changes: 2 additions & 1 deletion content/docs/configuration/acme/dns01/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -175,13 +175,14 @@ Links to these supported providers along with their documentation are below:
- [`cert-manager-webhook-infomaniak`](https://github.com/Infomaniak/cert-manager-webhook-infomaniak)
- [`cert-manager-webhook-inwx`](https://gitlab.com/smueller18/cert-manager-webhook-inwx)
- [`cert-manager-webhook-ionos-cloud`](https://github.com/ionos-cloud/cert-manager-webhook-ionos-cloud)
- [`cert-manager-webhook-linode`](https://github.com/slicen/cert-manager-webhook-linode)
- [`cert-manager-webhook-linode`](https://github.com/linode/cert-manager-webhook-linode)
- [`cert-manager-webhook-loopia`](https://github.com/Identitry/cert-manager-webhook-loopia)
- [`cert-manager-webhook-netcup`](https://github.com/aellwein/cert-manager-webhook-netcup)
- [`cert-manager-webhook-oci`](https://gitlab.com/dn13/cert-manager-webhook-oci) (Oracle Cloud Infrastructure)
- [`cert-manager-webhook-ovh`](https://github.com/aureq/cert-manager-webhook-ovh)
- [`cert-manager-webhook-opentelekomcloud`](https://github.com/akyriako/cert-manager-webhook-opentelekomcloud)
- [`cert-manager-webhook-pdns`](https://github.com/zachomedia/cert-manager-webhook-pdns)
- [`cert-manager-webhook-rackspace`](https://github.com/rackerlabs/cert-manager-webhook-rackspace)
- [`cert-manager-webhook-regery`](https://github.com/darioackermann/cert-manager-webhook-regery)
- [`cert-manager-webhook-scaleway`](https://github.com/scaleway/cert-manager-webhook-scaleway)
- [`cert-manager-webhook-selectel`](https://github.com/selectel/cert-manager-webhook-selectel)
Expand Down
70 changes: 36 additions & 34 deletions content/docs/configuration/acme/dns01/azuredns.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ If you have an Azure AKS cluster you can use the following command:
az aks update \
--name ${CLUSTER} \
--enable-oidc-issuer \
--enable-workload-identity # ℹ️ This option is currently only available when using the aks-preview extension.
--enable-workload-identity
```

> ℹ️ You can [install the Azure workload identity extension on other managed and self-managed clusters](https://azure.github.io/azure-workload-identity/docs/installation.html) if you are not using Azure AKS.
Expand All @@ -38,18 +38,15 @@ az aks update \
>
### Reconfigure cert-manager

Label the cert-manager controller Pod and ServiceAccount for the attention of the Azure Workload Identity webhook,
Label the cert-manager controller Pod for the attention of the Azure Workload Identity webhook,
which will result in the cert-manager controller Pod having an extra volume containing a Kubernetes ServiceAccount token which it will use to authenticate with Azure.

If you installed cert-manager using Helm, the labels can be configured using Helm values:
If you installed cert-manager using Helm, the label can be configured using Helm values:

```yaml
# values.yaml
podLabels:
azure.workload.identity/use: "true"
serviceAccount:
labels:
azure.workload.identity/use: "true"
```

If successful, the cert-manager Pod will have some new environment variables set,
Expand Down Expand Up @@ -92,16 +89,17 @@ Choose a managed identity name and create the Managed Identity:

```bash
export IDENTITY_NAME=cert-manager
az identity create --name "${IDENTITY_NAME}"
export IDENTITY_RESOURCE_GROUP=<your-resource-group> # ❗ Replace with your Azure resource group
Copy link

Copilot AI Mar 10, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This bash snippet uses angle brackets in the placeholder (export IDENTITY_RESOURCE_GROUP=<your-resource-group>). If a reader copy/pastes it without editing, <...> will be treated by the shell as redirection and will fail in a non-obvious way. Consider using a safe placeholder (e.g. YOUR_RESOURCE_GROUP), quoting the placeholder, or moving the placeholder into a comment instead.

Suggested change
export IDENTITY_RESOURCE_GROUP=<your-resource-group> # ❗ Replace with your Azure resource group
export IDENTITY_RESOURCE_GROUP=YOUR_RESOURCE_GROUP # ❗ Replace with your Azure resource group

Copilot uses AI. Check for mistakes.
az identity create --name "${IDENTITY_NAME}" --resource-group "${IDENTITY_RESOURCE_GROUP}"
```

Grant it permission to modify the DNS zone records:

```bash
export IDENTITY_CLIENT_ID=$(az identity show --name "${IDENTITY_NAME}" --query 'clientId' -o tsv)
export IDENTITY_CLIENT_ID=$(az identity show --name "${IDENTITY_NAME}" --resource-group "${IDENTITY_RESOURCE_GROUP}" --query 'clientId' -o tsv)
az role assignment create \
--role "DNS Zone Contributor" \
--assignee IDENTITY_CLIENT_ID \
--assignee $IDENTITY_CLIENT_ID \
--scope $(az network dns zone show --name $DOMAIN_NAME -o tsv --query id)
```

Expand All @@ -125,6 +123,7 @@ export SERVICE_ACCOUNT_ISSUER=$(az aks show --resource-group $AZURE_DEFAULTS_GRO
az identity federated-credential create \
--name "cert-manager" \
--identity-name "${IDENTITY_NAME}" \
--resource-group "${IDENTITY_RESOURCE_GROUP}" \
--issuer "${SERVICE_ACCOUNT_ISSUER}" \
--subject "system:serviceaccount:${SERVICE_ACCOUNT_NAMESPACE}:${SERVICE_ACCOUNT_NAME}"
```
Expand Down Expand Up @@ -159,9 +158,14 @@ spec:
subscriptionID: $AZURE_SUBSCRIPTION_ID
environment: AzurePublicCloud
managedIdentity:
# client ID of the managed identity; overrides AZURE_CLIENT_ID from the environment
clientID: $IDENTITY_CLIENT_ID
# # optional: tenant ID of the managed identity; overrides AZURE_TENANT_ID from the environment.
Copy link

Copilot AI Mar 10, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There appears to be a typo in the YAML comments: # # optional: tenant ID .... This should likely be a single # comment marker to avoid confusing readers.

Suggested change
# # optional: tenant ID of the managed identity; overrides AZURE_TENANT_ID from the environment.
# optional: tenant ID of the managed identity; overrides AZURE_TENANT_ID from the environment.

Copilot uses AI. Check for mistakes.
# tenantID: $IDENTITY_TENANT_ID
```

> ℹ️ `managedIdentity.clientID` and `managedIdentity.tenantID` override the values that the Azure Workload Identity webhook injects via environment variables (`AZURE_CLIENT_ID` and `AZURE_TENANT_ID`).

The following variables need to be filled in.

```bash
Expand All @@ -186,7 +190,7 @@ ClusterIssuer resources are cluster scoped (not namespaced) and only platform ad
If you are using this authentication mechanism and ambient credentials are not enabled, you will see this error:

```bash
error instantiating azuredns challenge solver: ClientID is not set but neither --cluster-issuer-ambient-credentials nor --issuer-ambient-credentials are set.
error instantiating azuredns challenge solver: ClientID was omitted without providing one of `--cluster-issuer-ambient-credentials` or `--issuer-ambient-credentials`. These are necessary to enable Azure Managed Identities
```

> ⚠️ It is possible (but not recommended) to enable this authentication mechanism for `Issuer` resources, by setting the `--issuer-ambient-credentials` flag on the cert-manager controller to true.
Expand Down Expand Up @@ -322,12 +326,11 @@ spec:
This authentication mechanism is what cert-manager considers 'ambient credentials'. Use of ambient credentials is disabled by default for cert-manager `Issuer`s. This to ensure unprivileged users who have permission to create issuers cannot issue certificates using any credentials cert-manager incidentally has access to. To enable this authentication mechanism for `Issuer`s, you will need to set `--issuer-ambient-credentials` flag on cert-manager controller to true. (There is a corresponding `--cluster-issuer-ambient-credentials` flag which is set to `true` by default).

If you are using this authentication mechanism and ambient credentials are not enabled, you will see this error:

```bash
error instantiating azuredns challenge solver: ClientID is not set but neither --cluster-issuer-ambient-credentials nor --issuer-ambient-credentials are set.
error instantiating azuredns challenge solver: ClientID was omitted without providing one of `--cluster-issuer-ambient-credentials` or `--issuer-ambient-credentials`. These are necessary to enable Azure Managed Identities
```

These are necessary to enable Azure Managed Identities.

## Managed Identity Using AKS Kubelet Identity

When creating an AKS cluster in Azure there is the option to use a managed identity that is assigned to the kubelet. This identity is assigned to the underlying node pool in the AKS cluster and can then be used by the cert-manager pods to authenticate to Azure Active Directory.
Expand Down Expand Up @@ -420,19 +423,18 @@ To create the service principal you can use the following script (requires
`azure-cli` and `jq`):

```bash
# Choose a name for the service principal that contacts azure DNS to present
# the challenge.
$ AZURE_CERT_MANAGER_NEW_SP_NAME=NEW_SERVICE_PRINCIPAL_NAME
# Choose a name for the service principal that contacts azure DNS to present the challenge.
AZURE_CERT_MANAGER_NEW_SP_NAME=NEW_SERVICE_PRINCIPAL_NAME
# This is the name of the resource group that you have your dns zone in.
$ AZURE_DNS_ZONE_RESOURCE_GROUP=AZURE_DNS_ZONE_RESOURCE_GROUP
AZURE_DNS_ZONE_RESOURCE_GROUP=AZURE_DNS_ZONE_RESOURCE_GROUP
# The DNS zone name. It should be something like domain.com or sub.domain.com.
$ AZURE_DNS_ZONE=AZURE_DNS_ZONE
AZURE_DNS_ZONE=AZURE_DNS_ZONE

$ DNS_SP=$(az ad sp create-for-rbac --name $AZURE_CERT_MANAGER_NEW_SP_NAME --output json)
$ AZURE_CERT_MANAGER_SP_APP_ID=$(echo $DNS_SP | jq -r '.appId')
$ AZURE_CERT_MANAGER_SP_PASSWORD=$(echo $DNS_SP | jq -r '.password')
$ AZURE_TENANT_ID=$(echo $DNS_SP | jq -r '.tenant')
$ AZURE_SUBSCRIPTION_ID=$(az account show --output json | jq -r '.id')
DNS_SP=$(az ad sp create-for-rbac --name $AZURE_CERT_MANAGER_NEW_SP_NAME --output json)
AZURE_CERT_MANAGER_SP_APP_ID=$(echo $DNS_SP | jq -r '.appId')
AZURE_CERT_MANAGER_SP_PASSWORD=$(echo $DNS_SP | jq -r '.password')
AZURE_TENANT_ID=$(echo $DNS_SP | jq -r '.tenant')
AZURE_SUBSCRIPTION_ID=$(az account show --output json | jq -r '.id')
```

For security purposes, it is appropriate to utilize RBAC to ensure that you
Expand All @@ -444,37 +446,37 @@ so that it can read/write the \_acme\_challenge TXT records to the zone.
Lower the Permissions of the service principal.

```bash
$ az role assignment delete --assignee $AZURE_CERT_MANAGER_SP_APP_ID --role Contributor
az role assignment delete --assignee $AZURE_CERT_MANAGER_SP_APP_ID --role Contributor
```

Give Access to DNS Zone.

```bash
$ DNS_ID=$(az network dns zone show --name $AZURE_DNS_ZONE --resource-group $AZURE_DNS_ZONE_RESOURCE_GROUP --query "id" --output tsv)
$ az role assignment create --assignee $AZURE_CERT_MANAGER_SP_APP_ID --role "DNS Zone Contributor" --scope $DNS_ID
DNS_ID=$(az network dns zone show --name $AZURE_DNS_ZONE --resource-group $AZURE_DNS_ZONE_RESOURCE_GROUP --query "id" --output tsv)
az role assignment create --assignee $AZURE_CERT_MANAGER_SP_APP_ID --role "DNS Zone Contributor" --scope $DNS_ID
```

Check Permissions. As the result of the following command, we would like to see just one object in the permissions array with "DNS Zone Contributor" role.

```bash
$ az role assignment list --all --assignee $AZURE_CERT_MANAGER_SP_APP_ID
az role assignment list --all --assignee $AZURE_CERT_MANAGER_SP_APP_ID
```

A secret containing service principal password should be created on Kubernetes to facilitate presenting the challenge to Azure DNS. You can create the secret with the following command:

```bash
$ kubectl create secret generic azuredns-config --from-literal=client-secret=$AZURE_CERT_MANAGER_SP_PASSWORD
kubectl create secret generic azuredns-config --from-literal=client-secret=$AZURE_CERT_MANAGER_SP_PASSWORD
```

Get the variables for configuring the issuer.

```bash
$ echo "AZURE_CERT_MANAGER_SP_APP_ID: $AZURE_CERT_MANAGER_SP_APP_ID"
$ echo "AZURE_CERT_MANAGER_SP_PASSWORD: $AZURE_CERT_MANAGER_SP_PASSWORD"
$ echo "AZURE_SUBSCRIPTION_ID: $AZURE_SUBSCRIPTION_ID"
$ echo "AZURE_TENANT_ID: $AZURE_TENANT_ID"
$ echo "AZURE_DNS_ZONE: $AZURE_DNS_ZONE"
$ echo "AZURE_DNS_ZONE_RESOURCE_GROUP: $AZURE_DNS_ZONE_RESOURCE_GROUP"
echo "AZURE_CERT_MANAGER_SP_APP_ID: $AZURE_CERT_MANAGER_SP_APP_ID"
echo "AZURE_CERT_MANAGER_SP_PASSWORD: $AZURE_CERT_MANAGER_SP_PASSWORD"
echo "AZURE_SUBSCRIPTION_ID: $AZURE_SUBSCRIPTION_ID"
echo "AZURE_TENANT_ID: $AZURE_TENANT_ID"
echo "AZURE_DNS_ZONE: $AZURE_DNS_ZONE"
echo "AZURE_DNS_ZONE_RESOURCE_GROUP: $AZURE_DNS_ZONE_RESOURCE_GROUP"
```

To configure the issuer, substitute the capital cased variables with the values
Expand Down
12 changes: 3 additions & 9 deletions content/docs/configuration/acme/http01/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -69,9 +69,6 @@ controllers support `ingressClassName`, with the notable exception of
ingress-gce (as per the page [Configure Ingress for external load
balancing](https://cloud.google.com/kubernetes-engine/docs/how-to/load-balance-ingress)).

> You can override the `ingressClassName` on a per-Ingress basis using the
[`acme.cert-manager.io/http01-ingress-ingressclassname`](https://cert-manager.io/docs/reference/annotations/#acmecert-manageriohttp01-ingress-ingressclassname) annotation.

### `class`

If the `class` field is specified, a new Ingress resource with a randomly
Expand All @@ -82,9 +79,6 @@ value set to the value of the `class` field.
This field is only recommended with ingress-gce. ingress-gce [doesn't support the
`ingressClassName` field](https://cloud.google.com/kubernetes-engine/docs/how-to/load-balance-ingress).

> You can override the `class` on a per-Ingress basis using the
[`acme.cert-manager.io/http01-ingress-class`](https://cert-manager.io/docs/reference/annotations/#acmecert-manageriohttp01-ingress-class) annotation.

### `name`

If the `name` field is specified, cert-manager will edit the named
Expand Down Expand Up @@ -225,13 +219,13 @@ improvements over the Ingress API.

:::info

📌 This feature requires the installation of the [Gateway API bundle](https://gateway-api.sigs.k8s.io/guides/#installing-a-gateway-controller) and passing an
📌 This feature requires the installation of the [Gateway API bundle](https://gateway-api.sigs.k8s.io/guides/getting-started/#installing-gateway-api) and passing an
additional flag to the cert-manager controller.

To install v1.5.1 Gateway API bundle (Gateway CRDs and webhook), run the following command:
To install v1.4.1 Gateway API bundle (CRDs associated with a version of Gateway API), run the following command:

```sh
kubectl apply -f "https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.0.0/standard-install.yaml"
kubectl apply --server-side -f https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.4.1/standard-install.yaml
```

Since cert-manager 1.15, the Gateway API support is no longer gated behind a
Expand Down
42 changes: 0 additions & 42 deletions content/docs/configuration/venafi.md
Original file line number Diff line number Diff line change
Expand Up @@ -304,45 +304,3 @@ metadata:
]
...
```

### Issuer Custom Fields

Starting `v1.20`, you can use `venafi.cert-manager.io/custom-fields` annotation on an `Issuer` or `ClusterIssuer` resource.
This configuration would be applied to all Certificate requests created from `Issuer`.

It is possible to override or append custom configuration to `Certificate` resources via the `Issuer` assigned to it.
For example with an `Issuer` such as:

```yaml
apiVersion: cert-manager.io/v1
kind: Issuer
metadata:
name: corp-issuer
annotations:
venafi.cert-manager.io/custom-fields: |-
[
{"name": "Environemnt", "value": "Dev"},
]
```

and a `Certificate` resource:

```yaml
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: example-com-certificate
annotations:
venafi.cert-manager.io/custom-fields: |-
[
{"name": "Team", "value": "amber"},
]
...
```

Final configuration will be:

```json
{"name": "Environemnt", "value": "Dev"},
{"name": "Team", "value": "amber"}
```
Loading