Repository: cert-manager/cert-manager (2025-07-19T10:50:56Z)

Issue:
Add k8s.io/client-go/applyconfigurations style *ApplyConfigurations for the included CRDs
**Is your feature request related to a problem? Please describe.**
<!--A clear and concise description of what the problem is-->
When creating an operator using server side apply is a very useful tool to reduce complexity in the Reconcile function.
`client-go` has `*ApplyConfigurations` for all k8s objects. It would be very useful to have the same in this project, so downstream API users could use those as well.

**Describe the solution you'd like**
<!--A clear and concise description of what you want to happen.-->
Somewhere in the build systems or scripts run `applyconfiguration-gen` (and probably something to generate the required openapi.json files). That then allows for example operator-sdk or kubebuilder projects to include these with the Apply clients.

**Describe alternatives you've considered**
<!--A clear and concise description of any alternative solutions or features you've considered.-->
You can use the Unstructured schemas and raw patch endpoints to do the same thing but the `.With*(value)` functions and the apply endpoints are much much nicer to use. So that [this](https://kubernetes.io/blog/2021/08/06/server-side-apply-ga/#using-server-side-apply-in-a-controller) would be possible with for example the `cert-manager.io/v1/Certificate` entity.

Upon searching further there seem to be several PRs open for this.
#5083
#5383

/kind feature



Discussion:
/cc @inteon 
Issues go stale after 90d of inactivity.
Mark the issue as fresh with `/remove-lifecycle stale`.
Stale issues rot after an additional 30d of inactivity and eventually close.
If this issue is safe to close now please do so with `/close`.
Send feedback to [jetstack](https://github.com/jetstack).
/lifecycle stale
/remove-lifecycle stale
Issues go stale after 90d of inactivity.
Mark the issue as fresh with `/remove-lifecycle stale`.
Stale issues rot after an additional 30d of inactivity and eventually close.
If this issue is safe to close now please do so with `/close`.
Send feedback to [jetstack](https://github.com/jetstack).
/lifecycle stale
/remove-lifecycle stale
Issues go stale after 90d of inactivity.
Mark the issue as fresh with `/remove-lifecycle stale`.
Stale issues rot after an additional 30d of inactivity and eventually close.
If this issue is safe to close now please do so with `/close`.
Send feedback to [jetstack](https://github.com/jetstack).
/lifecycle stale
/remove-lifecycle stale

Issues go stale after 90d of inactivity.
Mark the issue as fresh with `/remove-lifecycle stale`.
Stale issues rot after an additional 30d of inactivity and eventually close.
If this issue is safe to close now please do so with `/close`.
Send feedback to [jetstack](https://github.com/jetstack).
/lifecycle stale
/remove-lifecycle stale
Issues go stale after 90d of inactivity.
Mark the issue as fresh with `/remove-lifecycle stale`.
Stale issues rot after an additional 30d of inactivity and eventually close.
If this issue is safe to close now please do so with `/close`.
/lifecycle stale
/remove-lifecycle stale
Issues go stale after 90d of inactivity.
Mark the issue as fresh with `/remove-lifecycle stale`.
Stale issues rot after an additional 30d of inactivity and eventually close.
If this issue is safe to close now please do so with `/close`.
/lifecycle stale
/remove-lifecycle stale
I agree with this issue.  It is especially annoying that trust-manager already has this capability, but cert-manager does not:
https://github.com/cert-manager/trust-manager/commit/594e5e2da528b4eacac91bf20927bc1394b7d290

Issues go stale after 90d of inactivity.
Mark the issue as fresh with `/remove-lifecycle stale`.
Stale issues rot after an additional 30d of inactivity and eventually close.
If this issue is safe to close now please do so with `/close`.
/lifecycle stale
/remove-lifecycle stale

Issues go stale after 90d of inactivity.
Mark the issue as fresh with `/remove-lifecycle stale`.
Stale issues rot after an additional 30d of inactivity and eventually close.
If this issue is safe to close now please do so with `/close`.
/lifecycle stale
/remove-lifecycle stale
I was working on removing the use of deprecated APIs this weekend, and generating apply configurations will also allow us access to the new and improved fake client.
Just summarizing a discussion around this in today's stand-up: We want to do this, but we decided to wait until https://github.com/kubernetes-sigs/controller-tools/pull/818 is released, which should not be too far away.

/assign
Issues go stale after 90d of inactivity.
Mark the issue as fresh with `/remove-lifecycle stale`.
Stale issues rot after an additional 30d of inactivity and eventually close.
If this issue is safe to close now please do so with `/close`.
/lifecycle stale
/remove-lifecycle stale
/reopen
@erikgb: Reopened this issue.

<details>

In response to [this](https://github.com/cert-manager/cert-manager/issues/5783#issuecomment-3085468976):

>/reopen


Instructions for interacting with me using PR comments are available [here](https://git.k8s.io/community/contributors/guide/pull-requests.md).  If you have questions or suggestions related to my behavior, please file an issue against the [kubernetes-sigs/prow](https://github.com/kubernetes-sigs/prow/issues/new?title=Prow%20issue:) repository.
</details>



Patch:
diff --git a/hack/k8s-codegen.sh b/hack/k8s-codegen.sh
index 747ba004f0d..f9381e41baf 100755
--- a/hack/k8s-codegen.sh
+++ b/hack/k8s-codegen.sh
@@ -25,6 +25,7 @@ listergen=$4
 defaultergen=$5
 conversiongen=$6
 openapigen=$7
+applyconfigurationgen=$8
 
 echo "+++ Generating code..." >&2
 
@@ -119,14 +120,27 @@ gen-deepcopy() {
     "${prefixed_inputs[@]}"
 }
 
+gen-applyconfigurations() {
+  clean "${client_subpackage}"/applyconfigurations '*.go'
+  echo "+++ Generating applyconfigurations..." >&2
+  prefixed_inputs=( "${client_inputs[@]/#/$module_name/}" )
+  joined=$( IFS=$' '; echo "${prefixed_inputs[*]}" )
+ "$applyconfigurationgen" \
+    --go-header-file hack/boilerplate-go.txt \
+    --output-dir "${client_subpackage}"/applyconfigurations \
+    --output-pkg "${client_package}"/applyconfigurations \
+    $joined
+}
+
 gen-clientsets() {
   clean "${client_subpackage}"/clientset '*.go'
-  echo "+++ Generating clientset..." >&2
+  echo "+++ Generating clientsets..." >&2
   prefixed_inputs=( "${client_inputs[@]/#/$module_name/}" )
   joined=$( IFS=$','; echo "${prefixed_inputs[*]}" )
   "$clientgen" \
     --go-header-file hack/boilerplate-go.txt \
     --clientset-name versioned \
+    --apply-configuration-package "${client_package}"/applyconfigurations \
     --input-base "" \
     --input "$joined" \
     --output-dir "${client_subpackage}"/clientset \
@@ -203,6 +217,7 @@ gen-conversions() {
 
 gen-openapi-acme
 gen-deepcopy
+gen-applyconfigurations
 gen-clientsets
 gen-listers
 gen-informers
diff --git a/make/ci.mk b/make/ci.mk
index 0cd25824e39..a972c20030c 100644
--- a/make/ci.mk
+++ b/make/ci.mk
@@ -29,7 +29,7 @@ verify-errexit:
 shared_verify_targets += verify-errexit
 
 .PHONY: generate-codegen
-generate-codegen: | $(NEEDS_CLIENT-GEN) $(NEEDS_DEEPCOPY-GEN) $(NEEDS_INFORMER-GEN) $(NEEDS_LISTER-GEN) $(NEEDS_DEFAULTER-GEN) $(NEEDS_CONVERSION-GEN) $(NEEDS_OPENAPI-GEN)
+generate-codegen: | $(NEEDS_CLIENT-GEN) $(NEEDS_DEEPCOPY-GEN) $(NEEDS_INFORMER-GEN) $(NEEDS_LISTER-GEN) $(NEEDS_DEFAULTER-GEN) $(NEEDS_CONVERSION-GEN) $(NEEDS_OPENAPI-GEN) $(NEEDS_APPLYCONFIGURATION-GEN)
 	./hack/k8s-codegen.sh \
 		$(CLIENT-GEN) \
 		$(DEEPCOPY-GEN) \
@@ -37,7 +37,8 @@ generate-codegen: | $(NEEDS_CLIENT-GEN) $(NEEDS_DEEPCOPY-GEN) $(NEEDS_INFORMER-G
 		$(LISTER-GEN) \
 		$(DEFAULTER-GEN) \
 		$(CONVERSION-GEN) \
-		$(OPENAPI-GEN)
+		$(OPENAPI-GEN) \
+		$(APPLYCONFIGURATION-GEN)
 
 shared_generate_targets_dirty += generate-codegen
 
diff --git a/pkg/client/applyconfigurations/acme/v1/acmeauthorization.go b/pkg/client/applyconfigurations/acme/v1/acmeauthorization.go
new file mode 100644
index 00000000000..f4b4575b36f
--- /dev/null
+++ b/pkg/client/applyconfigurations/acme/v1/acmeauthorization.go
@@ -0,0 +1,84 @@
+/*
+Copyright The cert-manager Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+// Code generated by applyconfiguration-gen. DO NOT EDIT.
+
+package v1
+
+import (
+	acmev1 "github.com/cert-manager/cert-manager/pkg/apis/acme/v1"
+)
+
+// ACMEAuthorizationApplyConfiguration represents a declarative configuration of the ACMEAuthorization type for use
+// with apply.
+type ACMEAuthorizationApplyConfiguration struct {
+	URL          *string                           `json:"url,omitempty"`
+	Identifier   *string                           `json:"identifier,omitempty"`
+	Wildcard     *bool                             `json:"wildcard,omitempty"`
+	InitialState *acmev1.State                     `json:"initialState,omitempty"`
+	Challenges   []ACMEChallengeApplyConfiguration `json:"challenges,omitempty"`
+}
+
+// ACMEAuthorizationApplyConfiguration constructs a declarative configuration of the ACMEAuthorization type for use with
+// apply.
+func ACMEAuthorization() *ACMEAuthorizationApplyConfiguration {
+	return &ACMEAuthorizationApplyConfiguration{}
+}
+
+// WithURL sets the URL field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the URL field is set to the value of the last call.
+func (b *ACMEAuthorizationApplyConfiguration) WithURL(value string) *ACMEAuthorizationApplyConfiguration {
+	b.URL = &value
+	return b
+}
+
+// WithIdentifier sets the Identifier field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Identifier field is set to the value of the last call.
+func (b *ACMEAuthorizationApplyConfiguration) WithIdentifier(value string) *ACMEAuthorizationApplyConfiguration {
+	b.Identifier = &value
+	return b
+}
+
+// WithWildcard sets the Wildcard field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Wildcard field is set to the value of the last call.
+func (b *ACMEAuthorizationApplyConfiguration) WithWildcard(value bool) *ACMEAuthorizationApplyConfiguration {
+	b.Wildcard = &value
+	return b
+}
+
+// WithInitialState sets the InitialState field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the InitialState field is set to the value of the last call.
+func (b *ACMEAuthorizationApplyConfiguration) WithInitialState(value acmev1.State) *ACMEAuthorizationApplyConfiguration {
+	b.InitialState = &value
+	return b
+}
+
+// WithChallenges adds the given value to the Challenges field in the declarative configuration
+// and returns the receiver, so that objects can be build by chaining "With" function invocations.
+// If called multiple times, values provided by each call will be appended to the Challenges field.
+func (b *ACMEAuthorizationApplyConfiguration) WithChallenges(values ...*ACMEChallengeApplyConfiguration) *ACMEAuthorizationApplyConfiguration {
+	for i := range values {
+		if values[i] == nil {
+			panic("nil value passed to WithChallenges")
+		}
+		b.Challenges = append(b.Challenges, *values[i])
+	}
+	return b
+}
diff --git a/pkg/client/applyconfigurations/acme/v1/acmechallenge.go b/pkg/client/applyconfigurations/acme/v1/acmechallenge.go
new file mode 100644
index 00000000000..746948ceb83
--- /dev/null
+++ b/pkg/client/applyconfigurations/acme/v1/acmechallenge.go
@@ -0,0 +1,57 @@
+/*
+Copyright The cert-manager Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+// Code generated by applyconfiguration-gen. DO NOT EDIT.
+
+package v1
+
+// ACMEChallengeApplyConfiguration represents a declarative configuration of the ACMEChallenge type for use
+// with apply.
+type ACMEChallengeApplyConfiguration struct {
+	URL   *string `json:"url,omitempty"`
+	Token *string `json:"token,omitempty"`
+	Type  *string `json:"type,omitempty"`
+}
+
+// ACMEChallengeApplyConfiguration constructs a declarative configuration of the ACMEChallenge type for use with
+// apply.
+func ACMEChallenge() *ACMEChallengeApplyConfiguration {
+	return &ACMEChallengeApplyConfiguration{}
+}
+
+// WithURL sets the URL field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the URL field is set to the value of the last call.
+func (b *ACMEChallengeApplyConfiguration) WithURL(value string) *ACMEChallengeApplyConfiguration {
+	b.URL = &value
+	return b
+}
+
+// WithToken sets the Token field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Token field is set to the value of the last call.
+func (b *ACMEChallengeApplyConfiguration) WithToken(value string) *ACMEChallengeApplyConfiguration {
+	b.Token = &value
+	return b
+}
+
+// WithType sets the Type field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Type field is set to the value of the last call.
+func (b *ACMEChallengeApplyConfiguration) WithType(value string) *ACMEChallengeApplyConfiguration {
+	b.Type = &value
+	return b
+}
diff --git a/pkg/client/applyconfigurations/acme/v1/acmechallengesolver.go b/pkg/client/applyconfigurations/acme/v1/acmechallengesolver.go
new file mode 100644
index 00000000000..c52eb1f7523
--- /dev/null
+++ b/pkg/client/applyconfigurations/acme/v1/acmechallengesolver.go
@@ -0,0 +1,57 @@
+/*
+Copyright The cert-manager Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+// Code generated by applyconfiguration-gen. DO NOT EDIT.
+
+package v1
+
+// ACMEChallengeSolverApplyConfiguration represents a declarative configuration of the ACMEChallengeSolver type for use
+// with apply.
+type ACMEChallengeSolverApplyConfiguration struct {
+	Selector *CertificateDNSNameSelectorApplyConfiguration `json:"selector,omitempty"`
+	HTTP01   *ACMEChallengeSolverHTTP01ApplyConfiguration  `json:"http01,omitempty"`
+	DNS01    *ACMEChallengeSolverDNS01ApplyConfiguration   `json:"dns01,omitempty"`
+}
+
+// ACMEChallengeSolverApplyConfiguration constructs a declarative configuration of the ACMEChallengeSolver type for use with
+// apply.
+func ACMEChallengeSolver() *ACMEChallengeSolverApplyConfiguration {
+	return &ACMEChallengeSolverApplyConfiguration{}
+}
+
+// WithSelector sets the Selector field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Selector field is set to the value of the last call.
+func (b *ACMEChallengeSolverApplyConfiguration) WithSelector(value *CertificateDNSNameSelectorApplyConfiguration) *ACMEChallengeSolverApplyConfiguration {
+	b.Selector = value
+	return b
+}
+
+// WithHTTP01 sets the HTTP01 field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the HTTP01 field is set to the value of the last call.
+func (b *ACMEChallengeSolverApplyConfiguration) WithHTTP01(value *ACMEChallengeSolverHTTP01ApplyConfiguration) *ACMEChallengeSolverApplyConfiguration {
+	b.HTTP01 = value
+	return b
+}
+
+// WithDNS01 sets the DNS01 field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the DNS01 field is set to the value of the last call.
+func (b *ACMEChallengeSolverApplyConfiguration) WithDNS01(value *ACMEChallengeSolverDNS01ApplyConfiguration) *ACMEChallengeSolverApplyConfiguration {
+	b.DNS01 = value
+	return b
+}
diff --git a/pkg/client/applyconfigurations/acme/v1/acmechallengesolverdns01.go b/pkg/client/applyconfigurations/acme/v1/acmechallengesolverdns01.go
new file mode 100644
index 00000000000..beedfce393f
--- /dev/null
+++ b/pkg/client/applyconfigurations/acme/v1/acmechallengesolverdns01.go
@@ -0,0 +1,124 @@
+/*
+Copyright The cert-manager Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+// Code generated by applyconfiguration-gen. DO NOT EDIT.
+
+package v1
+
+import (
+	acmev1 "github.com/cert-manager/cert-manager/pkg/apis/acme/v1"
+)
+
+// ACMEChallengeSolverDNS01ApplyConfiguration represents a declarative configuration of the ACMEChallengeSolverDNS01 type for use
+// with apply.
+type ACMEChallengeSolverDNS01ApplyConfiguration struct {
+	CNAMEStrategy *acmev1.CNAMEStrategy                                  `json:"cnameStrategy,omitempty"`
+	Akamai        *ACMEIssuerDNS01ProviderAkamaiApplyConfiguration       `json:"akamai,omitempty"`
+	CloudDNS      *ACMEIssuerDNS01ProviderCloudDNSApplyConfiguration     `json:"cloudDNS,omitempty"`
+	Cloudflare    *ACMEIssuerDNS01ProviderCloudflareApplyConfiguration   `json:"cloudflare,omitempty"`
+	Route53       *ACMEIssuerDNS01ProviderRoute53ApplyConfiguration      `json:"route53,omitempty"`
+	AzureDNS      *ACMEIssuerDNS01ProviderAzureDNSApplyConfiguration     `json:"azureDNS,omitempty"`
+	DigitalOcean  *ACMEIssuerDNS01ProviderDigitalOceanApplyConfiguration `json:"digitalocean,omitempty"`
+	AcmeDNS       *ACMEIssuerDNS01ProviderAcmeDNSApplyConfiguration      `json:"acmeDNS,omitempty"`
+	RFC2136       *ACMEIssuerDNS01ProviderRFC2136ApplyConfiguration      `json:"rfc2136,omitempty"`
+	Webhook       *ACMEIssuerDNS01ProviderWebhookApplyConfiguration      `json:"webhook,omitempty"`
+}
+
+// ACMEChallengeSolverDNS01ApplyConfiguration constructs a declarative configuration of the ACMEChallengeSolverDNS01 type for use with
+// apply.
+func ACMEChallengeSolverDNS01() *ACMEChallengeSolverDNS01ApplyConfiguration {
+	return &ACMEChallengeSolverDNS01ApplyConfiguration{}
+}
+
+// WithCNAMEStrategy sets the CNAMEStrategy field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the CNAMEStrategy field is set to the value of the last call.
+func (b *ACMEChallengeSolverDNS01ApplyConfiguration) WithCNAMEStrategy(value acmev1.CNAMEStrategy) *ACMEChallengeSolverDNS01ApplyConfiguration {
+	b.CNAMEStrategy = &value
+	return b
+}
+
+// WithAkamai sets the Akamai field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Akamai field is set to the value of the last call.
+func (b *ACMEChallengeSolverDNS01ApplyConfiguration) WithAkamai(value *ACMEIssuerDNS01ProviderAkamaiApplyConfiguration) *ACMEChallengeSolverDNS01ApplyConfiguration {
+	b.Akamai = value
+	return b
+}
+
+// WithCloudDNS sets the CloudDNS field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the CloudDNS field is set to the value of the last call.
+func (b *ACMEChallengeSolverDNS01ApplyConfiguration) WithCloudDNS(value *ACMEIssuerDNS01ProviderCloudDNSApplyConfiguration) *ACMEChallengeSolverDNS01ApplyConfiguration {
+	b.CloudDNS = value
+	return b
+}
+
+// WithCloudflare sets the Cloudflare field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Cloudflare field is set to the value of the last call.
+func (b *ACMEChallengeSolverDNS01ApplyConfiguration) WithCloudflare(value *ACMEIssuerDNS01ProviderCloudflareApplyConfiguration) *ACMEChallengeSolverDNS01ApplyConfiguration {
+	b.Cloudflare = value
+	return b
+}
+
+// WithRoute53 sets the Route53 field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Route53 field is set to the value of the last call.
+func (b *ACMEChallengeSolverDNS01ApplyConfiguration) WithRoute53(value *ACMEIssuerDNS01ProviderRoute53ApplyConfiguration) *ACMEChallengeSolverDNS01ApplyConfiguration {
+	b.Route53 = value
+	return b
+}
+
+// WithAzureDNS sets the AzureDNS field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the AzureDNS field is set to the value of the last call.
+func (b *ACMEChallengeSolverDNS01ApplyConfiguration) WithAzureDNS(value *ACMEIssuerDNS01ProviderAzureDNSApplyConfiguration) *ACMEChallengeSolverDNS01ApplyConfiguration {
+	b.AzureDNS = value
+	return b
+}
+
+// WithDigitalOcean sets the DigitalOcean field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the DigitalOcean field is set to the value of the last call.
+func (b *ACMEChallengeSolverDNS01ApplyConfiguration) WithDigitalOcean(value *ACMEIssuerDNS01ProviderDigitalOceanApplyConfiguration) *ACMEChallengeSolverDNS01ApplyConfiguration {
+	b.DigitalOcean = value
+	return b
+}
+
+// WithAcmeDNS sets the AcmeDNS field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the AcmeDNS field is set to the value of the last call.
+func (b *ACMEChallengeSolverDNS01ApplyConfiguration) WithAcmeDNS(value *ACMEIssuerDNS01ProviderAcmeDNSApplyConfiguration) *ACMEChallengeSolverDNS01ApplyConfiguration {
+	b.AcmeDNS = value
+	return b
+}
+
+// WithRFC2136 sets the RFC2136 field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the RFC2136 field is set to the value of the last call.
+func (b *ACMEChallengeSolverDNS01ApplyConfiguration) WithRFC2136(value *ACMEIssuerDNS01ProviderRFC2136ApplyConfiguration) *ACMEChallengeSolverDNS01ApplyConfiguration {
+	b.RFC2136 = value
+	return b
+}
+
+// WithWebhook sets the Webhook field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Webhook field is set to the value of the last call.
+func (b *ACMEChallengeSolverDNS01ApplyConfiguration) WithWebhook(value *ACMEIssuerDNS01ProviderWebhookApplyConfiguration) *ACMEChallengeSolverDNS01ApplyConfiguration {
+	b.Webhook = value
+	return b
+}
diff --git a/pkg/client/applyconfigurations/acme/v1/acmechallengesolverhttp01.go b/pkg/client/applyconfigurations/acme/v1/acmechallengesolverhttp01.go
new file mode 100644
index 00000000000..7c95caa1099
--- /dev/null
+++ b/pkg/client/applyconfigurations/acme/v1/acmechallengesolverhttp01.go
@@ -0,0 +1,48 @@
+/*
+Copyright The cert-manager Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+// Code generated by applyconfiguration-gen. DO NOT EDIT.
+
+package v1
+
+// ACMEChallengeSolverHTTP01ApplyConfiguration represents a declarative configuration of the ACMEChallengeSolverHTTP01 type for use
+// with apply.
+type ACMEChallengeSolverHTTP01ApplyConfiguration struct {
+	Ingress          *ACMEChallengeSolverHTTP01IngressApplyConfiguration          `json:"ingress,omitempty"`
+	GatewayHTTPRoute *ACMEChallengeSolverHTTP01GatewayHTTPRouteApplyConfiguration `json:"gatewayHTTPRoute,omitempty"`
+}
+
+// ACMEChallengeSolverHTTP01ApplyConfiguration constructs a declarative configuration of the ACMEChallengeSolverHTTP01 type for use with
+// apply.
+func ACMEChallengeSolverHTTP01() *ACMEChallengeSolverHTTP01ApplyConfiguration {
+	return &ACMEChallengeSolverHTTP01ApplyConfiguration{}
+}
+
+// WithIngress sets the Ingress field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Ingress field is set to the value of the last call.
+func (b *ACMEChallengeSolverHTTP01ApplyConfiguration) WithIngress(value *ACMEChallengeSolverHTTP01IngressApplyConfiguration) *ACMEChallengeSolverHTTP01ApplyConfiguration {
+	b.Ingress = value
+	return b
+}
+
+// WithGatewayHTTPRoute sets the GatewayHTTPRoute field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the GatewayHTTPRoute field is set to the value of the last call.
+func (b *ACMEChallengeSolverHTTP01ApplyConfiguration) WithGatewayHTTPRoute(value *ACMEChallengeSolverHTTP01GatewayHTTPRouteApplyConfiguration) *ACMEChallengeSolverHTTP01ApplyConfiguration {
+	b.GatewayHTTPRoute = value
+	return b
+}
diff --git a/pkg/client/applyconfigurations/acme/v1/acmechallengesolverhttp01gatewayhttproute.go b/pkg/client/applyconfigurations/acme/v1/acmechallengesolverhttp01gatewayhttproute.go
new file mode 100644
index 00000000000..0c5f0ad59c4
--- /dev/null
+++ b/pkg/client/applyconfigurations/acme/v1/acmechallengesolverhttp01gatewayhttproute.go
@@ -0,0 +1,79 @@
+/*
+Copyright The cert-manager Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+// Code generated by applyconfiguration-gen. DO NOT EDIT.
+
+package v1
+
+import (
+	corev1 "k8s.io/api/core/v1"
+	apisv1 "sigs.k8s.io/gateway-api/apis/v1"
+)
+
+// ACMEChallengeSolverHTTP01GatewayHTTPRouteApplyConfiguration represents a declarative configuration of the ACMEChallengeSolverHTTP01GatewayHTTPRoute type for use
+// with apply.
+type ACMEChallengeSolverHTTP01GatewayHTTPRouteApplyConfiguration struct {
+	ServiceType *corev1.ServiceType                                            `json:"serviceType,omitempty"`
+	Labels      map[string]string                                              `json:"labels,omitempty"`
+	ParentRefs  []apisv1.ParentReference                                       `json:"parentRefs,omitempty"`
+	PodTemplate *ACMEChallengeSolverHTTP01IngressPodTemplateApplyConfiguration `json:"podTemplate,omitempty"`
+}
+
+// ACMEChallengeSolverHTTP01GatewayHTTPRouteApplyConfiguration constructs a declarative configuration of the ACMEChallengeSolverHTTP01GatewayHTTPRoute type for use with
+// apply.
+func ACMEChallengeSolverHTTP01GatewayHTTPRoute() *ACMEChallengeSolverHTTP01GatewayHTTPRouteApplyConfiguration {
+	return &ACMEChallengeSolverHTTP01GatewayHTTPRouteApplyConfiguration{}
+}
+
+// WithServiceType sets the ServiceType field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the ServiceType field is set to the value of the last call.
+func (b *ACMEChallengeSolverHTTP01GatewayHTTPRouteApplyConfiguration) WithServiceType(value corev1.ServiceType) *ACMEChallengeSolverHTTP01GatewayHTTPRouteApplyConfiguration {
+	b.ServiceType = &value
+	return b
+}
+
+// WithLabels puts the entries into the Labels field in the declarative configuration
+// and returns the receiver, so that objects can be build by chaining "With" function invocations.
+// If called multiple times, the entries provided by each call will be put on the Labels field,
+// overwriting an existing map entries in Labels field with the same key.
+func (b *ACMEChallengeSolverHTTP01GatewayHTTPRouteApplyConfiguration) WithLabels(entries map[string]string) *ACMEChallengeSolverHTTP01GatewayHTTPRouteApplyConfiguration {
+	if b.Labels == nil && len(entries) > 0 {
+		b.Labels = make(map[string]string, len(entries))
+	}
+	for k, v := range entries {
+		b.Labels[k] = v
+	}
+	return b
+}
+
+// WithParentRefs adds the given value to the ParentRefs field in the declarative configuration
+// and returns the receiver, so that objects can be build by chaining "With" function invocations.
+// If called multiple times, values provided by each call will be appended to the ParentRefs field.
+func (b *ACMEChallengeSolverHTTP01GatewayHTTPRouteApplyConfiguration) WithParentRefs(values ...apisv1.ParentReference) *ACMEChallengeSolverHTTP01GatewayHTTPRouteApplyConfiguration {
+	for i := range values {
+		b.ParentRefs = append(b.ParentRefs, values[i])
+	}
+	return b
+}
+
+// WithPodTemplate sets the PodTemplate field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the PodTemplate field is set to the value of the last call.
+func (b *ACMEChallengeSolverHTTP01GatewayHTTPRouteApplyConfiguration) WithPodTemplate(value *ACMEChallengeSolverHTTP01IngressPodTemplateApplyConfiguration) *ACMEChallengeSolverHTTP01GatewayHTTPRouteApplyConfiguration {
+	b.PodTemplate = value
+	return b
+}
diff --git a/pkg/client/applyconfigurations/acme/v1/acmechallengesolverhttp01ingress.go b/pkg/client/applyconfigurations/acme/v1/acmechallengesolverhttp01ingress.go
new file mode 100644
index 00000000000..01ac4d7f7fd
--- /dev/null
+++ b/pkg/client/applyconfigurations/acme/v1/acmechallengesolverhttp01ingress.go
@@ -0,0 +1,88 @@
+/*
+Copyright The cert-manager Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+// Code generated by applyconfiguration-gen. DO NOT EDIT.
+
+package v1
+
+import (
+	corev1 "k8s.io/api/core/v1"
+)
+
+// ACMEChallengeSolverHTTP01IngressApplyConfiguration represents a declarative configuration of the ACMEChallengeSolverHTTP01Ingress type for use
+// with apply.
+type ACMEChallengeSolverHTTP01IngressApplyConfiguration struct {
+	ServiceType      *corev1.ServiceType                                            `json:"serviceType,omitempty"`
+	IngressClassName *string                                                        `json:"ingressClassName,omitempty"`
+	Class            *string                                                        `json:"class,omitempty"`
+	Name             *string                                                        `json:"name,omitempty"`
+	PodTemplate      *ACMEChallengeSolverHTTP01IngressPodTemplateApplyConfiguration `json:"podTemplate,omitempty"`
+	IngressTemplate  *ACMEChallengeSolverHTTP01IngressTemplateApplyConfiguration    `json:"ingressTemplate,omitempty"`
+}
+
+// ACMEChallengeSolverHTTP01IngressApplyConfiguration constructs a declarative configuration of the ACMEChallengeSolverHTTP01Ingress type for use with
+// apply.
+func ACMEChallengeSolverHTTP01Ingress() *ACMEChallengeSolverHTTP01IngressApplyConfiguration {
+	return &ACMEChallengeSolverHTTP01IngressApplyConfiguration{}
+}
+
+// WithServiceType sets the ServiceType field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the ServiceType field is set to the value of the last call.
+func (b *ACMEChallengeSolverHTTP01IngressApplyConfiguration) WithServiceType(value corev1.ServiceType) *ACMEChallengeSolverHTTP01IngressApplyConfiguration {
+	b.ServiceType = &value
+	return b
+}
+
+// WithIngressClassName sets the IngressClassName field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the IngressClassName field is set to the value of the last call.
+func (b *ACMEChallengeSolverHTTP01IngressApplyConfiguration) WithIngressClassName(value string) *ACMEChallengeSolverHTTP01IngressApplyConfiguration {
+	b.IngressClassName = &value
+	return b
+}
+
+// WithClass sets the Class field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Class field is set to the value of the last call.
+func (b *ACMEChallengeSolverHTTP01IngressApplyConfiguration) WithClass(value string) *ACMEChallengeSolverHTTP01IngressApplyConfiguration {
+	b.Class = &value
+	return b
+}
+
+// WithName sets the Name field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Name field is set to the value of the last call.
+func (b *ACMEChallengeSolverHTTP01IngressApplyConfiguration) WithName(value string) *ACMEChallengeSolverHTTP01IngressApplyConfiguration {
+	b.Name = &value
+	return b
+}
+
+// WithPodTemplate sets the PodTemplate field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the PodTemplate field is set to the value of the last call.
+func (b *ACMEChallengeSolverHTTP01IngressApplyConfiguration) WithPodTemplate(value *ACMEChallengeSolverHTTP01IngressPodTemplateApplyConfiguration) *ACMEChallengeSolverHTTP01IngressApplyConfiguration {
+	b.PodTemplate = value
+	return b
+}
+
+// WithIngressTemplate sets the IngressTemplate field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the IngressTemplate field is set to the value of the last call.
+func (b *ACMEChallengeSolverHTTP01IngressApplyConfiguration) WithIngressTemplate(value *ACMEChallengeSolverHTTP01IngressTemplateApplyConfiguration) *ACMEChallengeSolverHTTP01IngressApplyConfiguration {
+	b.IngressTemplate = value
+	return b
+}
diff --git a/pkg/client/applyconfigurations/acme/v1/acmechallengesolverhttp01ingressobjectmeta.go b/pkg/client/applyconfigurations/acme/v1/acmechallengesolverhttp01ingressobjectmeta.go
new file mode 100644
index 00000000000..3afc2e230e9
--- /dev/null
+++ b/pkg/client/applyconfigurations/acme/v1/acmechallengesolverhttp01ingressobjectmeta.go
@@ -0,0 +1,60 @@
+/*
+Copyright The cert-manager Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+// Code generated by applyconfiguration-gen. DO NOT EDIT.
+
+package v1
+
+// ACMEChallengeSolverHTTP01IngressObjectMetaApplyConfiguration represents a declarative configuration of the ACMEChallengeSolverHTTP01IngressObjectMeta type for use
+// with apply.
+type ACMEChallengeSolverHTTP01IngressObjectMetaApplyConfiguration struct {
+	Annotations map[string]string `json:"annotations,omitempty"`
+	Labels      map[string]string `json:"labels,omitempty"`
+}
+
+// ACMEChallengeSolverHTTP01IngressObjectMetaApplyConfiguration constructs a declarative configuration of the ACMEChallengeSolverHTTP01IngressObjectMeta type for use with
+// apply.
+func ACMEChallengeSolverHTTP01IngressObjectMeta() *ACMEChallengeSolverHTTP01IngressObjectMetaApplyConfiguration {
+	return &ACMEChallengeSolverHTTP01IngressObjectMetaApplyConfiguration{}
+}
+
+// WithAnnotations puts the entries into the Annotations field in the declarative configuration
+// and returns the receiver, so that objects can be build by chaining "With" function invocations.
+// If called multiple times, the entries provided by each call will be put on the Annotations field,
+// overwriting an existing map entries in Annotations field with the same key.
+func (b *ACMEChallengeSolverHTTP01IngressObjectMetaApplyConfiguration) WithAnnotations(entries map[string]string) *ACMEChallengeSolverHTTP01IngressObjectMetaApplyConfiguration {
+	if b.Annotations == nil && len(entries) > 0 {
+		b.Annotations = make(map[string]string, len(entries))
+	}
+	for k, v := range entries {
+		b.Annotations[k] = v
+	}
+	return b
+}
+
+// WithLabels puts the entries into the Labels field in the declarative configuration
+// and returns the receiver, so that objects can be build by chaining "With" function invocations.
+// If called multiple times, the entries provided by each call will be put on the Labels field,
+// overwriting an existing map entries in Labels field with the same key.
+func (b *ACMEChallengeSolverHTTP01IngressObjectMetaApplyConfiguration) WithLabels(entries map[string]string) *ACMEChallengeSolverHTTP01IngressObjectMetaApplyConfiguration {
+	if b.Labels == nil && len(entries) > 0 {
+		b.Labels = make(map[string]string, len(entries))
+	}
+	for k, v := range entries {
+		b.Labels[k] = v
+	}
+	return b
+}
diff --git a/pkg/client/applyconfigurations/acme/v1/acmechallengesolverhttp01ingresspodobjectmeta.go b/pkg/client/applyconfigurations/acme/v1/acmechallengesolverhttp01ingresspodobjectmeta.go
new file mode 100644
index 00000000000..895bdc108b5
--- /dev/null
+++ b/pkg/client/applyconfigurations/acme/v1/acmechallengesolverhttp01ingresspodobjectmeta.go
@@ -0,0 +1,60 @@
+/*
+Copyright The cert-manager Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+// Code generated by applyconfiguration-gen. DO NOT EDIT.
+
+package v1
+
+// ACMEChallengeSolverHTTP01IngressPodObjectMetaApplyConfiguration represents a declarative configuration of the ACMEChallengeSolverHTTP01IngressPodObjectMeta type for use
+// with apply.
+type ACMEChallengeSolverHTTP01IngressPodObjectMetaApplyConfiguration struct {
+	Annotations map[string]string `json:"annotations,omitempty"`
+	Labels      map[string]string `json:"labels,omitempty"`
+}
+
+// ACMEChallengeSolverHTTP01IngressPodObjectMetaApplyConfiguration constructs a declarative configuration of the ACMEChallengeSolverHTTP01IngressPodObjectMeta type for use with
+// apply.
+func ACMEChallengeSolverHTTP01IngressPodObjectMeta() *ACMEChallengeSolverHTTP01IngressPodObjectMetaApplyConfiguration {
+	return &ACMEChallengeSolverHTTP01IngressPodObjectMetaApplyConfiguration{}
+}
+
+// WithAnnotations puts the entries into the Annotations field in the declarative configuration
+// and returns the receiver, so that objects can be build by chaining "With" function invocations.
+// If called multiple times, the entries provided by each call will be put on the Annotations field,
+// overwriting an existing map entries in Annotations field with the same key.
+func (b *ACMEChallengeSolverHTTP01IngressPodObjectMetaApplyConfiguration) WithAnnotations(entries map[string]string) *ACMEChallengeSolverHTTP01IngressPodObjectMetaApplyConfiguration {
+	if b.Annotations == nil && len(entries) > 0 {
+		b.Annotations = make(map[string]string, len(entries))
+	}
+	for k, v := range entries {
+		b.Annotations[k] = v
+	}
+	return b
+}
+
+// WithLabels puts the entries into the Labels field in the declarative configuration
+// and returns the receiver, so that objects can be build by chaining "With" function invocations.
+// If called multiple times, the entries provided by each call will be put on the Labels field,
+// overwriting an existing map entries in Labels field with the same key.
+func (b *ACMEChallengeSolverHTTP01IngressPodObjectMetaApplyConfiguration) WithLabels(entries map[string]string) *ACMEChallengeSolverHTTP01IngressPodObjectMetaApplyConfiguration {
+	if b.Labels == nil && len(entries) > 0 {
+		b.Labels = make(map[string]string, len(entries))
+	}
+	for k, v := range entries {
+		b.Labels[k] = v
+	}
+	return b
+}
diff --git a/pkg/client/applyconfigurations/acme/v1/acmechallengesolverhttp01ingresspodsecuritycontext.go b/pkg/client/applyconfigurations/acme/v1/acmechallengesolverhttp01ingresspodsecuritycontext.go
new file mode 100644
index 00000000000..c8cc30366d7
--- /dev/null
+++ b/pkg/client/applyconfigurations/acme/v1/acmechallengesolverhttp01ingresspodsecuritycontext.go
@@ -0,0 +1,119 @@
+/*
+Copyright The cert-manager Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+// Code generated by applyconfiguration-gen. DO NOT EDIT.
+
+package v1
+
+import (
+	corev1 "k8s.io/api/core/v1"
+)
+
+// ACMEChallengeSolverHTTP01IngressPodSecurityContextApplyConfiguration represents a declarative configuration of the ACMEChallengeSolverHTTP01IngressPodSecurityContext type for use
+// with apply.
+type ACMEChallengeSolverHTTP01IngressPodSecurityContextApplyConfiguration struct {
+	SELinuxOptions      *corev1.SELinuxOptions         `json:"seLinuxOptions,omitempty"`
+	RunAsUser           *int64                         `json:"runAsUser,omitempty"`
+	RunAsGroup          *int64                         `json:"runAsGroup,omitempty"`
+	RunAsNonRoot        *bool                          `json:"runAsNonRoot,omitempty"`
+	SupplementalGroups  []int64                        `json:"supplementalGroups,omitempty"`
+	FSGroup             *int64                         `json:"fsGroup,omitempty"`
+	Sysctls             []corev1.Sysctl                `json:"sysctls,omitempty"`
+	FSGroupChangePolicy *corev1.PodFSGroupChangePolicy `json:"fsGroupChangePolicy,omitempty"`
+	SeccompProfile      *corev1.SeccompProfile         `json:"seccompProfile,omitempty"`
+}
+
+// ACMEChallengeSolverHTTP01IngressPodSecurityContextApplyConfiguration constructs a declarative configuration of the ACMEChallengeSolverHTTP01IngressPodSecurityContext type for use with
+// apply.
+func ACMEChallengeSolverHTTP01IngressPodSecurityContext() *ACMEChallengeSolverHTTP01IngressPodSecurityContextApplyConfiguration {
+	return &ACMEChallengeSolverHTTP01IngressPodSecurityContextApplyConfiguration{}
+}
+
+// WithSELinuxOptions sets the SELinuxOptions field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the SELinuxOptions field is set to the value of the last call.
+func (b *ACMEChallengeSolverHTTP01IngressPodSecurityContextApplyConfiguration) WithSELinuxOptions(value corev1.SELinuxOptions) *ACMEChallengeSolverHTTP01IngressPodSecurityContextApplyConfiguration {
+	b.SELinuxOptions = &value
+	return b
+}
+
+// WithRunAsUser sets the RunAsUser field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the RunAsUser field is set to the value of the last call.
+func (b *ACMEChallengeSolverHTTP01IngressPodSecurityContextApplyConfiguration) WithRunAsUser(value int64) *ACMEChallengeSolverHTTP01IngressPodSecurityContextApplyConfiguration {
+	b.RunAsUser = &value
+	return b
+}
+
+// WithRunAsGroup sets the RunAsGroup field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the RunAsGroup field is set to the value of the last call.
+func (b *ACMEChallengeSolverHTTP01IngressPodSecurityContextApplyConfiguration) WithRunAsGroup(value int64) *ACMEChallengeSolverHTTP01IngressPodSecurityContextApplyConfiguration {
+	b.RunAsGroup = &value
+	return b
+}
+
+// WithRunAsNonRoot sets the RunAsNonRoot field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the RunAsNonRoot field is set to the value of the last call.
+func (b *ACMEChallengeSolverHTTP01IngressPodSecurityContextApplyConfiguration) WithRunAsNonRoot(value bool) *ACMEChallengeSolverHTTP01IngressPodSecurityContextApplyConfiguration {
+	b.RunAsNonRoot = &value
+	return b
+}
+
+// WithSupplementalGroups adds the given value to the SupplementalGroups field in the declarative configuration
+// and returns the receiver, so that objects can be build by chaining "With" function invocations.
+// If called multiple times, values provided by each call will be appended to the SupplementalGroups field.
+func (b *ACMEChallengeSolverHTTP01IngressPodSecurityContextApplyConfiguration) WithSupplementalGroups(values ...int64) *ACMEChallengeSolverHTTP01IngressPodSecurityContextApplyConfiguration {
+	for i := range values {
+		b.SupplementalGroups = append(b.SupplementalGroups, values[i])
+	}
+	return b
+}
+
+// WithFSGroup sets the FSGroup field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the FSGroup field is set to the value of the last call.
+func (b *ACMEChallengeSolverHTTP01IngressPodSecurityContextApplyConfiguration) WithFSGroup(value int64) *ACMEChallengeSolverHTTP01IngressPodSecurityContextApplyConfiguration {
+	b.FSGroup = &value
+	return b
+}
+
+// WithSysctls adds the given value to the Sysctls field in the declarative configuration
+// and returns the receiver, so that objects can be build by chaining "With" function invocations.
+// If called multiple times, values provided by each call will be appended to the Sysctls field.
+func (b *ACMEChallengeSolverHTTP01IngressPodSecurityContextApplyConfiguration) WithSysctls(values ...corev1.Sysctl) *ACMEChallengeSolverHTTP01IngressPodSecurityContextApplyConfiguration {
+	for i := range values {
+		b.Sysctls = append(b.Sysctls, values[i])
+	}
+	return b
+}
+
+// WithFSGroupChangePolicy sets the FSGroupChangePolicy field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the FSGroupChangePolicy field is set to the value of the last call.
+func (b *ACMEChallengeSolverHTTP01IngressPodSecurityContextApplyConfiguration) WithFSGroupChangePolicy(value corev1.PodFSGroupChangePolicy) *ACMEChallengeSolverHTTP01IngressPodSecurityContextApplyConfiguration {
+	b.FSGroupChangePolicy = &value
+	return b
+}
+
+// WithSeccompProfile sets the SeccompProfile field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the SeccompProfile field is set to the value of the last call.
+func (b *ACMEChallengeSolverHTTP01IngressPodSecurityContextApplyConfiguration) WithSeccompProfile(value corev1.SeccompProfile) *ACMEChallengeSolverHTTP01IngressPodSecurityContextApplyConfiguration {
+	b.SeccompProfile = &value
+	return b
+}
diff --git a/pkg/client/applyconfigurations/acme/v1/acmechallengesolverhttp01ingresspodspec.go b/pkg/client/applyconfigurations/acme/v1/acmechallengesolverhttp01ingresspodspec.go
new file mode 100644
index 00000000000..3fc71fac184
--- /dev/null
+++ b/pkg/client/applyconfigurations/acme/v1/acmechallengesolverhttp01ingresspodspec.go
@@ -0,0 +1,107 @@
+/*
+Copyright The cert-manager Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+// Code generated by applyconfiguration-gen. DO NOT EDIT.
+
+package v1
+
+import (
+	corev1 "k8s.io/api/core/v1"
+)
+
+// ACMEChallengeSolverHTTP01IngressPodSpecApplyConfiguration represents a declarative configuration of the ACMEChallengeSolverHTTP01IngressPodSpec type for use
+// with apply.
+type ACMEChallengeSolverHTTP01IngressPodSpecApplyConfiguration struct {
+	NodeSelector       map[string]string                                                     `json:"nodeSelector,omitempty"`
+	Affinity           *corev1.Affinity                                                      `json:"affinity,omitempty"`
+	Tolerations        []corev1.Toleration                                                   `json:"tolerations,omitempty"`
+	PriorityClassName  *string                                                               `json:"priorityClassName,omitempty"`
+	ServiceAccountName *string                                                               `json:"serviceAccountName,omitempty"`
+	ImagePullSecrets   []corev1.LocalObjectReference                                         `json:"imagePullSecrets,omitempty"`
+	SecurityContext    *ACMEChallengeSolverHTTP01IngressPodSecurityContextApplyConfiguration `json:"securityContext,omitempty"`
+}
+
+// ACMEChallengeSolverHTTP01IngressPodSpecApplyConfiguration constructs a declarative configuration of the ACMEChallengeSolverHTTP01IngressPodSpec type for use with
+// apply.
+func ACMEChallengeSolverHTTP01IngressPodSpec() *ACMEChallengeSolverHTTP01IngressPodSpecApplyConfiguration {
+	return &ACMEChallengeSolverHTTP01IngressPodSpecApplyConfiguration{}
+}
+
+// WithNodeSelector puts the entries into the NodeSelector field in the declarative configuration
+// and returns the receiver, so that objects can be build by chaining "With" function invocations.
+// If called multiple times, the entries provided by each call will be put on the NodeSelector field,
+// overwriting an existing map entries in NodeSelector field with the same key.
+func (b *ACMEChallengeSolverHTTP01IngressPodSpecApplyConfiguration) WithNodeSelector(entries map[string]string) *ACMEChallengeSolverHTTP01IngressPodSpecApplyConfiguration {
+	if b.NodeSelector == nil && len(entries) > 0 {
+		b.NodeSelector = make(map[string]string, len(entries))
+	}
+	for k, v := range entries {
+		b.NodeSelector[k] = v
+	}
+	return b
+}
+
+// WithAffinity sets the Affinity field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Affinity field is set to the value of the last call.
+func (b *ACMEChallengeSolverHTTP01IngressPodSpecApplyConfiguration) WithAffinity(value corev1.Affinity) *ACMEChallengeSolverHTTP01IngressPodSpecApplyConfiguration {
+	b.Affinity = &value
+	return b
+}
+
+// WithTolerations adds the given value to the Tolerations field in the declarative configuration
+// and returns the receiver, so that objects can be build by chaining "With" function invocations.
+// If called multiple times, values provided by each call will be appended to the Tolerations field.
+func (b *ACMEChallengeSolverHTTP01IngressPodSpecApplyConfiguration) WithTolerations(values ...corev1.Toleration) *ACMEChallengeSolverHTTP01IngressPodSpecApplyConfiguration {
+	for i := range values {
+		b.Tolerations = append(b.Tolerations, values[i])
+	}
+	return b
+}
+
+// WithPriorityClassName sets the PriorityClassName field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the PriorityClassName field is set to the value of the last call.
+func (b *ACMEChallengeSolverHTTP01IngressPodSpecApplyConfiguration) WithPriorityClassName(value string) *ACMEChallengeSolverHTTP01IngressPodSpecApplyConfiguration {
+	b.PriorityClassName = &value
+	return b
+}
+
+// WithServiceAccountName sets the ServiceAccountName field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the ServiceAccountName field is set to the value of the last call.
+func (b *ACMEChallengeSolverHTTP01IngressPodSpecApplyConfiguration) WithServiceAccountName(value string) *ACMEChallengeSolverHTTP01IngressPodSpecApplyConfiguration {
+	b.ServiceAccountName = &value
+	return b
+}
+
+// WithImagePullSecrets adds the given value to the ImagePullSecrets field in the declarative configuration
+// and returns the receiver, so that objects can be build by chaining "With" function invocations.
+// If called multiple times, values provided by each call will be appended to the ImagePullSecrets field.
+func (b *ACMEChallengeSolverHTTP01IngressPodSpecApplyConfiguration) WithImagePullSecrets(values ...corev1.LocalObjectReference) *ACMEChallengeSolverHTTP01IngressPodSpecApplyConfiguration {
+	for i := range values {
+		b.ImagePullSecrets = append(b.ImagePullSecrets, values[i])
+	}
+	return b
+}
+
+// WithSecurityContext sets the SecurityContext field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the SecurityContext field is set to the value of the last call.
+func (b *ACMEChallengeSolverHTTP01IngressPodSpecApplyConfiguration) WithSecurityContext(value *ACMEChallengeSolverHTTP01IngressPodSecurityContextApplyConfiguration) *ACMEChallengeSolverHTTP01IngressPodSpecApplyConfiguration {
+	b.SecurityContext = value
+	return b
+}
diff --git a/pkg/client/applyconfigurations/acme/v1/acmechallengesolverhttp01ingresspodtemplate.go b/pkg/client/applyconfigurations/acme/v1/acmechallengesolverhttp01ingresspodtemplate.go
new file mode 100644
index 00000000000..a954fa0f615
--- /dev/null
+++ b/pkg/client/applyconfigurations/acme/v1/acmechallengesolverhttp01ingresspodtemplate.go
@@ -0,0 +1,76 @@
+/*
+Copyright The cert-manager Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+// Code generated by applyconfiguration-gen. DO NOT EDIT.
+
+package v1
+
+// ACMEChallengeSolverHTTP01IngressPodTemplateApplyConfiguration represents a declarative configuration of the ACMEChallengeSolverHTTP01IngressPodTemplate type for use
+// with apply.
+type ACMEChallengeSolverHTTP01IngressPodTemplateApplyConfiguration struct {
+	*ACMEChallengeSolverHTTP01IngressPodObjectMetaApplyConfiguration `json:"metadata,omitempty"`
+	Spec                                                             *ACMEChallengeSolverHTTP01IngressPodSpecApplyConfiguration `json:"spec,omitempty"`
+}
+
+// ACMEChallengeSolverHTTP01IngressPodTemplateApplyConfiguration constructs a declarative configuration of the ACMEChallengeSolverHTTP01IngressPodTemplate type for use with
+// apply.
+func ACMEChallengeSolverHTTP01IngressPodTemplate() *ACMEChallengeSolverHTTP01IngressPodTemplateApplyConfiguration {
+	return &ACMEChallengeSolverHTTP01IngressPodTemplateApplyConfiguration{}
+}
+
+// WithAnnotations puts the entries into the Annotations field in the declarative configuration
+// and returns the receiver, so that objects can be build by chaining "With" function invocations.
+// If called multiple times, the entries provided by each call will be put on the Annotations field,
+// overwriting an existing map entries in Annotations field with the same key.
+func (b *ACMEChallengeSolverHTTP01IngressPodTemplateApplyConfiguration) WithAnnotations(entries map[string]string) *ACMEChallengeSolverHTTP01IngressPodTemplateApplyConfiguration {
+	b.ensureACMEChallengeSolverHTTP01IngressPodObjectMetaApplyConfigurationExists()
+	if b.ACMEChallengeSolverHTTP01IngressPodObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
+		b.ACMEChallengeSolverHTTP01IngressPodObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
+	}
+	for k, v := range entries {
+		b.ACMEChallengeSolverHTTP01IngressPodObjectMetaApplyConfiguration.Annotations[k] = v
+	}
+	return b
+}
+
+// WithLabels puts the entries into the Labels field in the declarative configuration
+// and returns the receiver, so that objects can be build by chaining "With" function invocations.
+// If called multiple times, the entries provided by each call will be put on the Labels field,
+// overwriting an existing map entries in Labels field with the same key.
+func (b *ACMEChallengeSolverHTTP01IngressPodTemplateApplyConfiguration) WithLabels(entries map[string]string) *ACMEChallengeSolverHTTP01IngressPodTemplateApplyConfiguration {
+	b.ensureACMEChallengeSolverHTTP01IngressPodObjectMetaApplyConfigurationExists()
+	if b.ACMEChallengeSolverHTTP01IngressPodObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
+		b.ACMEChallengeSolverHTTP01IngressPodObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
+	}
+	for k, v := range entries {
+		b.ACMEChallengeSolverHTTP01IngressPodObjectMetaApplyConfiguration.Labels[k] = v
+	}
+	return b
+}
+
+func (b *ACMEChallengeSolverHTTP01IngressPodTemplateApplyConfiguration) ensureACMEChallengeSolverHTTP01IngressPodObjectMetaApplyConfigurationExists() {
+	if b.ACMEChallengeSolverHTTP01IngressPodObjectMetaApplyConfiguration == nil {
+		b.ACMEChallengeSolverHTTP01IngressPodObjectMetaApplyConfiguration = &ACMEChallengeSolverHTTP01IngressPodObjectMetaApplyConfiguration{}
+	}
+}
+
+// WithSpec sets the Spec field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Spec field is set to the value of the last call.
+func (b *ACMEChallengeSolverHTTP01IngressPodTemplateApplyConfiguration) WithSpec(value *ACMEChallengeSolverHTTP01IngressPodSpecApplyConfiguration) *ACMEChallengeSolverHTTP01IngressPodTemplateApplyConfiguration {
+	b.Spec = value
+	return b
+}
diff --git a/pkg/client/applyconfigurations/acme/v1/acmechallengesolverhttp01ingresstemplate.go b/pkg/client/applyconfigurations/acme/v1/acmechallengesolverhttp01ingresstemplate.go
new file mode 100644
index 00000000000..334b269e5f1
--- /dev/null
+++ b/pkg/client/applyconfigurations/acme/v1/acmechallengesolverhttp01ingresstemplate.go
@@ -0,0 +1,67 @@
+/*
+Copyright The cert-manager Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+// Code generated by applyconfiguration-gen. DO NOT EDIT.
+
+package v1
+
+// ACMEChallengeSolverHTTP01IngressTemplateApplyConfiguration represents a declarative configuration of the ACMEChallengeSolverHTTP01IngressTemplate type for use
+// with apply.
+type ACMEChallengeSolverHTTP01IngressTemplateApplyConfiguration struct {
+	*ACMEChallengeSolverHTTP01IngressObjectMetaApplyConfiguration `json:"metadata,omitempty"`
+}
+
+// ACMEChallengeSolverHTTP01IngressTemplateApplyConfiguration constructs a declarative configuration of the ACMEChallengeSolverHTTP01IngressTemplate type for use with
+// apply.
+func ACMEChallengeSolverHTTP01IngressTemplate() *ACMEChallengeSolverHTTP01IngressTemplateApplyConfiguration {
+	return &ACMEChallengeSolverHTTP01IngressTemplateApplyConfiguration{}
+}
+
+// WithAnnotations puts the entries into the Annotations field in the declarative configuration
+// and returns the receiver, so that objects can be build by chaining "With" function invocations.
+// If called multiple times, the entries provided by each call will be put on the Annotations field,
+// overwriting an existing map entries in Annotations field with the same key.
+func (b *ACMEChallengeSolverHTTP01IngressTemplateApplyConfiguration) WithAnnotations(entries map[string]string) *ACMEChallengeSolverHTTP01IngressTemplateApplyConfiguration {
+	b.ensureACMEChallengeSolverHTTP01IngressObjectMetaApplyConfigurationExists()
+	if b.ACMEChallengeSolverHTTP01IngressObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
+		b.ACMEChallengeSolverHTTP01IngressObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
+	}
+	for k, v := range entries {
+		b.ACMEChallengeSolverHTTP01IngressObjectMetaApplyConfiguration.Annotations[k] = v
+	}
+	return b
+}
+
+// WithLabels puts the entries into the Labels field in the declarative configuration
+// and returns the receiver, so that objects can be build by chaining "With" function invocations.
+// If called multiple times, the entries provided by each call will be put on the Labels field,
+// overwriting an existing map entries in Labels field with the same key.
+func (b *ACMEChallengeSolverHTTP01IngressTemplateApplyConfiguration) WithLabels(entries map[string]string) *ACMEChallengeSolverHTTP01IngressTemplateApplyConfiguration {
+	b.ensureACMEChallengeSolverHTTP01IngressObjectMetaApplyConfigurationExists()
+	if b.ACMEChallengeSolverHTTP01IngressObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
+		b.ACMEChallengeSolverHTTP01IngressObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
+	}
+	for k, v := range entries {
+		b.ACMEChallengeSolverHTTP01IngressObjectMetaApplyConfiguration.Labels[k] = v
+	}
+	return b
+}
+
+func (b *ACMEChallengeSolverHTTP01IngressTemplateApplyConfiguration) ensureACMEChallengeSolverHTTP01IngressObjectMetaApplyConfigurationExists() {
+	if b.ACMEChallengeSolverHTTP01IngressObjectMetaApplyConfiguration == nil {
+		b.ACMEChallengeSolverHTTP01IngressObjectMetaApplyConfiguration = &ACMEChallengeSolverHTTP01IngressObjectMetaApplyConfiguration{}
+	}
+}
diff --git a/pkg/client/applyconfigurations/acme/v1/acmeexternalaccountbinding.go b/pkg/client/applyconfigurations/acme/v1/acmeexternalaccountbinding.go
new file mode 100644
index 00000000000..1b7f6e82643
--- /dev/null
+++ b/pkg/client/applyconfigurations/acme/v1/acmeexternalaccountbinding.go
@@ -0,0 +1,62 @@
+/*
+Copyright The cert-manager Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+// Code generated by applyconfiguration-gen. DO NOT EDIT.
+
+package v1
+
+import (
+	acmev1 "github.com/cert-manager/cert-manager/pkg/apis/acme/v1"
+	metav1 "github.com/cert-manager/cert-manager/pkg/apis/meta/v1"
+)
+
+// ACMEExternalAccountBindingApplyConfiguration represents a declarative configuration of the ACMEExternalAccountBinding type for use
+// with apply.
+type ACMEExternalAccountBindingApplyConfiguration struct {
+	KeyID        *string                   `json:"keyID,omitempty"`
+	Key          *metav1.SecretKeySelector `json:"keySecretRef,omitempty"`
+	KeyAlgorithm *acmev1.HMACKeyAlgorithm  `json:"keyAlgorithm,omitempty"`
+}
+
+// ACMEExternalAccountBindingApplyConfiguration constructs a declarative configuration of the ACMEExternalAccountBinding type for use with
+// apply.
+func ACMEExternalAccountBinding() *ACMEExternalAccountBindingApplyConfiguration {
+	return &ACMEExternalAccountBindingApplyConfiguration{}
+}
+
+// WithKeyID sets the KeyID field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the KeyID field is set to the value of the last call.
+func (b *ACMEExternalAccountBindingApplyConfiguration) WithKeyID(value string) *ACMEExternalAccountBindingApplyConfiguration {
+	b.KeyID = &value
+	return b
+}
+
+// WithKey sets the Key field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Key field is set to the value of the last call.
+func (b *ACMEExternalAccountBindingApplyConfiguration) WithKey(value metav1.SecretKeySelector) *ACMEExternalAccountBindingApplyConfiguration {
+	b.Key = &value
+	return b
+}
+
+// WithKeyAlgorithm sets the KeyAlgorithm field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the KeyAlgorithm field is set to the value of the last call.
+func (b *ACMEExternalAccountBindingApplyConfiguration) WithKeyAlgorithm(value acmev1.HMACKeyAlgorithm) *ACMEExternalAccountBindingApplyConfiguration {
+	b.KeyAlgorithm = &value
+	return b
+}
diff --git a/pkg/client/applyconfigurations/acme/v1/acmeissuer.go b/pkg/client/applyconfigurations/acme/v1/acmeissuer.go
new file mode 100644
index 00000000000..ed4dcae3e58
--- /dev/null
+++ b/pkg/client/applyconfigurations/acme/v1/acmeissuer.go
@@ -0,0 +1,140 @@
+/*
+Copyright The cert-manager Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+// Code generated by applyconfiguration-gen. DO NOT EDIT.
+
+package v1
+
+import (
+	metav1 "github.com/cert-manager/cert-manager/pkg/apis/meta/v1"
+)
+
+// ACMEIssuerApplyConfiguration represents a declarative configuration of the ACMEIssuer type for use
+// with apply.
+type ACMEIssuerApplyConfiguration struct {
+	Email                       *string                                       `json:"email,omitempty"`
+	Server                      *string                                       `json:"server,omitempty"`
+	PreferredChain              *string                                       `json:"preferredChain,omitempty"`
+	CABundle                    []byte                                        `json:"caBundle,omitempty"`
+	SkipTLSVerify               *bool                                         `json:"skipTLSVerify,omitempty"`
+	ExternalAccountBinding      *ACMEExternalAccountBindingApplyConfiguration `json:"externalAccountBinding,omitempty"`
+	PrivateKey                  *metav1.SecretKeySelector                     `json:"privateKeySecretRef,omitempty"`
+	Solvers                     []ACMEChallengeSolverApplyConfiguration       `json:"solvers,omitempty"`
+	DisableAccountKeyGeneration *bool                                         `json:"disableAccountKeyGeneration,omitempty"`
+	EnableDurationFeature       *bool                                         `json:"enableDurationFeature,omitempty"`
+	Profile                     *string                                       `json:"profile,omitempty"`
+}
+
+// ACMEIssuerApplyConfiguration constructs a declarative configuration of the ACMEIssuer type for use with
+// apply.
+func ACMEIssuer() *ACMEIssuerApplyConfiguration {
+	return &ACMEIssuerApplyConfiguration{}
+}
+
+// WithEmail sets the Email field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Email field is set to the value of the last call.
+func (b *ACMEIssuerApplyConfiguration) WithEmail(value string) *ACMEIssuerApplyConfiguration {
+	b.Email = &value
+	return b
+}
+
+// WithServer sets the Server field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Server field is set to the value of the last call.
+func (b *ACMEIssuerApplyConfiguration) WithServer(value string) *ACMEIssuerApplyConfiguration {
+	b.Server = &value
+	return b
+}
+
+// WithPreferredChain sets the PreferredChain field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the PreferredChain field is set to the value of the last call.
+func (b *ACMEIssuerApplyConfiguration) WithPreferredChain(value string) *ACMEIssuerApplyConfiguration {
+	b.PreferredChain = &value
+	return b
+}
+
+// WithCABundle adds the given value to the CABundle field in the declarative configuration
+// and returns the receiver, so that objects can be build by chaining "With" function invocations.
+// If called multiple times, values provided by each call will be appended to the CABundle field.
+func (b *ACMEIssuerApplyConfiguration) WithCABundle(values ...byte) *ACMEIssuerApplyConfiguration {
+	for i := range values {
+		b.CABundle = append(b.CABundle, values[i])
+	}
+	return b
+}
+
+// WithSkipTLSVerify sets the SkipTLSVerify field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the SkipTLSVerify field is set to the value of the last call.
+func (b *ACMEIssuerApplyConfiguration) WithSkipTLSVerify(value bool) *ACMEIssuerApplyConfiguration {
+	b.SkipTLSVerify = &value
+	return b
+}
+
+// WithExternalAccountBinding sets the ExternalAccountBinding field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the ExternalAccountBinding field is set to the value of the last call.
+func (b *ACMEIssuerApplyConfiguration) WithExternalAccountBinding(value *ACMEExternalAccountBindingApplyConfiguration) *ACMEIssuerApplyConfiguration {
+	b.ExternalAccountBinding = value
+	return b
+}
+
+// WithPrivateKey sets the PrivateKey field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the PrivateKey field is set to the value of the last call.
+func (b *ACMEIssuerApplyConfiguration) WithPrivateKey(value metav1.SecretKeySelector) *ACMEIssuerApplyConfiguration {
+	b.PrivateKey = &value
+	return b
+}
+
+// WithSolvers adds the given value to the Solvers field in the declarative configuration
+// and returns the receiver, so that objects can be build by chaining "With" function invocations.
+// If called multiple times, values provided by each call will be appended to the Solvers field.
+func (b *ACMEIssuerApplyConfiguration) WithSolvers(values ...*ACMEChallengeSolverApplyConfiguration) *ACMEIssuerApplyConfiguration {
+	for i := range values {
+		if values[i] == nil {
+			panic("nil value passed to WithSolvers")
+		}
+		b.Solvers = append(b.Solvers, *values[i])
+	}
+	return b
+}
+
+// WithDisableAccountKeyGeneration sets the DisableAccountKeyGeneration field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the DisableAccountKeyGeneration field is set to the value of the last call.
+func (b *ACMEIssuerApplyConfiguration) WithDisableAccountKeyGeneration(value bool) *ACMEIssuerApplyConfiguration {
+	b.DisableAccountKeyGeneration = &value
+	return b
+}
+
+// WithEnableDurationFeature sets the EnableDurationFeature field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the EnableDurationFeature field is set to the value of the last call.
+func (b *ACMEIssuerApplyConfiguration) WithEnableDurationFeature(value bool) *ACMEIssuerApplyConfiguration {
+	b.EnableDurationFeature = &value
+	return b
+}
+
+// WithProfile sets the Profile field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Profile field is set to the value of the last call.
+func (b *ACMEIssuerApplyConfiguration) WithProfile(value string) *ACMEIssuerApplyConfiguration {
+	b.Profile = &value
+	return b
+}
diff --git a/pkg/client/applyconfigurations/acme/v1/acmeissuerdns01provideracmedns.go b/pkg/client/applyconfigurations/acme/v1/acmeissuerdns01provideracmedns.go
new file mode 100644
index 00000000000..ff7d98da739
--- /dev/null
+++ b/pkg/client/applyconfigurations/acme/v1/acmeissuerdns01provideracmedns.go
@@ -0,0 +1,52 @@
+/*
+Copyright The cert-manager Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+// Code generated by applyconfiguration-gen. DO NOT EDIT.
+
+package v1
+
+import (
+	metav1 "github.com/cert-manager/cert-manager/pkg/apis/meta/v1"
+)
+
+// ACMEIssuerDNS01ProviderAcmeDNSApplyConfiguration represents a declarative configuration of the ACMEIssuerDNS01ProviderAcmeDNS type for use
+// with apply.
+type ACMEIssuerDNS01ProviderAcmeDNSApplyConfiguration struct {
+	Host          *string                   `json:"host,omitempty"`
+	AccountSecret *metav1.SecretKeySelector `json:"accountSecretRef,omitempty"`
+}
+
+// ACMEIssuerDNS01ProviderAcmeDNSApplyConfiguration constructs a declarative configuration of the ACMEIssuerDNS01ProviderAcmeDNS type for use with
+// apply.
+func ACMEIssuerDNS01ProviderAcmeDNS() *ACMEIssuerDNS01ProviderAcmeDNSApplyConfiguration {
+	return &ACMEIssuerDNS01ProviderAcmeDNSApplyConfiguration{}
+}
+
+// WithHost sets the Host field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Host field is set to the value of the last call.
+func (b *ACMEIssuerDNS01ProviderAcmeDNSApplyConfiguration) WithHost(value string) *ACMEIssuerDNS01ProviderAcmeDNSApplyConfiguration {
+	b.Host = &value
+	return b
+}
+
+// WithAccountSecret sets the AccountSecret field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the AccountSecret field is set to the value of the last call.
+func (b *ACMEIssuerDNS01ProviderAcmeDNSApplyConfiguration) WithAccountSecret(value metav1.SecretKeySelector) *ACMEIssuerDNS01ProviderAcmeDNSApplyConfiguration {
+	b.AccountSecret = &value
+	return b
+}
diff --git a/pkg/client/applyconfigurations/acme/v1/acmeissuerdns01providerakamai.go b/pkg/client/applyconfigurations/acme/v1/acmeissuerdns01providerakamai.go
new file mode 100644
index 00000000000..358cb1e82b9
--- /dev/null
+++ b/pkg/client/applyconfigurations/acme/v1/acmeissuerdns01providerakamai.go
@@ -0,0 +1,70 @@
+/*
+Copyright The cert-manager Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+// Code generated by applyconfiguration-gen. DO NOT EDIT.
+
+package v1
+
+import (
+	metav1 "github.com/cert-manager/cert-manager/pkg/apis/meta/v1"
+)
+
+// ACMEIssuerDNS01ProviderAkamaiApplyConfiguration represents a declarative configuration of the ACMEIssuerDNS01ProviderAkamai type for use
+// with apply.
+type ACMEIssuerDNS01ProviderAkamaiApplyConfiguration struct {
+	ServiceConsumerDomain *string                   `json:"serviceConsumerDomain,omitempty"`
+	ClientToken           *metav1.SecretKeySelector `json:"clientTokenSecretRef,omitempty"`
+	ClientSecret          *metav1.SecretKeySelector `json:"clientSecretSecretRef,omitempty"`
+	AccessToken           *metav1.SecretKeySelector `json:"accessTokenSecretRef,omitempty"`
+}
+
+// ACMEIssuerDNS01ProviderAkamaiApplyConfiguration constructs a declarative configuration of the ACMEIssuerDNS01ProviderAkamai type for use with
+// apply.
+func ACMEIssuerDNS01ProviderAkamai() *ACMEIssuerDNS01ProviderAkamaiApplyConfiguration {
+	return &ACMEIssuerDNS01ProviderAkamaiApplyConfiguration{}
+}
+
+// WithServiceConsumerDomain sets the ServiceConsumerDomain field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the ServiceConsumerDomain field is set to the value of the last call.
+func (b *ACMEIssuerDNS01ProviderAkamaiApplyConfiguration) WithServiceConsumerDomain(value string) *ACMEIssuerDNS01ProviderAkamaiApplyConfiguration {
+	b.ServiceConsumerDomain = &value
+	return b
+}
+
+// WithClientToken sets the ClientToken field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the ClientToken field is set to the value of the last call.
+func (b *ACMEIssuerDNS01ProviderAkamaiApplyConfiguration) WithClientToken(value metav1.SecretKeySelector) *ACMEIssuerDNS01ProviderAkamaiApplyConfiguration {
+	b.ClientToken = &value
+	return b
+}
+
+// WithClientSecret sets the ClientSecret field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the ClientSecret field is set to the value of the last call.
+func (b *ACMEIssuerDNS01ProviderAkamaiApplyConfiguration) WithClientSecret(value metav1.SecretKeySelector) *ACMEIssuerDNS01ProviderAkamaiApplyConfiguration {
+	b.ClientSecret = &value
+	return b
+}
+
+// WithAccessToken sets the AccessToken field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the AccessToken field is set to the value of the last call.
+func (b *ACMEIssuerDNS01ProviderAkamaiApplyConfiguration) WithAccessToken(value metav1.SecretKeySelector) *ACMEIssuerDNS01ProviderAkamaiApplyConfiguration {
+	b.AccessToken = &value
+	return b
+}
diff --git a/pkg/client/applyconfigurations/acme/v1/acmeissuerdns01providerazuredns.go b/pkg/client/applyconfigurations/acme/v1/acmeissuerdns01providerazuredns.go
new file mode 100644
index 00000000000..4eeec0c4a72
--- /dev/null
+++ b/pkg/client/applyconfigurations/acme/v1/acmeissuerdns01providerazuredns.go
@@ -0,0 +1,107 @@
+/*
+Copyright The cert-manager Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+// Code generated by applyconfiguration-gen. DO NOT EDIT.
+
+package v1
+
+import (
+	acmev1 "github.com/cert-manager/cert-manager/pkg/apis/acme/v1"
+	metav1 "github.com/cert-manager/cert-manager/pkg/apis/meta/v1"
+)
+
+// ACMEIssuerDNS01ProviderAzureDNSApplyConfiguration represents a declarative configuration of the ACMEIssuerDNS01ProviderAzureDNS type for use
+// with apply.
+type ACMEIssuerDNS01ProviderAzureDNSApplyConfiguration struct {
+	ClientID          *string                                 `json:"clientID,omitempty"`
+	ClientSecret      *metav1.SecretKeySelector               `json:"clientSecretSecretRef,omitempty"`
+	SubscriptionID    *string                                 `json:"subscriptionID,omitempty"`
+	TenantID          *string                                 `json:"tenantID,omitempty"`
+	ResourceGroupName *string                                 `json:"resourceGroupName,omitempty"`
+	HostedZoneName    *string                                 `json:"hostedZoneName,omitempty"`
+	Environment       *acmev1.AzureDNSEnvironment             `json:"environment,omitempty"`
+	ManagedIdentity   *AzureManagedIdentityApplyConfiguration `json:"managedIdentity,omitempty"`
+}
+
+// ACMEIssuerDNS01ProviderAzureDNSApplyConfiguration constructs a declarative configuration of the ACMEIssuerDNS01ProviderAzureDNS type for use with
+// apply.
+func ACMEIssuerDNS01ProviderAzureDNS() *ACMEIssuerDNS01ProviderAzureDNSApplyConfiguration {
+	return &ACMEIssuerDNS01ProviderAzureDNSApplyConfiguration{}
+}
+
+// WithClientID sets the ClientID field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the ClientID field is set to the value of the last call.
+func (b *ACMEIssuerDNS01ProviderAzureDNSApplyConfiguration) WithClientID(value string) *ACMEIssuerDNS01ProviderAzureDNSApplyConfiguration {
+	b.ClientID = &value
+	return b
+}
+
+// WithClientSecret sets the ClientSecret field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the ClientSecret field is set to the value of the last call.
+func (b *ACMEIssuerDNS01ProviderAzureDNSApplyConfiguration) WithClientSecret(value metav1.SecretKeySelector) *ACMEIssuerDNS01ProviderAzureDNSApplyConfiguration {
+	b.ClientSecret = &value
+	return b
+}
+
+// WithSubscriptionID sets the SubscriptionID field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the SubscriptionID field is set to the value of the last call.
+func (b *ACMEIssuerDNS01ProviderAzureDNSApplyConfiguration) WithSubscriptionID(value string) *ACMEIssuerDNS01ProviderAzureDNSApplyConfiguration {
+	b.SubscriptionID = &value
+	return b
+}
+
+// WithTenantID sets the TenantID field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the TenantID field is set to the value of the last call.
+func (b *ACMEIssuerDNS01ProviderAzureDNSApplyConfiguration) WithTenantID(value string) *ACMEIssuerDNS01ProviderAzureDNSApplyConfiguration {
+	b.TenantID = &value
+	return b
+}
+
+// WithResourceGroupName sets the ResourceGroupName field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the ResourceGroupName field is set to the value of the last call.
+func (b *ACMEIssuerDNS01ProviderAzureDNSApplyConfiguration) WithResourceGroupName(value string) *ACMEIssuerDNS01ProviderAzureDNSApplyConfiguration {
+	b.ResourceGroupName = &value
+	return b
+}
+
+// WithHostedZoneName sets the HostedZoneName field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the HostedZoneName field is set to the value of the last call.
+func (b *ACMEIssuerDNS01ProviderAzureDNSApplyConfiguration) WithHostedZoneName(value string) *ACMEIssuerDNS01ProviderAzureDNSApplyConfiguration {
+	b.HostedZoneName = &value
+	return b
+}
+
+// WithEnvironment sets the Environment field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Environment field is set to the value of the last call.
+func (b *ACMEIssuerDNS01ProviderAzureDNSApplyConfiguration) WithEnvironment(value acmev1.AzureDNSEnvironment) *ACMEIssuerDNS01ProviderAzureDNSApplyConfiguration {
+	b.Environment = &value
+	return b
+}
+
+// WithManagedIdentity sets the ManagedIdentity field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the ManagedIdentity field is set to the value of the last call.
+func (b *ACMEIssuerDNS01ProviderAzureDNSApplyConfiguration) WithManagedIdentity(value *AzureManagedIdentityApplyConfiguration) *ACMEIssuerDNS01ProviderAzureDNSApplyConfiguration {
+	b.ManagedIdentity = value
+	return b
+}
diff --git a/pkg/client/applyconfigurations/acme/v1/acmeissuerdns01providerclouddns.go b/pkg/client/applyconfigurations/acme/v1/acmeissuerdns01providerclouddns.go
new file mode 100644
index 00000000000..8eaf3a069d0
--- /dev/null
+++ b/pkg/client/applyconfigurations/acme/v1/acmeissuerdns01providerclouddns.go
@@ -0,0 +1,61 @@
+/*
+Copyright The cert-manager Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+// Code generated by applyconfiguration-gen. DO NOT EDIT.
+
+package v1
+
+import (
+	metav1 "github.com/cert-manager/cert-manager/pkg/apis/meta/v1"
+)
+
+// ACMEIssuerDNS01ProviderCloudDNSApplyConfiguration represents a declarative configuration of the ACMEIssuerDNS01ProviderCloudDNS type for use
+// with apply.
+type ACMEIssuerDNS01ProviderCloudDNSApplyConfiguration struct {
+	ServiceAccount *metav1.SecretKeySelector `json:"serviceAccountSecretRef,omitempty"`
+	Project        *string                   `json:"project,omitempty"`
+	HostedZoneName *string                   `json:"hostedZoneName,omitempty"`
+}
+
+// ACMEIssuerDNS01ProviderCloudDNSApplyConfiguration constructs a declarative configuration of the ACMEIssuerDNS01ProviderCloudDNS type for use with
+// apply.
+func ACMEIssuerDNS01ProviderCloudDNS() *ACMEIssuerDNS01ProviderCloudDNSApplyConfiguration {
+	return &ACMEIssuerDNS01ProviderCloudDNSApplyConfiguration{}
+}
+
+// WithServiceAccount sets the ServiceAccount field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the ServiceAccount field is set to the value of the last call.
+func (b *ACMEIssuerDNS01ProviderCloudDNSApplyConfiguration) WithServiceAccount(value metav1.SecretKeySelector) *ACMEIssuerDNS01ProviderCloudDNSApplyConfiguration {
+	b.ServiceAccount = &value
+	return b
+}
+
+// WithProject sets the Project field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Project field is set to the value of the last call.
+func (b *ACMEIssuerDNS01ProviderCloudDNSApplyConfiguration) WithProject(value string) *ACMEIssuerDNS01ProviderCloudDNSApplyConfiguration {
+	b.Project = &value
+	return b
+}
+
+// WithHostedZoneName sets the HostedZoneName field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the HostedZoneName field is set to the value of the last call.
+func (b *ACMEIssuerDNS01ProviderCloudDNSApplyConfiguration) WithHostedZoneName(value string) *ACMEIssuerDNS01ProviderCloudDNSApplyConfiguration {
+	b.HostedZoneName = &value
+	return b
+}
diff --git a/pkg/client/applyconfigurations/acme/v1/acmeissuerdns01providercloudflare.go b/pkg/client/applyconfigurations/acme/v1/acmeissuerdns01providercloudflare.go
new file mode 100644
index 00000000000..cdceb1daafa
--- /dev/null
+++ b/pkg/client/applyconfigurations/acme/v1/acmeissuerdns01providercloudflare.go
@@ -0,0 +1,61 @@
+/*
+Copyright The cert-manager Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+// Code generated by applyconfiguration-gen. DO NOT EDIT.
+
+package v1
+
+import (
+	metav1 "github.com/cert-manager/cert-manager/pkg/apis/meta/v1"
+)
+
+// ACMEIssuerDNS01ProviderCloudflareApplyConfiguration represents a declarative configuration of the ACMEIssuerDNS01ProviderCloudflare type for use
+// with apply.
+type ACMEIssuerDNS01ProviderCloudflareApplyConfiguration struct {
+	Email    *string                   `json:"email,omitempty"`
+	APIKey   *metav1.SecretKeySelector `json:"apiKeySecretRef,omitempty"`
+	APIToken *metav1.SecretKeySelector `json:"apiTokenSecretRef,omitempty"`
+}
+
+// ACMEIssuerDNS01ProviderCloudflareApplyConfiguration constructs a declarative configuration of the ACMEIssuerDNS01ProviderCloudflare type for use with
+// apply.
+func ACMEIssuerDNS01ProviderCloudflare() *ACMEIssuerDNS01ProviderCloudflareApplyConfiguration {
+	return &ACMEIssuerDNS01ProviderCloudflareApplyConfiguration{}
+}
+
+// WithEmail sets the Email field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Email field is set to the value of the last call.
+func (b *ACMEIssuerDNS01ProviderCloudflareApplyConfiguration) WithEmail(value string) *ACMEIssuerDNS01ProviderCloudflareApplyConfiguration {
+	b.Email = &value
+	return b
+}
+
+// WithAPIKey sets the APIKey field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the APIKey field is set to the value of the last call.
+func (b *ACMEIssuerDNS01ProviderCloudflareApplyConfiguration) WithAPIKey(value metav1.SecretKeySelector) *ACMEIssuerDNS01ProviderCloudflareApplyConfiguration {
+	b.APIKey = &value
+	return b
+}
+
+// WithAPIToken sets the APIToken field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the APIToken field is set to the value of the last call.
+func (b *ACMEIssuerDNS01ProviderCloudflareApplyConfiguration) WithAPIToken(value metav1.SecretKeySelector) *ACMEIssuerDNS01ProviderCloudflareApplyConfiguration {
+	b.APIToken = &value
+	return b
+}
diff --git a/pkg/client/applyconfigurations/acme/v1/acmeissuerdns01providerdigitalocean.go b/pkg/client/applyconfigurations/acme/v1/acmeissuerdns01providerdigitalocean.go
new file mode 100644
index 00000000000..9b45070850e
--- /dev/null
+++ b/pkg/client/applyconfigurations/acme/v1/acmeissuerdns01providerdigitalocean.go
@@ -0,0 +1,43 @@
+/*
+Copyright The cert-manager Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+// Code generated by applyconfiguration-gen. DO NOT EDIT.
+
+package v1
+
+import (
+	metav1 "github.com/cert-manager/cert-manager/pkg/apis/meta/v1"
+)
+
+// ACMEIssuerDNS01ProviderDigitalOceanApplyConfiguration represents a declarative configuration of the ACMEIssuerDNS01ProviderDigitalOcean type for use
+// with apply.
+type ACMEIssuerDNS01ProviderDigitalOceanApplyConfiguration struct {
+	Token *metav1.SecretKeySelector `json:"tokenSecretRef,omitempty"`
+}
+
+// ACMEIssuerDNS01ProviderDigitalOceanApplyConfiguration constructs a declarative configuration of the ACMEIssuerDNS01ProviderDigitalOcean type for use with
+// apply.
+func ACMEIssuerDNS01ProviderDigitalOcean() *ACMEIssuerDNS01ProviderDigitalOceanApplyConfiguration {
+	return &ACMEIssuerDNS01ProviderDigitalOceanApplyConfiguration{}
+}
+
+// WithToken sets the Token field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Token field is set to the value of the last call.
+func (b *ACMEIssuerDNS01ProviderDigitalOceanApplyConfiguration) WithToken(value metav1.SecretKeySelector) *ACMEIssuerDNS01ProviderDigitalOceanApplyConfiguration {
+	b.Token = &value
+	return b
+}
diff --git a/pkg/client/applyconfigurations/acme/v1/acmeissuerdns01providerrfc2136.go b/pkg/client/applyconfigurations/acme/v1/acmeissuerdns01providerrfc2136.go
new file mode 100644
index 00000000000..28a308f77fa
--- /dev/null
+++ b/pkg/client/applyconfigurations/acme/v1/acmeissuerdns01providerrfc2136.go
@@ -0,0 +1,70 @@
+/*
+Copyright The cert-manager Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+// Code generated by applyconfiguration-gen. DO NOT EDIT.
+
+package v1
+
+import (
+	metav1 "github.com/cert-manager/cert-manager/pkg/apis/meta/v1"
+)
+
+// ACMEIssuerDNS01ProviderRFC2136ApplyConfiguration represents a declarative configuration of the ACMEIssuerDNS01ProviderRFC2136 type for use
+// with apply.
+type ACMEIssuerDNS01ProviderRFC2136ApplyConfiguration struct {
+	Nameserver    *string                   `json:"nameserver,omitempty"`
+	TSIGSecret    *metav1.SecretKeySelector `json:"tsigSecretSecretRef,omitempty"`
+	TSIGKeyName   *string                   `json:"tsigKeyName,omitempty"`
+	TSIGAlgorithm *string                   `json:"tsigAlgorithm,omitempty"`
+}
+
+// ACMEIssuerDNS01ProviderRFC2136ApplyConfiguration constructs a declarative configuration of the ACMEIssuerDNS01ProviderRFC2136 type for use with
+// apply.
+func ACMEIssuerDNS01ProviderRFC2136() *ACMEIssuerDNS01ProviderRFC2136ApplyConfiguration {
+	return &ACMEIssuerDNS01ProviderRFC2136ApplyConfiguration{}
+}
+
+// WithNameserver sets the Nameserver field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Nameserver field is set to the value of the last call.
+func (b *ACMEIssuerDNS01ProviderRFC2136ApplyConfiguration) WithNameserver(value string) *ACMEIssuerDNS01ProviderRFC2136ApplyConfiguration {
+	b.Nameserver = &value
+	return b
+}
+
+// WithTSIGSecret sets the TSIGSecret field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the TSIGSecret field is set to the value of the last call.
+func (b *ACMEIssuerDNS01ProviderRFC2136ApplyConfiguration) WithTSIGSecret(value metav1.SecretKeySelector) *ACMEIssuerDNS01ProviderRFC2136ApplyConfiguration {
+	b.TSIGSecret = &value
+	return b
+}
+
+// WithTSIGKeyName sets the TSIGKeyName field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the TSIGKeyName field is set to the value of the last call.
+func (b *ACMEIssuerDNS01ProviderRFC2136ApplyConfiguration) WithTSIGKeyName(value string) *ACMEIssuerDNS01ProviderRFC2136ApplyConfiguration {
+	b.TSIGKeyName = &value
+	return b
+}
+
+// WithTSIGAlgorithm sets the TSIGAlgorithm field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the TSIGAlgorithm field is set to the value of the last call.
+func (b *ACMEIssuerDNS01ProviderRFC2136ApplyConfiguration) WithTSIGAlgorithm(value string) *ACMEIssuerDNS01ProviderRFC2136ApplyConfiguration {
+	b.TSIGAlgorithm = &value
+	return b
+}
diff --git a/pkg/client/applyconfigurations/acme/v1/acmeissuerdns01providerroute53.go b/pkg/client/applyconfigurations/acme/v1/acmeissuerdns01providerroute53.go
new file mode 100644
index 00000000000..a182ef83773
--- /dev/null
+++ b/pkg/client/applyconfigurations/acme/v1/acmeissuerdns01providerroute53.go
@@ -0,0 +1,97 @@
+/*
+Copyright The cert-manager Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+// Code generated by applyconfiguration-gen. DO NOT EDIT.
+
+package v1
+
+import (
+	metav1 "github.com/cert-manager/cert-manager/pkg/apis/meta/v1"
+)
+
+// ACMEIssuerDNS01ProviderRoute53ApplyConfiguration represents a declarative configuration of the ACMEIssuerDNS01ProviderRoute53 type for use
+// with apply.
+type ACMEIssuerDNS01ProviderRoute53ApplyConfiguration struct {
+	Auth              *Route53AuthApplyConfiguration `json:"auth,omitempty"`
+	AccessKeyID       *string                        `json:"accessKeyID,omitempty"`
+	SecretAccessKeyID *metav1.SecretKeySelector      `json:"accessKeyIDSecretRef,omitempty"`
+	SecretAccessKey   *metav1.SecretKeySelector      `json:"secretAccessKeySecretRef,omitempty"`
+	Role              *string                        `json:"role,omitempty"`
+	HostedZoneID      *string                        `json:"hostedZoneID,omitempty"`
+	Region            *string                        `json:"region,omitempty"`
+}
+
+// ACMEIssuerDNS01ProviderRoute53ApplyConfiguration constructs a declarative configuration of the ACMEIssuerDNS01ProviderRoute53 type for use with
+// apply.
+func ACMEIssuerDNS01ProviderRoute53() *ACMEIssuerDNS01ProviderRoute53ApplyConfiguration {
+	return &ACMEIssuerDNS01ProviderRoute53ApplyConfiguration{}
+}
+
+// WithAuth sets the Auth field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Auth field is set to the value of the last call.
+func (b *ACMEIssuerDNS01ProviderRoute53ApplyConfiguration) WithAuth(value *Route53AuthApplyConfiguration) *ACMEIssuerDNS01ProviderRoute53ApplyConfiguration {
+	b.Auth = value
+	return b
+}
+
+// WithAccessKeyID sets the AccessKeyID field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the AccessKeyID field is set to the value of the last call.
+func (b *ACMEIssuerDNS01ProviderRoute53ApplyConfiguration) WithAccessKeyID(value string) *ACMEIssuerDNS01ProviderRoute53ApplyConfiguration {
+	b.AccessKeyID = &value
+	return b
+}
+
+// WithSecretAccessKeyID sets the SecretAccessKeyID field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the SecretAccessKeyID field is set to the value of the last call.
+func (b *ACMEIssuerDNS01ProviderRoute53ApplyConfiguration) WithSecretAccessKeyID(value metav1.SecretKeySelector) *ACMEIssuerDNS01ProviderRoute53ApplyConfiguration {
+	b.SecretAccessKeyID = &value
+	return b
+}
+
+// WithSecretAccessKey sets the SecretAccessKey field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the SecretAccessKey field is set to the value of the last call.
+func (b *ACMEIssuerDNS01ProviderRoute53ApplyConfiguration) WithSecretAccessKey(value metav1.SecretKeySelector) *ACMEIssuerDNS01ProviderRoute53ApplyConfiguration {
+	b.SecretAccessKey = &value
+	return b
+}
+
+// WithRole sets the Role field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Role field is set to the value of the last call.
+func (b *ACMEIssuerDNS01ProviderRoute53ApplyConfiguration) WithRole(value string) *ACMEIssuerDNS01ProviderRoute53ApplyConfiguration {
+	b.Role = &value
+	return b
+}
+
+// WithHostedZoneID sets the HostedZoneID field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the HostedZoneID field is set to the value of the last call.
+func (b *ACMEIssuerDNS01ProviderRoute53ApplyConfiguration) WithHostedZoneID(value string) *ACMEIssuerDNS01ProviderRoute53ApplyConfiguration {
+	b.HostedZoneID = &value
+	return b
+}
+
+// WithRegion sets the Region field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Region field is set to the value of the last call.
+func (b *ACMEIssuerDNS01ProviderRoute53ApplyConfiguration) WithRegion(value string) *ACMEIssuerDNS01ProviderRoute53ApplyConfiguration {
+	b.Region = &value
+	return b
+}
diff --git a/pkg/client/applyconfigurations/acme/v1/acmeissuerdns01providerwebhook.go b/pkg/client/applyconfigurations/acme/v1/acmeissuerdns01providerwebhook.go
new file mode 100644
index 00000000000..56a85531321
--- /dev/null
+++ b/pkg/client/applyconfigurations/acme/v1/acmeissuerdns01providerwebhook.go
@@ -0,0 +1,61 @@
+/*
+Copyright The cert-manager Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+// Code generated by applyconfiguration-gen. DO NOT EDIT.
+
+package v1
+
+import (
+	apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
+)
+
+// ACMEIssuerDNS01ProviderWebhookApplyConfiguration represents a declarative configuration of the ACMEIssuerDNS01ProviderWebhook type for use
+// with apply.
+type ACMEIssuerDNS01ProviderWebhookApplyConfiguration struct {
+	GroupName  *string               `json:"groupName,omitempty"`
+	SolverName *string               `json:"solverName,omitempty"`
+	Config     *apiextensionsv1.JSON `json:"config,omitempty"`
+}
+
+// ACMEIssuerDNS01ProviderWebhookApplyConfiguration constructs a declarative configuration of the ACMEIssuerDNS01ProviderWebhook type for use with
+// apply.
+func ACMEIssuerDNS01ProviderWebhook() *ACMEIssuerDNS01ProviderWebhookApplyConfiguration {
+	return &ACMEIssuerDNS01ProviderWebhookApplyConfiguration{}
+}
+
+// WithGroupName sets the GroupName field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the GroupName field is set to the value of the last call.
+func (b *ACMEIssuerDNS01ProviderWebhookApplyConfiguration) WithGroupName(value string) *ACMEIssuerDNS01ProviderWebhookApplyConfiguration {
+	b.GroupName = &value
+	return b
+}
+
+// WithSolverName sets the SolverName field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the SolverName field is set to the value of the last call.
+func (b *ACMEIssuerDNS01ProviderWebhookApplyConfiguration) WithSolverName(value string) *ACMEIssuerDNS01ProviderWebhookApplyConfiguration {
+	b.SolverName = &value
+	return b
+}
+
+// WithConfig sets the Config field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Config field is set to the value of the last call.
+func (b *ACMEIssuerDNS01ProviderWebhookApplyConfiguration) WithConfig(value apiextensionsv1.JSON) *ACMEIssuerDNS01ProviderWebhookApplyConfiguration {
+	b.Config = &value
+	return b
+}
diff --git a/pkg/client/applyconfigurations/acme/v1/acmeissuerstatus.go b/pkg/client/applyconfigurations/acme/v1/acmeissuerstatus.go
new file mode 100644
index 00000000000..832739f38ee
--- /dev/null
+++ b/pkg/client/applyconfigurations/acme/v1/acmeissuerstatus.go
@@ -0,0 +1,57 @@
+/*
+Copyright The cert-manager Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+// Code generated by applyconfiguration-gen. DO NOT EDIT.
+
+package v1
+
+// ACMEIssuerStatusApplyConfiguration represents a declarative configuration of the ACMEIssuerStatus type for use
+// with apply.
+type ACMEIssuerStatusApplyConfiguration struct {
+	URI                 *string `json:"uri,omitempty"`
+	LastRegisteredEmail *string `json:"lastRegisteredEmail,omitempty"`
+	LastPrivateKeyHash  *string `json:"lastPrivateKeyHash,omitempty"`
+}
+
+// ACMEIssuerStatusApplyConfiguration constructs a declarative configuration of the ACMEIssuerStatus type for use with
+// apply.
+func ACMEIssuerStatus() *ACMEIssuerStatusApplyConfiguration {
+	return &ACMEIssuerStatusApplyConfiguration{}
+}
+
+// WithURI sets the URI field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the URI field is set to the value of the last call.
+func (b *ACMEIssuerStatusApplyConfiguration) WithURI(value string) *ACMEIssuerStatusApplyConfiguration {
+	b.URI = &value
+	return b
+}
+
+// WithLastRegisteredEmail sets the LastRegisteredEmail field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the LastRegisteredEmail field is set to the value of the last call.
+func (b *ACMEIssuerStatusApplyConfiguration) WithLastRegisteredEmail(value string) *ACMEIssuerStatusApplyConfiguration {
+	b.LastRegisteredEmail = &value
+	return b
+}
+
+// WithLastPrivateKeyHash sets the LastPrivateKeyHash field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the LastPrivateKeyHash field is set to the value of the last call.
+func (b *ACMEIssuerStatusApplyConfiguration) WithLastPrivateKeyHash(value string) *ACMEIssuerStatusApplyConfiguration {
+	b.LastPrivateKeyHash = &value
+	return b
+}
diff --git a/pkg/client/applyconfigurations/acme/v1/azuremanagedidentity.go b/pkg/client/applyconfigurations/acme/v1/azuremanagedidentity.go
new file mode 100644
index 00000000000..155d3292ef7
--- /dev/null
+++ b/pkg/client/applyconfigurations/acme/v1/azuremanagedidentity.go
@@ -0,0 +1,57 @@
+/*
+Copyright The cert-manager Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+// Code generated by applyconfiguration-gen. DO NOT EDIT.
+
+package v1
+
+// AzureManagedIdentityApplyConfiguration represents a declarative configuration of the AzureManagedIdentity type for use
+// with apply.
+type AzureManagedIdentityApplyConfiguration struct {
+	ClientID   *string `json:"clientID,omitempty"`
+	ResourceID *string `json:"resourceID,omitempty"`
+	TenantID   *string `json:"tenantID,omitempty"`
+}
+
+// AzureManagedIdentityApplyConfiguration constructs a declarative configuration of the AzureManagedIdentity type for use with
+// apply.
+func AzureManagedIdentity() *AzureManagedIdentityApplyConfiguration {
+	return &AzureManagedIdentityApplyConfiguration{}
+}
+
+// WithClientID sets the ClientID field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the ClientID field is set to the value of the last call.
+func (b *AzureManagedIdentityApplyConfiguration) WithClientID(value string) *AzureManagedIdentityApplyConfiguration {
+	b.ClientID = &value
+	return b
+}
+
+// WithResourceID sets the ResourceID field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the ResourceID field is set to the value of the last call.
+func (b *AzureManagedIdentityApplyConfiguration) WithResourceID(value string) *AzureManagedIdentityApplyConfiguration {
+	b.ResourceID = &value
+	return b
+}
+
+// WithTenantID sets the TenantID field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the TenantID field is set to the value of the last call.
+func (b *AzureManagedIdentityApplyConfiguration) WithTenantID(value string) *AzureManagedIdentityApplyConfiguration {
+	b.TenantID = &value
+	return b
+}
diff --git a/pkg/client/applyconfigurations/acme/v1/certificatednsnameselector.go b/pkg/client/applyconfigurations/acme/v1/certificatednsnameselector.go
new file mode 100644
index 00000000000..82b194bceac
--- /dev/null
+++ b/pkg/client/applyconfigurations/acme/v1/certificatednsnameselector.go
@@ -0,0 +1,67 @@
+/*
+Copyright The cert-manager Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+// Code generated by applyconfiguration-gen. DO NOT EDIT.
+
+package v1
+
+// CertificateDNSNameSelectorApplyConfiguration represents a declarative configuration of the CertificateDNSNameSelector type for use
+// with apply.
+type CertificateDNSNameSelectorApplyConfiguration struct {
+	MatchLabels map[string]string `json:"matchLabels,omitempty"`
+	DNSNames    []string          `json:"dnsNames,omitempty"`
+	DNSZones    []string          `json:"dnsZones,omitempty"`
+}
+
+// CertificateDNSNameSelectorApplyConfiguration constructs a declarative configuration of the CertificateDNSNameSelector type for use with
+// apply.
+func CertificateDNSNameSelector() *CertificateDNSNameSelectorApplyConfiguration {
+	return &CertificateDNSNameSelectorApplyConfiguration{}
+}
+
+// WithMatchLabels puts the entries into the MatchLabels field in the declarative configuration
+// and returns the receiver, so that objects can be build by chaining "With" function invocations.
+// If called multiple times, the entries provided by each call will be put on the MatchLabels field,
+// overwriting an existing map entries in MatchLabels field with the same key.
+func (b *CertificateDNSNameSelectorApplyConfiguration) WithMatchLabels(entries map[string]string) *CertificateDNSNameSelectorApplyConfiguration {
+	if b.MatchLabels == nil && len(entries) > 0 {
+		b.MatchLabels = make(map[string]string, len(entries))
+	}
+	for k, v := range entries {
+		b.MatchLabels[k] = v
+	}
+	return b
+}
+
+// WithDNSNames adds the given value to the DNSNames field in the declarative configuration
+// and returns the receiver, so that objects can be build by chaining "With" function invocations.
+// If called multiple times, values provided by each call will be appended to the DNSNames field.
+func (b *CertificateDNSNameSelectorApplyConfiguration) WithDNSNames(values ...string) *CertificateDNSNameSelectorApplyConfiguration {
+	for i := range values {
+		b.DNSNames = append(b.DNSNames, values[i])
+	}
+	return b
+}
+
+// WithDNSZones adds the given value to the DNSZones field in the declarative configuration
+// and returns the receiver, so that objects can be build by chaining "With" function invocations.
+// If called multiple times, values provided by each call will be appended to the DNSZones field.
+func (b *CertificateDNSNameSelectorApplyConfiguration) WithDNSZones(values ...string) *CertificateDNSNameSelectorApplyConfiguration {
+	for i := range values {
+		b.DNSZones = append(b.DNSZones, values[i])
+	}
+	return b
+}
diff --git a/pkg/client/applyconfigurations/acme/v1/challenge.go b/pkg/client/applyconfigurations/acme/v1/challenge.go
new file mode 100644
index 00000000000..c4087db8b1b
--- /dev/null
+++ b/pkg/client/applyconfigurations/acme/v1/challenge.go
@@ -0,0 +1,225 @@
+/*
+Copyright The cert-manager Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+// Code generated by applyconfiguration-gen. DO NOT EDIT.
+
+package v1
+
+import (
+	apismetav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+	types "k8s.io/apimachinery/pkg/types"
+	metav1 "k8s.io/client-go/applyconfigurations/meta/v1"
+)
+
+// ChallengeApplyConfiguration represents a declarative configuration of the Challenge type for use
+// with apply.
+type ChallengeApplyConfiguration struct {
+	metav1.TypeMetaApplyConfiguration    `json:",inline"`
+	*metav1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
+	Spec                                 *ChallengeSpecApplyConfiguration   `json:"spec,omitempty"`
+	Status                               *ChallengeStatusApplyConfiguration `json:"status,omitempty"`
+}
+
+// Challenge constructs a declarative configuration of the Challenge type for use with
+// apply.
+func Challenge(name, namespace string) *ChallengeApplyConfiguration {
+	b := &ChallengeApplyConfiguration{}
+	b.WithName(name)
+	b.WithNamespace(namespace)
+	b.WithKind("Challenge")
+	b.WithAPIVersion("acme.cert-manager.io/v1")
+	return b
+}
+
+// WithKind sets the Kind field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Kind field is set to the value of the last call.
+func (b *ChallengeApplyConfiguration) WithKind(value string) *ChallengeApplyConfiguration {
+	b.TypeMetaApplyConfiguration.Kind = &value
+	return b
+}
+
+// WithAPIVersion sets the APIVersion field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the APIVersion field is set to the value of the last call.
+func (b *ChallengeApplyConfiguration) WithAPIVersion(value string) *ChallengeApplyConfiguration {
+	b.TypeMetaApplyConfiguration.APIVersion = &value
+	return b
+}
+
+// WithName sets the Name field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Name field is set to the value of the last call.
+func (b *ChallengeApplyConfiguration) WithName(value string) *ChallengeApplyConfiguration {
+	b.ensureObjectMetaApplyConfigurationExists()
+	b.ObjectMetaApplyConfiguration.Name = &value
+	return b
+}
+
+// WithGenerateName sets the GenerateName field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the GenerateName field is set to the value of the last call.
+func (b *ChallengeApplyConfiguration) WithGenerateName(value string) *ChallengeApplyConfiguration {
+	b.ensureObjectMetaApplyConfigurationExists()
+	b.ObjectMetaApplyConfiguration.GenerateName = &value
+	return b
+}
+
+// WithNamespace sets the Namespace field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Namespace field is set to the value of the last call.
+func (b *ChallengeApplyConfiguration) WithNamespace(value string) *ChallengeApplyConfiguration {
+	b.ensureObjectMetaApplyConfigurationExists()
+	b.ObjectMetaApplyConfiguration.Namespace = &value
+	return b
+}
+
+// WithUID sets the UID field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the UID field is set to the value of the last call.
+func (b *ChallengeApplyConfiguration) WithUID(value types.UID) *ChallengeApplyConfiguration {
+	b.ensureObjectMetaApplyConfigurationExists()
+	b.ObjectMetaApplyConfiguration.UID = &value
+	return b
+}
+
+// WithResourceVersion sets the ResourceVersion field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the ResourceVersion field is set to the value of the last call.
+func (b *ChallengeApplyConfiguration) WithResourceVersion(value string) *ChallengeApplyConfiguration {
+	b.ensureObjectMetaApplyConfigurationExists()
+	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
+	return b
+}
+
+// WithGeneration sets the Generation field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Generation field is set to the value of the last call.
+func (b *ChallengeApplyConfiguration) WithGeneration(value int64) *ChallengeApplyConfiguration {
+	b.ensureObjectMetaApplyConfigurationExists()
+	b.ObjectMetaApplyConfiguration.Generation = &value
+	return b
+}
+
+// WithCreationTimestamp sets the CreationTimestamp field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the CreationTimestamp field is set to the value of the last call.
+func (b *ChallengeApplyConfiguration) WithCreationTimestamp(value apismetav1.Time) *ChallengeApplyConfiguration {
+	b.ensureObjectMetaApplyConfigurationExists()
+	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
+	return b
+}
+
+// WithDeletionTimestamp sets the DeletionTimestamp field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the DeletionTimestamp field is set to the value of the last call.
+func (b *ChallengeApplyConfiguration) WithDeletionTimestamp(value apismetav1.Time) *ChallengeApplyConfiguration {
+	b.ensureObjectMetaApplyConfigurationExists()
+	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
+	return b
+}
+
+// WithDeletionGracePeriodSeconds sets the DeletionGracePeriodSeconds field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
+func (b *ChallengeApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *ChallengeApplyConfiguration {
+	b.ensureObjectMetaApplyConfigurationExists()
+	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
+	return b
+}
+
+// WithLabels puts the entries into the Labels field in the declarative configuration
+// and returns the receiver, so that objects can be build by chaining "With" function invocations.
+// If called multiple times, the entries provided by each call will be put on the Labels field,
+// overwriting an existing map entries in Labels field with the same key.
+func (b *ChallengeApplyConfiguration) WithLabels(entries map[string]string) *ChallengeApplyConfiguration {
+	b.ensureObjectMetaApplyConfigurationExists()
+	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
+		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
+	}
+	for k, v := range entries {
+		b.ObjectMetaApplyConfiguration.Labels[k] = v
+	}
+	return b
+}
+
+// WithAnnotations puts the entries into the Annotations field in the declarative configuration
+// and returns the receiver, so that objects can be build by chaining "With" function invocations.
+// If called multiple times, the entries provided by each call will be put on the Annotations field,
+// overwriting an existing map entries in Annotations field with the same key.
+func (b *ChallengeApplyConfiguration) WithAnnotations(entries map[string]string) *ChallengeApplyConfiguration {
+	b.ensureObjectMetaApplyConfigurationExists()
+	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
+		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
+	}
+	for k, v := range entries {
+		b.ObjectMetaApplyConfiguration.Annotations[k] = v
+	}
+	return b
+}
+
+// WithOwnerReferences adds the given value to the OwnerReferences field in the declarative configuration
+// and returns the receiver, so that objects can be build by chaining "With" function invocations.
+// If called multiple times, values provided by each call will be appended to the OwnerReferences field.
+func (b *ChallengeApplyConfiguration) WithOwnerReferences(values ...*metav1.OwnerReferenceApplyConfiguration) *ChallengeApplyConfiguration {
+	b.ensureObjectMetaApplyConfigurationExists()
+	for i := range values {
+		if values[i] == nil {
+			panic("nil value passed to WithOwnerReferences")
+		}
+		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
+	}
+	return b
+}
+
+// WithFinalizers adds the given value to the Finalizers field in the declarative configuration
+// and returns the receiver, so that objects can be build by chaining "With" function invocations.
+// If called multiple times, values provided by each call will be appended to the Finalizers field.
+func (b *ChallengeApplyConfiguration) WithFinalizers(values ...string) *ChallengeApplyConfiguration {
+	b.ensureObjectMetaApplyConfigurationExists()
+	for i := range values {
+		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
+	}
+	return b
+}
+
+func (b *ChallengeApplyConfiguration) ensureObjectMetaApplyConfigurationExists() {
+	if b.ObjectMetaApplyConfiguration == nil {
+		b.ObjectMetaApplyConfiguration = &metav1.ObjectMetaApplyConfiguration{}
+	}
+}
+
+// WithSpec sets the Spec field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Spec field is set to the value of the last call.
+func (b *ChallengeApplyConfiguration) WithSpec(value *ChallengeSpecApplyConfiguration) *ChallengeApplyConfiguration {
+	b.Spec = value
+	return b
+}
+
+// WithStatus sets the Status field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Status field is set to the value of the last call.
+func (b *ChallengeApplyConfiguration) WithStatus(value *ChallengeStatusApplyConfiguration) *ChallengeApplyConfiguration {
+	b.Status = value
+	return b
+}
+
+// GetName retrieves the value of the Name field in the declarative configuration.
+func (b *ChallengeApplyConfiguration) GetName() *string {
+	b.ensureObjectMetaApplyConfigurationExists()
+	return b.ObjectMetaApplyConfiguration.Name
+}
diff --git a/pkg/client/applyconfigurations/acme/v1/challengespec.go b/pkg/client/applyconfigurations/acme/v1/challengespec.go
new file mode 100644
index 00000000000..28a00811eb6
--- /dev/null
+++ b/pkg/client/applyconfigurations/acme/v1/challengespec.go
@@ -0,0 +1,116 @@
+/*
+Copyright The cert-manager Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+// Code generated by applyconfiguration-gen. DO NOT EDIT.
+
+package v1
+
+import (
+	acmev1 "github.com/cert-manager/cert-manager/pkg/apis/acme/v1"
+	metav1 "github.com/cert-manager/cert-manager/pkg/apis/meta/v1"
+)
+
+// ChallengeSpecApplyConfiguration represents a declarative configuration of the ChallengeSpec type for use
+// with apply.
+type ChallengeSpecApplyConfiguration struct {
+	URL              *string                                `json:"url,omitempty"`
+	AuthorizationURL *string                                `json:"authorizationURL,omitempty"`
+	DNSName          *string                                `json:"dnsName,omitempty"`
+	Wildcard         *bool                                  `json:"wildcard,omitempty"`
+	Type             *acmev1.ACMEChallengeType              `json:"type,omitempty"`
+	Token            *string                                `json:"token,omitempty"`
+	Key              *string                                `json:"key,omitempty"`
+	Solver           *ACMEChallengeSolverApplyConfiguration `json:"solver,omitempty"`
+	IssuerRef        *metav1.ObjectReference                `json:"issuerRef,omitempty"`
+}
+
+// ChallengeSpecApplyConfiguration constructs a declarative configuration of the ChallengeSpec type for use with
+// apply.
+func ChallengeSpec() *ChallengeSpecApplyConfiguration {
+	return &ChallengeSpecApplyConfiguration{}
+}
+
+// WithURL sets the URL field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the URL field is set to the value of the last call.
+func (b *ChallengeSpecApplyConfiguration) WithURL(value string) *ChallengeSpecApplyConfiguration {
+	b.URL = &value
+	return b
+}
+
+// WithAuthorizationURL sets the AuthorizationURL field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the AuthorizationURL field is set to the value of the last call.
+func (b *ChallengeSpecApplyConfiguration) WithAuthorizationURL(value string) *ChallengeSpecApplyConfiguration {
+	b.AuthorizationURL = &value
+	return b
+}
+
+// WithDNSName sets the DNSName field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the DNSName field is set to the value of the last call.
+func (b *ChallengeSpecApplyConfiguration) WithDNSName(value string) *ChallengeSpecApplyConfiguration {
+	b.DNSName = &value
+	return b
+}
+
+// WithWildcard sets the Wildcard field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Wildcard field is set to the value of the last call.
+func (b *ChallengeSpecApplyConfiguration) WithWildcard(value bool) *ChallengeSpecApplyConfiguration {
+	b.Wildcard = &value
+	return b
+}
+
+// WithType sets the Type field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Type field is set to the value of the last call.
+func (b *ChallengeSpecApplyConfiguration) WithType(value acmev1.ACMEChallengeType) *ChallengeSpecApplyConfiguration {
+	b.Type = &value
+	return b
+}
+
+// WithToken sets the Token field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Token field is set to the value of the last call.
+func (b *ChallengeSpecApplyConfiguration) WithToken(value string) *ChallengeSpecApplyConfiguration {
+	b.Token = &value
+	return b
+}
+
+// WithKey sets the Key field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Key field is set to the value of the last call.
+func (b *ChallengeSpecApplyConfiguration) WithKey(value string) *ChallengeSpecApplyConfiguration {
+	b.Key = &value
+	return b
+}
+
+// WithSolver sets the Solver field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Solver field is set to the value of the last call.
+func (b *ChallengeSpecApplyConfiguration) WithSolver(value *ACMEChallengeSolverApplyConfiguration) *ChallengeSpecApplyConfiguration {
+	b.Solver = value
+	return b
+}
+
+// WithIssuerRef sets the IssuerRef field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the IssuerRef field is set to the value of the last call.
+func (b *ChallengeSpecApplyConfiguration) WithIssuerRef(value metav1.ObjectReference) *ChallengeSpecApplyConfiguration {
+	b.IssuerRef = &value
+	return b
+}
diff --git a/pkg/client/applyconfigurations/acme/v1/challengestatus.go b/pkg/client/applyconfigurations/acme/v1/challengestatus.go
new file mode 100644
index 00000000000..12864143547
--- /dev/null
+++ b/pkg/client/applyconfigurations/acme/v1/challengestatus.go
@@ -0,0 +1,70 @@
+/*
+Copyright The cert-manager Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+// Code generated by applyconfiguration-gen. DO NOT EDIT.
+
+package v1
+
+import (
+	acmev1 "github.com/cert-manager/cert-manager/pkg/apis/acme/v1"
+)
+
+// ChallengeStatusApplyConfiguration represents a declarative configuration of the ChallengeStatus type for use
+// with apply.
+type ChallengeStatusApplyConfiguration struct {
+	Processing *bool         `json:"processing,omitempty"`
+	Presented  *bool         `json:"presented,omitempty"`
+	Reason     *string       `json:"reason,omitempty"`
+	State      *acmev1.State `json:"state,omitempty"`
+}
+
+// ChallengeStatusApplyConfiguration constructs a declarative configuration of the ChallengeStatus type for use with
+// apply.
+func ChallengeStatus() *ChallengeStatusApplyConfiguration {
+	return &ChallengeStatusApplyConfiguration{}
+}
+
+// WithProcessing sets the Processing field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Processing field is set to the value of the last call.
+func (b *ChallengeStatusApplyConfiguration) WithProcessing(value bool) *ChallengeStatusApplyConfiguration {
+	b.Processing = &value
+	return b
+}
+
+// WithPresented sets the Presented field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Presented field is set to the value of the last call.
+func (b *ChallengeStatusApplyConfiguration) WithPresented(value bool) *ChallengeStatusApplyConfiguration {
+	b.Presented = &value
+	return b
+}
+
+// WithReason sets the Reason field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Reason field is set to the value of the last call.
+func (b *ChallengeStatusApplyConfiguration) WithReason(value string) *ChallengeStatusApplyConfiguration {
+	b.Reason = &value
+	return b
+}
+
+// WithState sets the State field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the State field is set to the value of the last call.
+func (b *ChallengeStatusApplyConfiguration) WithState(value acmev1.State) *ChallengeStatusApplyConfiguration {
+	b.State = &value
+	return b
+}
diff --git a/pkg/client/applyconfigurations/acme/v1/order.go b/pkg/client/applyconfigurations/acme/v1/order.go
new file mode 100644
index 00000000000..9b7597d48f6
--- /dev/null
+++ b/pkg/client/applyconfigurations/acme/v1/order.go
@@ -0,0 +1,225 @@
+/*
+Copyright The cert-manager Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+// Code generated by applyconfiguration-gen. DO NOT EDIT.
+
+package v1
+
+import (
+	apismetav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+	types "k8s.io/apimachinery/pkg/types"
+	metav1 "k8s.io/client-go/applyconfigurations/meta/v1"
+)
+
+// OrderApplyConfiguration represents a declarative configuration of the Order type for use
+// with apply.
+type OrderApplyConfiguration struct {
+	metav1.TypeMetaApplyConfiguration    `json:",inline"`
+	*metav1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
+	Spec                                 *OrderSpecApplyConfiguration   `json:"spec,omitempty"`
+	Status                               *OrderStatusApplyConfiguration `json:"status,omitempty"`
+}
+
+// Order constructs a declarative configuration of the Order type for use with
+// apply.
+func Order(name, namespace string) *OrderApplyConfiguration {
+	b := &OrderApplyConfiguration{}
+	b.WithName(name)
+	b.WithNamespace(namespace)
+	b.WithKind("Order")
+	b.WithAPIVersion("acme.cert-manager.io/v1")
+	return b
+}
+
+// WithKind sets the Kind field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Kind field is set to the value of the last call.
+func (b *OrderApplyConfiguration) WithKind(value string) *OrderApplyConfiguration {
+	b.TypeMetaApplyConfiguration.Kind = &value
+	return b
+}
+
+// WithAPIVersion sets the APIVersion field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the APIVersion field is set to the value of the last call.
+func (b *OrderApplyConfiguration) WithAPIVersion(value string) *OrderApplyConfiguration {
+	b.TypeMetaApplyConfiguration.APIVersion = &value
+	return b
+}
+
+// WithName sets the Name field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Name field is set to the value of the last call.
+func (b *OrderApplyConfiguration) WithName(value string) *OrderApplyConfiguration {
+	b.ensureObjectMetaApplyConfigurationExists()
+	b.ObjectMetaApplyConfiguration.Name = &value
+	return b
+}
+
+// WithGenerateName sets the GenerateName field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the GenerateName field is set to the value of the last call.
+func (b *OrderApplyConfiguration) WithGenerateName(value string) *OrderApplyConfiguration {
+	b.ensureObjectMetaApplyConfigurationExists()
+	b.ObjectMetaApplyConfiguration.GenerateName = &value
+	return b
+}
+
+// WithNamespace sets the Namespace field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Namespace field is set to the value of the last call.
+func (b *OrderApplyConfiguration) WithNamespace(value string) *OrderApplyConfiguration {
+	b.ensureObjectMetaApplyConfigurationExists()
+	b.ObjectMetaApplyConfiguration.Namespace = &value
+	return b
+}
+
+// WithUID sets the UID field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the UID field is set to the value of the last call.
+func (b *OrderApplyConfiguration) WithUID(value types.UID) *OrderApplyConfiguration {
+	b.ensureObjectMetaApplyConfigurationExists()
+	b.ObjectMetaApplyConfiguration.UID = &value
+	return b
+}
+
+// WithResourceVersion sets the ResourceVersion field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the ResourceVersion field is set to the value of the last call.
+func (b *OrderApplyConfiguration) WithResourceVersion(value string) *OrderApplyConfiguration {
+	b.ensureObjectMetaApplyConfigurationExists()
+	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
+	return b
+}
+
+// WithGeneration sets the Generation field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Generation field is set to the value of the last call.
+func (b *OrderApplyConfiguration) WithGeneration(value int64) *OrderApplyConfiguration {
+	b.ensureObjectMetaApplyConfigurationExists()
+	b.ObjectMetaApplyConfiguration.Generation = &value
+	return b
+}
+
+// WithCreationTimestamp sets the CreationTimestamp field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the CreationTimestamp field is set to the value of the last call.
+func (b *OrderApplyConfiguration) WithCreationTimestamp(value apismetav1.Time) *OrderApplyConfiguration {
+	b.ensureObjectMetaApplyConfigurationExists()
+	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
+	return b
+}
+
+// WithDeletionTimestamp sets the DeletionTimestamp field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the DeletionTimestamp field is set to the value of the last call.
+func (b *OrderApplyConfiguration) WithDeletionTimestamp(value apismetav1.Time) *OrderApplyConfiguration {
+	b.ensureObjectMetaApplyConfigurationExists()
+	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
+	return b
+}
+
+// WithDeletionGracePeriodSeconds sets the DeletionGracePeriodSeconds field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
+func (b *OrderApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *OrderApplyConfiguration {
+	b.ensureObjectMetaApplyConfigurationExists()
+	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
+	return b
+}
+
+// WithLabels puts the entries into the Labels field in the declarative configuration
+// and returns the receiver, so that objects can be build by chaining "With" function invocations.
+// If called multiple times, the entries provided by each call will be put on the Labels field,
+// overwriting an existing map entries in Labels field with the same key.
+func (b *OrderApplyConfiguration) WithLabels(entries map[string]string) *OrderApplyConfiguration {
+	b.ensureObjectMetaApplyConfigurationExists()
+	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
+		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
+	}
+	for k, v := range entries {
+		b.ObjectMetaApplyConfiguration.Labels[k] = v
+	}
+	return b
+}
+
+// WithAnnotations puts the entries into the Annotations field in the declarative configuration
+// and returns the receiver, so that objects can be build by chaining "With" function invocations.
+// If called multiple times, the entries provided by each call will be put on the Annotations field,
+// overwriting an existing map entries in Annotations field with the same key.
+func (b *OrderApplyConfiguration) WithAnnotations(entries map[string]string) *OrderApplyConfiguration {
+	b.ensureObjectMetaApplyConfigurationExists()
+	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
+		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
+	}
+	for k, v := range entries {
+		b.ObjectMetaApplyConfiguration.Annotations[k] = v
+	}
+	return b
+}
+
+// WithOwnerReferences adds the given value to the OwnerReferences field in the declarative configuration
+// and returns the receiver, so that objects can be build by chaining "With" function invocations.
+// If called multiple times, values provided by each call will be appended to the OwnerReferences field.
+func (b *OrderApplyConfiguration) WithOwnerReferences(values ...*metav1.OwnerReferenceApplyConfiguration) *OrderApplyConfiguration {
+	b.ensureObjectMetaApplyConfigurationExists()
+	for i := range values {
+		if values[i] == nil {
+			panic("nil value passed to WithOwnerReferences")
+		}
+		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
+	}
+	return b
+}
+
+// WithFinalizers adds the given value to the Finalizers field in the declarative configuration
+// and returns the receiver, so that objects can be build by chaining "With" function invocations.
+// If called multiple times, values provided by each call will be appended to the Finalizers field.
+func (b *OrderApplyConfiguration) WithFinalizers(values ...string) *OrderApplyConfiguration {
+	b.ensureObjectMetaApplyConfigurationExists()
+	for i := range values {
+		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
+	}
+	return b
+}
+
+func (b *OrderApplyConfiguration) ensureObjectMetaApplyConfigurationExists() {
+	if b.ObjectMetaApplyConfiguration == nil {
+		b.ObjectMetaApplyConfiguration = &metav1.ObjectMetaApplyConfiguration{}
+	}
+}
+
+// WithSpec sets the Spec field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Spec field is set to the value of the last call.
+func (b *OrderApplyConfiguration) WithSpec(value *OrderSpecApplyConfiguration) *OrderApplyConfiguration {
+	b.Spec = value
+	return b
+}
+
+// WithStatus sets the Status field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Status field is set to the value of the last call.
+func (b *OrderApplyConfiguration) WithStatus(value *OrderStatusApplyConfiguration) *OrderApplyConfiguration {
+	b.Status = value
+	return b
+}
+
+// GetName retrieves the value of the Name field in the declarative configuration.
+func (b *OrderApplyConfiguration) GetName() *string {
+	b.ensureObjectMetaApplyConfigurationExists()
+	return b.ObjectMetaApplyConfiguration.Name
+}
diff --git a/pkg/client/applyconfigurations/acme/v1/orderspec.go b/pkg/client/applyconfigurations/acme/v1/orderspec.go
new file mode 100644
index 00000000000..3958ef75436
--- /dev/null
+++ b/pkg/client/applyconfigurations/acme/v1/orderspec.go
@@ -0,0 +1,104 @@
+/*
+Copyright The cert-manager Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+// Code generated by applyconfiguration-gen. DO NOT EDIT.
+
+package v1
+
+import (
+	metav1 "github.com/cert-manager/cert-manager/pkg/apis/meta/v1"
+	apismetav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+)
+
+// OrderSpecApplyConfiguration represents a declarative configuration of the OrderSpec type for use
+// with apply.
+type OrderSpecApplyConfiguration struct {
+	Request     []byte                  `json:"request,omitempty"`
+	IssuerRef   *metav1.ObjectReference `json:"issuerRef,omitempty"`
+	CommonName  *string                 `json:"commonName,omitempty"`
+	DNSNames    []string                `json:"dnsNames,omitempty"`
+	IPAddresses []string                `json:"ipAddresses,omitempty"`
+	Duration    *apismetav1.Duration    `json:"duration,omitempty"`
+	Profile     *string                 `json:"profile,omitempty"`
+}
+
+// OrderSpecApplyConfiguration constructs a declarative configuration of the OrderSpec type for use with
+// apply.
+func OrderSpec() *OrderSpecApplyConfiguration {
+	return &OrderSpecApplyConfiguration{}
+}
+
+// WithRequest adds the given value to the Request field in the declarative configuration
+// and returns the receiver, so that objects can be build by chaining "With" function invocations.
+// If called multiple times, values provided by each call will be appended to the Request field.
+func (b *OrderSpecApplyConfiguration) WithRequest(values ...byte) *OrderSpecApplyConfiguration {
+	for i := range values {
+		b.Request = append(b.Request, values[i])
+	}
+	return b
+}
+
+// WithIssuerRef sets the IssuerRef field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the IssuerRef field is set to the value of the last call.
+func (b *OrderSpecApplyConfiguration) WithIssuerRef(value metav1.ObjectReference) *OrderSpecApplyConfiguration {
+	b.IssuerRef = &value
+	return b
+}
+
+// WithCommonName sets the CommonName field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the CommonName field is set to the value of the last call.
+func (b *OrderSpecApplyConfiguration) WithCommonName(value string) *OrderSpecApplyConfiguration {
+	b.CommonName = &value
+	return b
+}
+
+// WithDNSNames adds the given value to the DNSNames field in the declarative configuration
+// and returns the receiver, so that objects can be build by chaining "With" function invocations.
+// If called multiple times, values provided by each call will be appended to the DNSNames field.
+func (b *OrderSpecApplyConfiguration) WithDNSNames(values ...string) *OrderSpecApplyConfiguration {
+	for i := range values {
+		b.DNSNames = append(b.DNSNames, values[i])
+	}
+	return b
+}
+
+// WithIPAddresses adds the given value to the IPAddresses field in the declarative configuration
+// and returns the receiver, so that objects can be build by chaining "With" function invocations.
+// If called multiple times, values provided by each call will be appended to the IPAddresses field.
+func (b *OrderSpecApplyConfiguration) WithIPAddresses(values ...string) *OrderSpecApplyConfiguration {
+	for i := range values {
+		b.IPAddresses = append(b.IPAddresses, values[i])
+	}
+	return b
+}
+
+// WithDuration sets the Duration field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Duration field is set to the value of the last call.
+func (b *OrderSpecApplyConfiguration) WithDuration(value apismetav1.Duration) *OrderSpecApplyConfiguration {
+	b.Duration = &value
+	return b
+}
+
+// WithProfile sets the Profile field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Profile field is set to the value of the last call.
+func (b *OrderSpecApplyConfiguration) WithProfile(value string) *OrderSpecApplyConfiguration {
+	b.Profile = &value
+	return b
+}
diff --git a/pkg/client/applyconfigurations/acme/v1/orderstatus.go b/pkg/client/applyconfigurations/acme/v1/orderstatus.go
new file mode 100644
index 00000000000..e889a33c564
--- /dev/null
+++ b/pkg/client/applyconfigurations/acme/v1/orderstatus.go
@@ -0,0 +1,105 @@
+/*
+Copyright The cert-manager Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+// Code generated by applyconfiguration-gen. DO NOT EDIT.
+
+package v1
+
+import (
+	acmev1 "github.com/cert-manager/cert-manager/pkg/apis/acme/v1"
+	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+)
+
+// OrderStatusApplyConfiguration represents a declarative configuration of the OrderStatus type for use
+// with apply.
+type OrderStatusApplyConfiguration struct {
+	URL            *string                               `json:"url,omitempty"`
+	FinalizeURL    *string                               `json:"finalizeURL,omitempty"`
+	Authorizations []ACMEAuthorizationApplyConfiguration `json:"authorizations,omitempty"`
+	Certificate    []byte                                `json:"certificate,omitempty"`
+	State          *acmev1.State                         `json:"state,omitempty"`
+	Reason         *string                               `json:"reason,omitempty"`
+	FailureTime    *metav1.Time                          `json:"failureTime,omitempty"`
+}
+
+// OrderStatusApplyConfiguration constructs a declarative configuration of the OrderStatus type for use with
+// apply.
+func OrderStatus() *OrderStatusApplyConfiguration {
+	return &OrderStatusApplyConfiguration{}
+}
+
+// WithURL sets the URL field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the URL field is set to the value of the last call.
+func (b *OrderStatusApplyConfiguration) WithURL(value string) *OrderStatusApplyConfiguration {
+	b.URL = &value
+	return b
+}
+
+// WithFinalizeURL sets the FinalizeURL field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the FinalizeURL field is set to the value of the last call.
+func (b *OrderStatusApplyConfiguration) WithFinalizeURL(value string) *OrderStatusApplyConfiguration {
+	b.FinalizeURL = &value
+	return b
+}
+
+// WithAuthorizations adds the given value to the Authorizations field in the declarative configuration
+// and returns the receiver, so that objects can be build by chaining "With" function invocations.
+// If called multiple times, values provided by each call will be appended to the Authorizations field.
+func (b *OrderStatusApplyConfiguration) WithAuthorizations(values ...*ACMEAuthorizationApplyConfiguration) *OrderStatusApplyConfiguration {
+	for i := range values {
+		if values[i] == nil {
+			panic("nil value passed to WithAuthorizations")
+		}
+		b.Authorizations = append(b.Authorizations, *values[i])
+	}
+	return b
+}
+
+// WithCertificate adds the given value to the Certificate field in the declarative configuration
+// and returns the receiver, so that objects can be build by chaining "With" function invocations.
+// If called multiple times, values provided by each call will be appended to the Certificate field.
+func (b *OrderStatusApplyConfiguration) WithCertificate(values ...byte) *OrderStatusApplyConfiguration {
+	for i := range values {
+		b.Certificate = append(b.Certificate, values[i])
+	}
+	return b
+}
+
+// WithState sets the State field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the State field is set to the value of the last call.
+func (b *OrderStatusApplyConfiguration) WithState(value acmev1.State) *OrderStatusApplyConfiguration {
+	b.State = &value
+	return b
+}
+
+// WithReason sets the Reason field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Reason field is set to the value of the last call.
+func (b *OrderStatusApplyConfiguration) WithReason(value string) *OrderStatusApplyConfiguration {
+	b.Reason = &value
+	return b
+}
+
+// WithFailureTime sets the FailureTime field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the FailureTime field is set to the value of the last call.
+func (b *OrderStatusApplyConfiguration) WithFailureTime(value metav1.Time) *OrderStatusApplyConfiguration {
+	b.FailureTime = &value
+	return b
+}
diff --git a/pkg/client/applyconfigurations/acme/v1/route53auth.go b/pkg/client/applyconfigurations/acme/v1/route53auth.go
new file mode 100644
index 00000000000..d3c8d719d98
--- /dev/null
+++ b/pkg/client/applyconfigurations/acme/v1/route53auth.go
@@ -0,0 +1,39 @@
+/*
+Copyright The cert-manager Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+// Code generated by applyconfiguration-gen. DO NOT EDIT.
+
+package v1
+
+// Route53AuthApplyConfiguration represents a declarative configuration of the Route53Auth type for use
+// with apply.
+type Route53AuthApplyConfiguration struct {
+	Kubernetes *Route53KubernetesAuthApplyConfiguration `json:"kubernetes,omitempty"`
+}
+
+// Route53AuthApplyConfiguration constructs a declarative configuration of the Route53Auth type for use with
+// apply.
+func Route53Auth() *Route53AuthApplyConfiguration {
+	return &Route53AuthApplyConfiguration{}
+}
+
+// WithKubernetes sets the Kubernetes field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Kubernetes field is set to the value of the last call.
+func (b *Route53AuthApplyConfiguration) WithKubernetes(value *Route53KubernetesAuthApplyConfiguration) *Route53AuthApplyConfiguration {
+	b.Kubernetes = value
+	return b
+}
diff --git a/pkg/client/applyconfigurations/acme/v1/route53kubernetesauth.go b/pkg/client/applyconfigurations/acme/v1/route53kubernetesauth.go
new file mode 100644
index 00000000000..ff8c96bec82
--- /dev/null
+++ b/pkg/client/applyconfigurations/acme/v1/route53kubernetesauth.go
@@ -0,0 +1,39 @@
+/*
+Copyright The cert-manager Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+// Code generated by applyconfiguration-gen. DO NOT EDIT.
+
+package v1
+
+// Route53KubernetesAuthApplyConfiguration represents a declarative configuration of the Route53KubernetesAuth type for use
+// with apply.
+type Route53KubernetesAuthApplyConfiguration struct {
+	ServiceAccountRef *ServiceAccountRefApplyConfiguration `json:"serviceAccountRef,omitempty"`
+}
+
+// Route53KubernetesAuthApplyConfiguration constructs a declarative configuration of the Route53KubernetesAuth type for use with
+// apply.
+func Route53KubernetesAuth() *Route53KubernetesAuthApplyConfiguration {
+	return &Route53KubernetesAuthApplyConfiguration{}
+}
+
+// WithServiceAccountRef sets the ServiceAccountRef field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the ServiceAccountRef field is set to the value of the last call.
+func (b *Route53KubernetesAuthApplyConfiguration) WithServiceAccountRef(value *ServiceAccountRefApplyConfiguration) *Route53KubernetesAuthApplyConfiguration {
+	b.ServiceAccountRef = value
+	return b
+}
diff --git a/pkg/client/applyconfigurations/acme/v1/serviceaccountref.go b/pkg/client/applyconfigurations/acme/v1/serviceaccountref.go
new file mode 100644
index 00000000000..b1fd4e84cb5
--- /dev/null
+++ b/pkg/client/applyconfigurations/acme/v1/serviceaccountref.go
@@ -0,0 +1,50 @@
+/*
+Copyright The cert-manager Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+// Code generated by applyconfiguration-gen. DO NOT EDIT.
+
+package v1
+
+// ServiceAccountRefApplyConfiguration represents a declarative configuration of the ServiceAccountRef type for use
+// with apply.
+type ServiceAccountRefApplyConfiguration struct {
+	Name           *string  `json:"name,omitempty"`
+	TokenAudiences []string `json:"audiences,omitempty"`
+}
+
+// ServiceAccountRefApplyConfiguration constructs a declarative configuration of the ServiceAccountRef type for use with
+// apply.
+func ServiceAccountRef() *ServiceAccountRefApplyConfiguration {
+	return &ServiceAccountRefApplyConfiguration{}
+}
+
+// WithName sets the Name field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Name field is set to the value of the last call.
+func (b *ServiceAccountRefApplyConfiguration) WithName(value string) *ServiceAccountRefApplyConfiguration {
+	b.Name = &value
+	return b
+}
+
+// WithTokenAudiences adds the given value to the TokenAudiences field in the declarative configuration
+// and returns the receiver, so that objects can be build by chaining "With" function invocations.
+// If called multiple times, values provided by each call will be appended to the TokenAudiences field.
+func (b *ServiceAccountRefApplyConfiguration) WithTokenAudiences(values ...string) *ServiceAccountRefApplyConfiguration {
+	for i := range values {
+		b.TokenAudiences = append(b.TokenAudiences, values[i])
+	}
+	return b
+}
diff --git a/pkg/client/applyconfigurations/certmanager/v1/caissuer.go b/pkg/client/applyconfigurations/certmanager/v1/caissuer.go
new file mode 100644
index 00000000000..f8f1c8723d5
--- /dev/null
+++ b/pkg/client/applyconfigurations/certmanager/v1/caissuer.go
@@ -0,0 +1,72 @@
+/*
+Copyright The cert-manager Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+// Code generated by applyconfiguration-gen. DO NOT EDIT.
+
+package v1
+
+// CAIssuerApplyConfiguration represents a declarative configuration of the CAIssuer type for use
+// with apply.
+type CAIssuerApplyConfiguration struct {
+	SecretName             *string  `json:"secretName,omitempty"`
+	CRLDistributionPoints  []string `json:"crlDistributionPoints,omitempty"`
+	OCSPServers            []string `json:"ocspServers,omitempty"`
+	IssuingCertificateURLs []string `json:"issuingCertificateURLs,omitempty"`
+}
+
+// CAIssuerApplyConfiguration constructs a declarative configuration of the CAIssuer type for use with
+// apply.
+func CAIssuer() *CAIssuerApplyConfiguration {
+	return &CAIssuerApplyConfiguration{}
+}
+
+// WithSecretName sets the SecretName field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the SecretName field is set to the value of the last call.
+func (b *CAIssuerApplyConfiguration) WithSecretName(value string) *CAIssuerApplyConfiguration {
+	b.SecretName = &value
+	return b
+}
+
+// WithCRLDistributionPoints adds the given value to the CRLDistributionPoints field in the declarative configuration
+// and returns the receiver, so that objects can be build by chaining "With" function invocations.
+// If called multiple times, values provided by each call will be appended to the CRLDistributionPoints field.
+func (b *CAIssuerApplyConfiguration) WithCRLDistributionPoints(values ...string) *CAIssuerApplyConfiguration {
+	for i := range values {
+		b.CRLDistributionPoints = append(b.CRLDistributionPoints, values[i])
+	}
+	return b
+}
+
+// WithOCSPServers adds the given value to the OCSPServers field in the declarative configuration
+// and returns the receiver, so that objects can be build by chaining "With" function invocations.
+// If called multiple times, values provided by each call will be appended to the OCSPServers field.
+func (b *CAIssuerApplyConfiguration) WithOCSPServers(values ...string) *CAIssuerApplyConfiguration {
+	for i := range values {
+		b.OCSPServers = append(b.OCSPServers, values[i])
+	}
+	return b
+}
+
+// WithIssuingCertificateURLs adds the given value to the IssuingCertificateURLs field in the declarative configuration
+// and returns the receiver, so that objects can be build by chaining "With" function invocations.
+// If called multiple times, values provided by each call will be appended to the IssuingCertificateURLs field.
+func (b *CAIssuerApplyConfiguration) WithIssuingCertificateURLs(values ...string) *CAIssuerApplyConfiguration {
+	for i := range values {
+		b.IssuingCertificateURLs = append(b.IssuingCertificateURLs, values[i])
+	}
+	return b
+}
diff --git a/pkg/client/applyconfigurations/certmanager/v1/certificate.go b/pkg/client/applyconfigurations/certmanager/v1/certificate.go
new file mode 100644
index 00000000000..a43f22374fa
--- /dev/null
+++ b/pkg/client/applyconfigurations/certmanager/v1/certificate.go
@@ -0,0 +1,225 @@
+/*
+Copyright The cert-manager Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+// Code generated by applyconfiguration-gen. DO NOT EDIT.
+
+package v1
+
+import (
+	apismetav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+	types "k8s.io/apimachinery/pkg/types"
+	metav1 "k8s.io/client-go/applyconfigurations/meta/v1"
+)
+
+// CertificateApplyConfiguration represents a declarative configuration of the Certificate type for use
+// with apply.
+type CertificateApplyConfiguration struct {
+	metav1.TypeMetaApplyConfiguration    `json:",inline"`
+	*metav1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
+	Spec                                 *CertificateSpecApplyConfiguration   `json:"spec,omitempty"`
+	Status                               *CertificateStatusApplyConfiguration `json:"status,omitempty"`
+}
+
+// Certificate constructs a declarative configuration of the Certificate type for use with
+// apply.
+func Certificate(name, namespace string) *CertificateApplyConfiguration {
+	b := &CertificateApplyConfiguration{}
+	b.WithName(name)
+	b.WithNamespace(namespace)
+	b.WithKind("Certificate")
+	b.WithAPIVersion("cert-manager.io/v1")
+	return b
+}
+
+// WithKind sets the Kind field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Kind field is set to the value of the last call.
+func (b *CertificateApplyConfiguration) WithKind(value string) *CertificateApplyConfiguration {
+	b.TypeMetaApplyConfiguration.Kind = &value
+	return b
+}
+
+// WithAPIVersion sets the APIVersion field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the APIVersion field is set to the value of the last call.
+func (b *CertificateApplyConfiguration) WithAPIVersion(value string) *CertificateApplyConfiguration {
+	b.TypeMetaApplyConfiguration.APIVersion = &value
+	return b
+}
+
+// WithName sets the Name field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Name field is set to the value of the last call.
+func (b *CertificateApplyConfiguration) WithName(value string) *CertificateApplyConfiguration {
+	b.ensureObjectMetaApplyConfigurationExists()
+	b.ObjectMetaApplyConfiguration.Name = &value
+	return b
+}
+
+// WithGenerateName sets the GenerateName field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the GenerateName field is set to the value of the last call.
+func (b *CertificateApplyConfiguration) WithGenerateName(value string) *CertificateApplyConfiguration {
+	b.ensureObjectMetaApplyConfigurationExists()
+	b.ObjectMetaApplyConfiguration.GenerateName = &value
+	return b
+}
+
+// WithNamespace sets the Namespace field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Namespace field is set to the value of the last call.
+func (b *CertificateApplyConfiguration) WithNamespace(value string) *CertificateApplyConfiguration {
+	b.ensureObjectMetaApplyConfigurationExists()
+	b.ObjectMetaApplyConfiguration.Namespace = &value
+	return b
+}
+
+// WithUID sets the UID field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the UID field is set to the value of the last call.
+func (b *CertificateApplyConfiguration) WithUID(value types.UID) *CertificateApplyConfiguration {
+	b.ensureObjectMetaApplyConfigurationExists()
+	b.ObjectMetaApplyConfiguration.UID = &value
+	return b
+}
+
+// WithResourceVersion sets the ResourceVersion field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the ResourceVersion field is set to the value of the last call.
+func (b *CertificateApplyConfiguration) WithResourceVersion(value string) *CertificateApplyConfiguration {
+	b.ensureObjectMetaApplyConfigurationExists()
+	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
+	return b
+}
+
+// WithGeneration sets the Generation field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Generation field is set to the value of the last call.
+func (b *CertificateApplyConfiguration) WithGeneration(value int64) *CertificateApplyConfiguration {
+	b.ensureObjectMetaApplyConfigurationExists()
+	b.ObjectMetaApplyConfiguration.Generation = &value
+	return b
+}
+
+// WithCreationTimestamp sets the CreationTimestamp field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the CreationTimestamp field is set to the value of the last call.
+func (b *CertificateApplyConfiguration) WithCreationTimestamp(value apismetav1.Time) *CertificateApplyConfiguration {
+	b.ensureObjectMetaApplyConfigurationExists()
+	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
+	return b
+}
+
+// WithDeletionTimestamp sets the DeletionTimestamp field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the DeletionTimestamp field is set to the value of the last call.
+func (b *CertificateApplyConfiguration) WithDeletionTimestamp(value apismetav1.Time) *CertificateApplyConfiguration {
+	b.ensureObjectMetaApplyConfigurationExists()
+	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
+	return b
+}
+
+// WithDeletionGracePeriodSeconds sets the DeletionGracePeriodSeconds field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
+func (b *CertificateApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *CertificateApplyConfiguration {
+	b.ensureObjectMetaApplyConfigurationExists()
+	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
+	return b
+}
+
+// WithLabels puts the entries into the Labels field in the declarative configuration
+// and returns the receiver, so that objects can be build by chaining "With" function invocations.
+// If called multiple times, the entries provided by each call will be put on the Labels field,
+// overwriting an existing map entries in Labels field with the same key.
+func (b *CertificateApplyConfiguration) WithLabels(entries map[string]string) *CertificateApplyConfiguration {
+	b.ensureObjectMetaApplyConfigurationExists()
+	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
+		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
+	}
+	for k, v := range entries {
+		b.ObjectMetaApplyConfiguration.Labels[k] = v
+	}
+	return b
+}
+
+// WithAnnotations puts the entries into the Annotations field in the declarative configuration
+// and returns the receiver, so that objects can be build by chaining "With" function invocations.
+// If called multiple times, the entries provided by each call will be put on the Annotations field,
+// overwriting an existing map entries in Annotations field with the same key.
+func (b *CertificateApplyConfiguration) WithAnnotations(entries map[string]string) *CertificateApplyConfiguration {
+	b.ensureObjectMetaApplyConfigurationExists()
+	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
+		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
+	}
+	for k, v := range entries {
+		b.ObjectMetaApplyConfiguration.Annotations[k] = v
+	}
+	return b
+}
+
+// WithOwnerReferences adds the given value to the OwnerReferences field in the declarative configuration
+// and returns the receiver, so that objects can be build by chaining "With" function invocations.
+// If called multiple times, values provided by each call will be appended to the OwnerReferences field.
+func (b *CertificateApplyConfiguration) WithOwnerReferences(values ...*metav1.OwnerReferenceApplyConfiguration) *CertificateApplyConfiguration {
+	b.ensureObjectMetaApplyConfigurationExists()
+	for i := range values {
+		if values[i] == nil {
+			panic("nil value passed to WithOwnerReferences")
+		}
+		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
+	}
+	return b
+}
+
+// WithFinalizers adds the given value to the Finalizers field in the declarative configuration
+// and returns the receiver, so that objects can be build by chaining "With" function invocations.
+// If called multiple times, values provided by each call will be appended to the Finalizers field.
+func (b *CertificateApplyConfiguration) WithFinalizers(values ...string) *CertificateApplyConfiguration {
+	b.ensureObjectMetaApplyConfigurationExists()
+	for i := range values {
+		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
+	}
+	return b
+}
+
+func (b *CertificateApplyConfiguration) ensureObjectMetaApplyConfigurationExists() {
+	if b.ObjectMetaApplyConfiguration == nil {
+		b.ObjectMetaApplyConfiguration = &metav1.ObjectMetaApplyConfiguration{}
+	}
+}
+
+// WithSpec sets the Spec field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Spec field is set to the value of the last call.
+func (b *CertificateApplyConfiguration) WithSpec(value *CertificateSpecApplyConfiguration) *CertificateApplyConfiguration {
+	b.Spec = value
+	return b
+}
+
+// WithStatus sets the Status field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Status field is set to the value of the last call.
+func (b *CertificateApplyConfiguration) WithStatus(value *CertificateStatusApplyConfiguration) *CertificateApplyConfiguration {
+	b.Status = value
+	return b
+}
+
+// GetName retrieves the value of the Name field in the declarative configuration.
+func (b *CertificateApplyConfiguration) GetName() *string {
+	b.ensureObjectMetaApplyConfigurationExists()
+	return b.ObjectMetaApplyConfiguration.Name
+}
diff --git a/pkg/client/applyconfigurations/certmanager/v1/certificateadditionaloutputformat.go b/pkg/client/applyconfigurations/certmanager/v1/certificateadditionaloutputformat.go
new file mode 100644
index 00000000000..e6890a8dc07
--- /dev/null
+++ b/pkg/client/applyconfigurations/certmanager/v1/certificateadditionaloutputformat.go
@@ -0,0 +1,43 @@
+/*
+Copyright The cert-manager Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+// Code generated by applyconfiguration-gen. DO NOT EDIT.
+
+package v1
+
+import (
+	certmanagerv1 "github.com/cert-manager/cert-manager/pkg/apis/certmanager/v1"
+)
+
+// CertificateAdditionalOutputFormatApplyConfiguration represents a declarative configuration of the CertificateAdditionalOutputFormat type for use
+// with apply.
+type CertificateAdditionalOutputFormatApplyConfiguration struct {
+	Type *certmanagerv1.CertificateOutputFormatType `json:"type,omitempty"`
+}
+
+// CertificateAdditionalOutputFormatApplyConfiguration constructs a declarative configuration of the CertificateAdditionalOutputFormat type for use with
+// apply.
+func CertificateAdditionalOutputFormat() *CertificateAdditionalOutputFormatApplyConfiguration {
+	return &CertificateAdditionalOutputFormatApplyConfiguration{}
+}
+
+// WithType sets the Type field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Type field is set to the value of the last call.
+func (b *CertificateAdditionalOutputFormatApplyConfiguration) WithType(value certmanagerv1.CertificateOutputFormatType) *CertificateAdditionalOutputFormatApplyConfiguration {
+	b.Type = &value
+	return b
+}
diff --git a/pkg/client/applyconfigurations/certmanager/v1/certificatecondition.go b/pkg/client/applyconfigurations/certmanager/v1/certificatecondition.go
new file mode 100644
index 00000000000..ceb1161a122
--- /dev/null
+++ b/pkg/client/applyconfigurations/certmanager/v1/certificatecondition.go
@@ -0,0 +1,90 @@
+/*
+Copyright The cert-manager Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+// Code generated by applyconfiguration-gen. DO NOT EDIT.
+
+package v1
+
+import (
+	certmanagerv1 "github.com/cert-manager/cert-manager/pkg/apis/certmanager/v1"
+	metav1 "github.com/cert-manager/cert-manager/pkg/apis/meta/v1"
+	apismetav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+)
+
+// CertificateConditionApplyConfiguration represents a declarative configuration of the CertificateCondition type for use
+// with apply.
+type CertificateConditionApplyConfiguration struct {
+	Type               *certmanagerv1.CertificateConditionType `json:"type,omitempty"`
+	Status             *metav1.ConditionStatus                 `json:"status,omitempty"`
+	LastTransitionTime *apismetav1.Time                        `json:"lastTransitionTime,omitempty"`
+	Reason             *string                                 `json:"reason,omitempty"`
+	Message            *string                                 `json:"message,omitempty"`
+	ObservedGeneration *int64                                  `json:"observedGeneration,omitempty"`
+}
+
+// CertificateConditionApplyConfiguration constructs a declarative configuration of the CertificateCondition type for use with
+// apply.
+func CertificateCondition() *CertificateConditionApplyConfiguration {
+	return &CertificateConditionApplyConfiguration{}
+}
+
+// WithType sets the Type field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Type field is set to the value of the last call.
+func (b *CertificateConditionApplyConfiguration) WithType(value certmanagerv1.CertificateConditionType) *CertificateConditionApplyConfiguration {
+	b.Type = &value
+	return b
+}
+
+// WithStatus sets the Status field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Status field is set to the value of the last call.
+func (b *CertificateConditionApplyConfiguration) WithStatus(value metav1.ConditionStatus) *CertificateConditionApplyConfiguration {
+	b.Status = &value
+	return b
+}
+
+// WithLastTransitionTime sets the LastTransitionTime field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the LastTransitionTime field is set to the value of the last call.
+func (b *CertificateConditionApplyConfiguration) WithLastTransitionTime(value apismetav1.Time) *CertificateConditionApplyConfiguration {
+	b.LastTransitionTime = &value
+	return b
+}
+
+// WithReason sets the Reason field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Reason field is set to the value of the last call.
+func (b *CertificateConditionApplyConfiguration) WithReason(value string) *CertificateConditionApplyConfiguration {
+	b.Reason = &value
+	return b
+}
+
+// WithMessage sets the Message field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Message field is set to the value of the last call.
+func (b *CertificateConditionApplyConfiguration) WithMessage(value string) *CertificateConditionApplyConfiguration {
+	b.Message = &value
+	return b
+}
+
+// WithObservedGeneration sets the ObservedGeneration field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the ObservedGeneration field is set to the value of the last call.
+func (b *CertificateConditionApplyConfiguration) WithObservedGeneration(value int64) *CertificateConditionApplyConfiguration {
+	b.ObservedGeneration = &value
+	return b
+}
diff --git a/pkg/client/applyconfigurations/certmanager/v1/certificatekeystores.go b/pkg/client/applyconfigurations/certmanager/v1/certificatekeystores.go
new file mode 100644
index 00000000000..5c9c6b3ffc5
--- /dev/null
+++ b/pkg/client/applyconfigurations/certmanager/v1/certificatekeystores.go
@@ -0,0 +1,48 @@
+/*
+Copyright The cert-manager Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+// Code generated by applyconfiguration-gen. DO NOT EDIT.
+
+package v1
+
+// CertificateKeystoresApplyConfiguration represents a declarative configuration of the CertificateKeystores type for use
+// with apply.
+type CertificateKeystoresApplyConfiguration struct {
+	JKS    *JKSKeystoreApplyConfiguration    `json:"jks,omitempty"`
+	PKCS12 *PKCS12KeystoreApplyConfiguration `json:"pkcs12,omitempty"`
+}
+
+// CertificateKeystoresApplyConfiguration constructs a declarative configuration of the CertificateKeystores type for use with
+// apply.
+func CertificateKeystores() *CertificateKeystoresApplyConfiguration {
+	return &CertificateKeystoresApplyConfiguration{}
+}
+
+// WithJKS sets the JKS field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the JKS field is set to the value of the last call.
+func (b *CertificateKeystoresApplyConfiguration) WithJKS(value *JKSKeystoreApplyConfiguration) *CertificateKeystoresApplyConfiguration {
+	b.JKS = value
+	return b
+}
+
+// WithPKCS12 sets the PKCS12 field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the PKCS12 field is set to the value of the last call.
+func (b *CertificateKeystoresApplyConfiguration) WithPKCS12(value *PKCS12KeystoreApplyConfiguration) *CertificateKeystoresApplyConfiguration {
+	b.PKCS12 = value
+	return b
+}
diff --git a/pkg/client/applyconfigurations/certmanager/v1/certificateprivatekey.go b/pkg/client/applyconfigurations/certmanager/v1/certificateprivatekey.go
new file mode 100644
index 00000000000..ae94a2dc1c6
--- /dev/null
+++ b/pkg/client/applyconfigurations/certmanager/v1/certificateprivatekey.go
@@ -0,0 +1,70 @@
+/*
+Copyright The cert-manager Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+// Code generated by applyconfiguration-gen. DO NOT EDIT.
+
+package v1
+
+import (
+	certmanagerv1 "github.com/cert-manager/cert-manager/pkg/apis/certmanager/v1"
+)
+
+// CertificatePrivateKeyApplyConfiguration represents a declarative configuration of the CertificatePrivateKey type for use
+// with apply.
+type CertificatePrivateKeyApplyConfiguration struct {
+	RotationPolicy *certmanagerv1.PrivateKeyRotationPolicy `json:"rotationPolicy,omitempty"`
+	Encoding       *certmanagerv1.PrivateKeyEncoding       `json:"encoding,omitempty"`
+	Algorithm      *certmanagerv1.PrivateKeyAlgorithm      `json:"algorithm,omitempty"`
+	Size           *int                                    `json:"size,omitempty"`
+}
+
+// CertificatePrivateKeyApplyConfiguration constructs a declarative configuration of the CertificatePrivateKey type for use with
+// apply.
+func CertificatePrivateKey() *CertificatePrivateKeyApplyConfiguration {
+	return &CertificatePrivateKeyApplyConfiguration{}
+}
+
+// WithRotationPolicy sets the RotationPolicy field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the RotationPolicy field is set to the value of the last call.
+func (b *CertificatePrivateKeyApplyConfiguration) WithRotationPolicy(value certmanagerv1.PrivateKeyRotationPolicy) *CertificatePrivateKeyApplyConfiguration {
+	b.RotationPolicy = &value
+	return b
+}
+
+// WithEncoding sets the Encoding field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Encoding field is set to the value of the last call.
+func (b *CertificatePrivateKeyApplyConfiguration) WithEncoding(value certmanagerv1.PrivateKeyEncoding) *CertificatePrivateKeyApplyConfiguration {
+	b.Encoding = &value
+	return b
+}
+
+// WithAlgorithm sets the Algorithm field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Algorithm field is set to the value of the last call.
+func (b *CertificatePrivateKeyApplyConfiguration) WithAlgorithm(value certmanagerv1.PrivateKeyAlgorithm) *CertificatePrivateKeyApplyConfiguration {
+	b.Algorithm = &value
+	return b
+}
+
+// WithSize sets the Size field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Size field is set to the value of the last call.
+func (b *CertificatePrivateKeyApplyConfiguration) WithSize(value int) *CertificatePrivateKeyApplyConfiguration {
+	b.Size = &value
+	return b
+}
diff --git a/pkg/client/applyconfigurations/certmanager/v1/certificaterequest.go b/pkg/client/applyconfigurations/certmanager/v1/certificaterequest.go
new file mode 100644
index 00000000000..e3551566525
--- /dev/null
+++ b/pkg/client/applyconfigurations/certmanager/v1/certificaterequest.go
@@ -0,0 +1,225 @@
+/*
+Copyright The cert-manager Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+// Code generated by applyconfiguration-gen. DO NOT EDIT.
+
+package v1
+
+import (
+	apismetav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+	types "k8s.io/apimachinery/pkg/types"
+	metav1 "k8s.io/client-go/applyconfigurations/meta/v1"
+)
+
+// CertificateRequestApplyConfiguration represents a declarative configuration of the CertificateRequest type for use
+// with apply.
+type CertificateRequestApplyConfiguration struct {
+	metav1.TypeMetaApplyConfiguration    `json:",inline"`
+	*metav1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
+	Spec                                 *CertificateRequestSpecApplyConfiguration   `json:"spec,omitempty"`
+	Status                               *CertificateRequestStatusApplyConfiguration `json:"status,omitempty"`
+}
+
+// CertificateRequest constructs a declarative configuration of the CertificateRequest type for use with
+// apply.
+func CertificateRequest(name, namespace string) *CertificateRequestApplyConfiguration {
+	b := &CertificateRequestApplyConfiguration{}
+	b.WithName(name)
+	b.WithNamespace(namespace)
+	b.WithKind("CertificateRequest")
+	b.WithAPIVersion("cert-manager.io/v1")
+	return b
+}
+
+// WithKind sets the Kind field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Kind field is set to the value of the last call.
+func (b *CertificateRequestApplyConfiguration) WithKind(value string) *CertificateRequestApplyConfiguration {
+	b.TypeMetaApplyConfiguration.Kind = &value
+	return b
+}
+
+// WithAPIVersion sets the APIVersion field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the APIVersion field is set to the value of the last call.
+func (b *CertificateRequestApplyConfiguration) WithAPIVersion(value string) *CertificateRequestApplyConfiguration {
+	b.TypeMetaApplyConfiguration.APIVersion = &value
+	return b
+}
+
+// WithName sets the Name field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Name field is set to the value of the last call.
+func (b *CertificateRequestApplyConfiguration) WithName(value string) *CertificateRequestApplyConfiguration {
+	b.ensureObjectMetaApplyConfigurationExists()
+	b.ObjectMetaApplyConfiguration.Name = &value
+	return b
+}
+
+// WithGenerateName sets the GenerateName field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the GenerateName field is set to the value of the last call.
+func (b *CertificateRequestApplyConfiguration) WithGenerateName(value string) *CertificateRequestApplyConfiguration {
+	b.ensureObjectMetaApplyConfigurationExists()
+	b.ObjectMetaApplyConfiguration.GenerateName = &value
+	return b
+}
+
+// WithNamespace sets the Namespace field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Namespace field is set to the value of the last call.
+func (b *CertificateRequestApplyConfiguration) WithNamespace(value string) *CertificateRequestApplyConfiguration {
+	b.ensureObjectMetaApplyConfigurationExists()
+	b.ObjectMetaApplyConfiguration.Namespace = &value
+	return b
+}
+
+// WithUID sets the UID field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the UID field is set to the value of the last call.
+func (b *CertificateRequestApplyConfiguration) WithUID(value types.UID) *CertificateRequestApplyConfiguration {
+	b.ensureObjectMetaApplyConfigurationExists()
+	b.ObjectMetaApplyConfiguration.UID = &value
+	return b
+}
+
+// WithResourceVersion sets the ResourceVersion field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the ResourceVersion field is set to the value of the last call.
+func (b *CertificateRequestApplyConfiguration) WithResourceVersion(value string) *CertificateRequestApplyConfiguration {
+	b.ensureObjectMetaApplyConfigurationExists()
+	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
+	return b
+}
+
+// WithGeneration sets the Generation field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Generation field is set to the value of the last call.
+func (b *CertificateRequestApplyConfiguration) WithGeneration(value int64) *CertificateRequestApplyConfiguration {
+	b.ensureObjectMetaApplyConfigurationExists()
+	b.ObjectMetaApplyConfiguration.Generation = &value
+	return b
+}
+
+// WithCreationTimestamp sets the CreationTimestamp field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the CreationTimestamp field is set to the value of the last call.
+func (b *CertificateRequestApplyConfiguration) WithCreationTimestamp(value apismetav1.Time) *CertificateRequestApplyConfiguration {
+	b.ensureObjectMetaApplyConfigurationExists()
+	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
+	return b
+}
+
+// WithDeletionTimestamp sets the DeletionTimestamp field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the DeletionTimestamp field is set to the value of the last call.
+func (b *CertificateRequestApplyConfiguration) WithDeletionTimestamp(value apismetav1.Time) *CertificateRequestApplyConfiguration {
+	b.ensureObjectMetaApplyConfigurationExists()
+	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
+	return b
+}
+
+// WithDeletionGracePeriodSeconds sets the DeletionGracePeriodSeconds field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
+func (b *CertificateRequestApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *CertificateRequestApplyConfiguration {
+	b.ensureObjectMetaApplyConfigurationExists()
+	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
+	return b
+}
+
+// WithLabels puts the entries into the Labels field in the declarative configuration
+// and returns the receiver, so that objects can be build by chaining "With" function invocations.
+// If called multiple times, the entries provided by each call will be put on the Labels field,
+// overwriting an existing map entries in Labels field with the same key.
+func (b *CertificateRequestApplyConfiguration) WithLabels(entries map[string]string) *CertificateRequestApplyConfiguration {
+	b.ensureObjectMetaApplyConfigurationExists()
+	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
+		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
+	}
+	for k, v := range entries {
+		b.ObjectMetaApplyConfiguration.Labels[k] = v
+	}
+	return b
+}
+
+// WithAnnotations puts the entries into the Annotations field in the declarative configuration
+// and returns the receiver, so that objects can be build by chaining "With" function invocations.
+// If called multiple times, the entries provided by each call will be put on the Annotations field,
+// overwriting an existing map entries in Annotations field with the same key.
+func (b *CertificateRequestApplyConfiguration) WithAnnotations(entries map[string]string) *CertificateRequestApplyConfiguration {
+	b.ensureObjectMetaApplyConfigurationExists()
+	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
+		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
+	}
+	for k, v := range entries {
+		b.ObjectMetaApplyConfiguration.Annotations[k] = v
+	}
+	return b
+}
+
+// WithOwnerReferences adds the given value to the OwnerReferences field in the declarative configuration
+// and returns the receiver, so that objects can be build by chaining "With" function invocations.
+// If called multiple times, values provided by each call will be appended to the OwnerReferences field.
+func (b *CertificateRequestApplyConfiguration) WithOwnerReferences(values ...*metav1.OwnerReferenceApplyConfiguration) *CertificateRequestApplyConfiguration {
+	b.ensureObjectMetaApplyConfigurationExists()
+	for i := range values {
+		if values[i] == nil {
+			panic("nil value passed to WithOwnerReferences")
+		}
+		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
+	}
+	return b
+}
+
+// WithFinalizers adds the given value to the Finalizers field in the declarative configuration
+// and returns the receiver, so that objects can be build by chaining "With" function invocations.
+// If called multiple times, values provided by each call will be appended to the Finalizers field.
+func (b *CertificateRequestApplyConfiguration) WithFinalizers(values ...string) *CertificateRequestApplyConfiguration {
+	b.ensureObjectMetaApplyConfigurationExists()
+	for i := range values {
+		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
+	}
+	return b
+}
+
+func (b *CertificateRequestApplyConfiguration) ensureObjectMetaApplyConfigurationExists() {
+	if b.ObjectMetaApplyConfiguration == nil {
+		b.ObjectMetaApplyConfiguration = &metav1.ObjectMetaApplyConfiguration{}
+	}
+}
+
+// WithSpec sets the Spec field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Spec field is set to the value of the last call.
+func (b *CertificateRequestApplyConfiguration) WithSpec(value *CertificateRequestSpecApplyConfiguration) *CertificateRequestApplyConfiguration {
+	b.Spec = value
+	return b
+}
+
+// WithStatus sets the Status field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Status field is set to the value of the last call.
+func (b *CertificateRequestApplyConfiguration) WithStatus(value *CertificateRequestStatusApplyConfiguration) *CertificateRequestApplyConfiguration {
+	b.Status = value
+	return b
+}
+
+// GetName retrieves the value of the Name field in the declarative configuration.
+func (b *CertificateRequestApplyConfiguration) GetName() *string {
+	b.ensureObjectMetaApplyConfigurationExists()
+	return b.ObjectMetaApplyConfiguration.Name
+}
diff --git a/pkg/client/applyconfigurations/certmanager/v1/certificaterequestcondition.go b/pkg/client/applyconfigurations/certmanager/v1/certificaterequestcondition.go
new file mode 100644
index 00000000000..24ec85dbbb9
--- /dev/null
+++ b/pkg/client/applyconfigurations/certmanager/v1/certificaterequestcondition.go
@@ -0,0 +1,81 @@
+/*
+Copyright The cert-manager Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+// Code generated by applyconfiguration-gen. DO NOT EDIT.
+
+package v1
+
+import (
+	certmanagerv1 "github.com/cert-manager/cert-manager/pkg/apis/certmanager/v1"
+	metav1 "github.com/cert-manager/cert-manager/pkg/apis/meta/v1"
+	apismetav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+)
+
+// CertificateRequestConditionApplyConfiguration represents a declarative configuration of the CertificateRequestCondition type for use
+// with apply.
+type CertificateRequestConditionApplyConfiguration struct {
+	Type               *certmanagerv1.CertificateRequestConditionType `json:"type,omitempty"`
+	Status             *metav1.ConditionStatus                        `json:"status,omitempty"`
+	LastTransitionTime *apismetav1.Time                               `json:"lastTransitionTime,omitempty"`
+	Reason             *string                                        `json:"reason,omitempty"`
+	Message            *string                                        `json:"message,omitempty"`
+}
+
+// CertificateRequestConditionApplyConfiguration constructs a declarative configuration of the CertificateRequestCondition type for use with
+// apply.
+func CertificateRequestCondition() *CertificateRequestConditionApplyConfiguration {
+	return &CertificateRequestConditionApplyConfiguration{}
+}
+
+// WithType sets the Type field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Type field is set to the value of the last call.
+func (b *CertificateRequestConditionApplyConfiguration) WithType(value certmanagerv1.CertificateRequestConditionType) *CertificateRequestConditionApplyConfiguration {
+	b.Type = &value
+	return b
+}
+
+// WithStatus sets the Status field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Status field is set to the value of the last call.
+func (b *CertificateRequestConditionApplyConfiguration) WithStatus(value metav1.ConditionStatus) *CertificateRequestConditionApplyConfiguration {
+	b.Status = &value
+	return b
+}
+
+// WithLastTransitionTime sets the LastTransitionTime field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the LastTransitionTime field is set to the value of the last call.
+func (b *CertificateRequestConditionApplyConfiguration) WithLastTransitionTime(value apismetav1.Time) *CertificateRequestConditionApplyConfiguration {
+	b.LastTransitionTime = &value
+	return b
+}
+
+// WithReason sets the Reason field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Reason field is set to the value of the last call.
+func (b *CertificateRequestConditionApplyConfiguration) WithReason(value string) *CertificateRequestConditionApplyConfiguration {
+	b.Reason = &value
+	return b
+}
+
+// WithMessage sets the Message field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Message field is set to the value of the last call.
+func (b *CertificateRequestConditionApplyConfiguration) WithMessage(value string) *CertificateRequestConditionApplyConfiguration {
+	b.Message = &value
+	return b
+}
diff --git a/pkg/client/applyconfigurations/certmanager/v1/certificaterequestspec.go b/pkg/client/applyconfigurations/certmanager/v1/certificaterequestspec.go
new file mode 100644
index 00000000000..8e0370d5a56
--- /dev/null
+++ b/pkg/client/applyconfigurations/certmanager/v1/certificaterequestspec.go
@@ -0,0 +1,129 @@
+/*
+Copyright The cert-manager Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+// Code generated by applyconfiguration-gen. DO NOT EDIT.
+
+package v1
+
+import (
+	certmanagerv1 "github.com/cert-manager/cert-manager/pkg/apis/certmanager/v1"
+	apismetav1 "github.com/cert-manager/cert-manager/pkg/apis/meta/v1"
+	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+)
+
+// CertificateRequestSpecApplyConfiguration represents a declarative configuration of the CertificateRequestSpec type for use
+// with apply.
+type CertificateRequestSpecApplyConfiguration struct {
+	Duration  *metav1.Duration            `json:"duration,omitempty"`
+	IssuerRef *apismetav1.ObjectReference `json:"issuerRef,omitempty"`
+	Request   []byte                      `json:"request,omitempty"`
+	IsCA      *bool                       `json:"isCA,omitempty"`
+	Usages    []certmanagerv1.KeyUsage    `json:"usages,omitempty"`
+	Username  *string                     `json:"username,omitempty"`
+	UID       *string                     `json:"uid,omitempty"`
+	Groups    []string                    `json:"groups,omitempty"`
+	Extra     map[string][]string         `json:"extra,omitempty"`
+}
+
+// CertificateRequestSpecApplyConfiguration constructs a declarative configuration of the CertificateRequestSpec type for use with
+// apply.
+func CertificateRequestSpec() *CertificateRequestSpecApplyConfiguration {
+	return &CertificateRequestSpecApplyConfiguration{}
+}
+
+// WithDuration sets the Duration field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Duration field is set to the value of the last call.
+func (b *CertificateRequestSpecApplyConfiguration) WithDuration(value metav1.Duration) *CertificateRequestSpecApplyConfiguration {
+	b.Duration = &value
+	return b
+}
+
+// WithIssuerRef sets the IssuerRef field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the IssuerRef field is set to the value of the last call.
+func (b *CertificateRequestSpecApplyConfiguration) WithIssuerRef(value apismetav1.ObjectReference) *CertificateRequestSpecApplyConfiguration {
+	b.IssuerRef = &value
+	return b
+}
+
+// WithRequest adds the given value to the Request field in the declarative configuration
+// and returns the receiver, so that objects can be build by chaining "With" function invocations.
+// If called multiple times, values provided by each call will be appended to the Request field.
+func (b *CertificateRequestSpecApplyConfiguration) WithRequest(values ...byte) *CertificateRequestSpecApplyConfiguration {
+	for i := range values {
+		b.Request = append(b.Request, values[i])
+	}
+	return b
+}
+
+// WithIsCA sets the IsCA field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the IsCA field is set to the value of the last call.
+func (b *CertificateRequestSpecApplyConfiguration) WithIsCA(value bool) *CertificateRequestSpecApplyConfiguration {
+	b.IsCA = &value
+	return b
+}
+
+// WithUsages adds the given value to the Usages field in the declarative configuration
+// and returns the receiver, so that objects can be build by chaining "With" function invocations.
+// If called multiple times, values provided by each call will be appended to the Usages field.
+func (b *CertificateRequestSpecApplyConfiguration) WithUsages(values ...certmanagerv1.KeyUsage) *CertificateRequestSpecApplyConfiguration {
+	for i := range values {
+		b.Usages = append(b.Usages, values[i])
+	}
+	return b
+}
+
+// WithUsername sets the Username field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Username field is set to the value of the last call.
+func (b *CertificateRequestSpecApplyConfiguration) WithUsername(value string) *CertificateRequestSpecApplyConfiguration {
+	b.Username = &value
+	return b
+}
+
+// WithUID sets the UID field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the UID field is set to the value of the last call.
+func (b *CertificateRequestSpecApplyConfiguration) WithUID(value string) *CertificateRequestSpecApplyConfiguration {
+	b.UID = &value
+	return b
+}
+
+// WithGroups adds the given value to the Groups field in the declarative configuration
+// and returns the receiver, so that objects can be build by chaining "With" function invocations.
+// If called multiple times, values provided by each call will be appended to the Groups field.
+func (b *CertificateRequestSpecApplyConfiguration) WithGroups(values ...string) *CertificateRequestSpecApplyConfiguration {
+	for i := range values {
+		b.Groups = append(b.Groups, values[i])
+	}
+	return b
+}
+
+// WithExtra puts the entries into the Extra field in the declarative configuration
+// and returns the receiver, so that objects can be build by chaining "With" function invocations.
+// If called multiple times, the entries provided by each call will be put on the Extra field,
+// overwriting an existing map entries in Extra field with the same key.
+func (b *CertificateRequestSpecApplyConfiguration) WithExtra(entries map[string][]string) *CertificateRequestSpecApplyConfiguration {
+	if b.Extra == nil && len(entries) > 0 {
+		b.Extra = make(map[string][]string, len(entries))
+	}
+	for k, v := range entries {
+		b.Extra[k] = v
+	}
+	return b
+}
diff --git a/pkg/client/applyconfigurations/certmanager/v1/certificaterequeststatus.go b/pkg/client/applyconfigurations/certmanager/v1/certificaterequeststatus.go
new file mode 100644
index 00000000000..47e2fa66626
--- /dev/null
+++ b/pkg/client/applyconfigurations/certmanager/v1/certificaterequeststatus.go
@@ -0,0 +1,79 @@
+/*
+Copyright The cert-manager Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+// Code generated by applyconfiguration-gen. DO NOT EDIT.
+
+package v1
+
+import (
+	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+)
+
+// CertificateRequestStatusApplyConfiguration represents a declarative configuration of the CertificateRequestStatus type for use
+// with apply.
+type CertificateRequestStatusApplyConfiguration struct {
+	Conditions  []CertificateRequestConditionApplyConfiguration `json:"conditions,omitempty"`
+	Certificate []byte                                          `json:"certificate,omitempty"`
+	CA          []byte                                          `json:"ca,omitempty"`
+	FailureTime *metav1.Time                                    `json:"failureTime,omitempty"`
+}
+
+// CertificateRequestStatusApplyConfiguration constructs a declarative configuration of the CertificateRequestStatus type for use with
+// apply.
+func CertificateRequestStatus() *CertificateRequestStatusApplyConfiguration {
+	return &CertificateRequestStatusApplyConfiguration{}
+}
+
+// WithConditions adds the given value to the Conditions field in the declarative configuration
+// and returns the receiver, so that objects can be build by chaining "With" function invocations.
+// If called multiple times, values provided by each call will be appended to the Conditions field.
+func (b *CertificateRequestStatusApplyConfiguration) WithConditions(values ...*CertificateRequestConditionApplyConfiguration) *CertificateRequestStatusApplyConfiguration {
+	for i := range values {
+		if values[i] == nil {
+			panic("nil value passed to WithConditions")
+		}
+		b.Conditions = append(b.Conditions, *values[i])
+	}
+	return b
+}
+
+// WithCertificate adds the given value to the Certificate field in the declarative configuration
+// and returns the receiver, so that objects can be build by chaining "With" function invocations.
+// If called multiple times, values provided by each call will be appended to the Certificate field.
+func (b *CertificateRequestStatusApplyConfiguration) WithCertificate(values ...byte) *CertificateRequestStatusApplyConfiguration {
+	for i := range values {
+		b.Certificate = append(b.Certificate, values[i])
+	}
+	return b
+}
+
+// WithCA adds the given value to the CA field in the declarative configuration
+// and returns the receiver, so that objects can be build by chaining "With" function invocations.
+// If called multiple times, values provided by each call will be appended to the CA field.
+func (b *CertificateRequestStatusApplyConfiguration) WithCA(values ...byte) *CertificateRequestStatusApplyConfiguration {
+	for i := range values {
+		b.CA = append(b.CA, values[i])
+	}
+	return b
+}
+
+// WithFailureTime sets the FailureTime field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the FailureTime field is set to the value of the last call.
+func (b *CertificateRequestStatusApplyConfiguration) WithFailureTime(value metav1.Time) *CertificateRequestStatusApplyConfiguration {
+	b.FailureTime = &value
+	return b
+}
diff --git a/pkg/client/applyconfigurations/certmanager/v1/certificatesecrettemplate.go b/pkg/client/applyconfigurations/certmanager/v1/certificatesecrettemplate.go
new file mode 100644
index 00000000000..6ae4eee9186
--- /dev/null
+++ b/pkg/client/applyconfigurations/certmanager/v1/certificatesecrettemplate.go
@@ -0,0 +1,60 @@
+/*
+Copyright The cert-manager Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+// Code generated by applyconfiguration-gen. DO NOT EDIT.
+
+package v1
+
+// CertificateSecretTemplateApplyConfiguration represents a declarative configuration of the CertificateSecretTemplate type for use
+// with apply.
+type CertificateSecretTemplateApplyConfiguration struct {
+	Annotations map[string]string `json:"annotations,omitempty"`
+	Labels      map[string]string `json:"labels,omitempty"`
+}
+
+// CertificateSecretTemplateApplyConfiguration constructs a declarative configuration of the CertificateSecretTemplate type for use with
+// apply.
+func CertificateSecretTemplate() *CertificateSecretTemplateApplyConfiguration {
+	return &CertificateSecretTemplateApplyConfiguration{}
+}
+
+// WithAnnotations puts the entries into the Annotations field in the declarative configuration
+// and returns the receiver, so that objects can be build by chaining "With" function invocations.
+// If called multiple times, the entries provided by each call will be put on the Annotations field,
+// overwriting an existing map entries in Annotations field with the same key.
+func (b *CertificateSecretTemplateApplyConfiguration) WithAnnotations(entries map[string]string) *CertificateSecretTemplateApplyConfiguration {
+	if b.Annotations == nil && len(entries) > 0 {
+		b.Annotations = make(map[string]string, len(entries))
+	}
+	for k, v := range entries {
+		b.Annotations[k] = v
+	}
+	return b
+}
+
+// WithLabels puts the entries into the Labels field in the declarative configuration
+// and returns the receiver, so that objects can be build by chaining "With" function invocations.
+// If called multiple times, the entries provided by each call will be put on the Labels field,
+// overwriting an existing map entries in Labels field with the same key.
+func (b *CertificateSecretTemplateApplyConfiguration) WithLabels(entries map[string]string) *CertificateSecretTemplateApplyConfiguration {
+	if b.Labels == nil && len(entries) > 0 {
+		b.Labels = make(map[string]string, len(entries))
+	}
+	for k, v := range entries {
+		b.Labels[k] = v
+	}
+	return b
+}
diff --git a/pkg/client/applyconfigurations/certmanager/v1/certificatespec.go b/pkg/client/applyconfigurations/certmanager/v1/certificatespec.go
new file mode 100644
index 00000000000..41f5b4f2d8c
--- /dev/null
+++ b/pkg/client/applyconfigurations/certmanager/v1/certificatespec.go
@@ -0,0 +1,263 @@
+/*
+Copyright The cert-manager Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+// Code generated by applyconfiguration-gen. DO NOT EDIT.
+
+package v1
+
+import (
+	certmanagerv1 "github.com/cert-manager/cert-manager/pkg/apis/certmanager/v1"
+	apismetav1 "github.com/cert-manager/cert-manager/pkg/apis/meta/v1"
+	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+)
+
+// CertificateSpecApplyConfiguration represents a declarative configuration of the CertificateSpec type for use
+// with apply.
+type CertificateSpecApplyConfiguration struct {
+	Subject                 *X509SubjectApplyConfiguration                        `json:"subject,omitempty"`
+	LiteralSubject          *string                                               `json:"literalSubject,omitempty"`
+	CommonName              *string                                               `json:"commonName,omitempty"`
+	Duration                *metav1.Duration                                      `json:"duration,omitempty"`
+	RenewBefore             *metav1.Duration                                      `json:"renewBefore,omitempty"`
+	RenewBeforePercentage   *int32                                                `json:"renewBeforePercentage,omitempty"`
+	DNSNames                []string                                              `json:"dnsNames,omitempty"`
+	IPAddresses             []string                                              `json:"ipAddresses,omitempty"`
+	URIs                    []string                                              `json:"uris,omitempty"`
+	OtherNames              []OtherNameApplyConfiguration                         `json:"otherNames,omitempty"`
+	EmailAddresses          []string                                              `json:"emailAddresses,omitempty"`
+	SecretName              *string                                               `json:"secretName,omitempty"`
+	SecretTemplate          *CertificateSecretTemplateApplyConfiguration          `json:"secretTemplate,omitempty"`
+	Keystores               *CertificateKeystoresApplyConfiguration               `json:"keystores,omitempty"`
+	IssuerRef               *apismetav1.ObjectReference                           `json:"issuerRef,omitempty"`
+	IsCA                    *bool                                                 `json:"isCA,omitempty"`
+	Usages                  []certmanagerv1.KeyUsage                              `json:"usages,omitempty"`
+	PrivateKey              *CertificatePrivateKeyApplyConfiguration              `json:"privateKey,omitempty"`
+	SignatureAlgorithm      *certmanagerv1.SignatureAlgorithm                     `json:"signatureAlgorithm,omitempty"`
+	EncodeUsagesInRequest   *bool                                                 `json:"encodeUsagesInRequest,omitempty"`
+	RevisionHistoryLimit    *int32                                                `json:"revisionHistoryLimit,omitempty"`
+	AdditionalOutputFormats []CertificateAdditionalOutputFormatApplyConfiguration `json:"additionalOutputFormats,omitempty"`
+	NameConstraints         *NameConstraintsApplyConfiguration                    `json:"nameConstraints,omitempty"`
+}
+
+// CertificateSpecApplyConfiguration constructs a declarative configuration of the CertificateSpec type for use with
+// apply.
+func CertificateSpec() *CertificateSpecApplyConfiguration {
+	return &CertificateSpecApplyConfiguration{}
+}
+
+// WithSubject sets the Subject field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Subject field is set to the value of the last call.
+func (b *CertificateSpecApplyConfiguration) WithSubject(value *X509SubjectApplyConfiguration) *CertificateSpecApplyConfiguration {
+	b.Subject = value
+	return b
+}
+
+// WithLiteralSubject sets the LiteralSubject field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the LiteralSubject field is set to the value of the last call.
+func (b *CertificateSpecApplyConfiguration) WithLiteralSubject(value string) *CertificateSpecApplyConfiguration {
+	b.LiteralSubject = &value
+	return b
+}
+
+// WithCommonName sets the CommonName field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the CommonName field is set to the value of the last call.
+func (b *CertificateSpecApplyConfiguration) WithCommonName(value string) *CertificateSpecApplyConfiguration {
+	b.CommonName = &value
+	return b
+}
+
+// WithDuration sets the Duration field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Duration field is set to the value of the last call.
+func (b *CertificateSpecApplyConfiguration) WithDuration(value metav1.Duration) *CertificateSpecApplyConfiguration {
+	b.Duration = &value
+	return b
+}
+
+// WithRenewBefore sets the RenewBefore field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the RenewBefore field is set to the value of the last call.
+func (b *CertificateSpecApplyConfiguration) WithRenewBefore(value metav1.Duration) *CertificateSpecApplyConfiguration {
+	b.RenewBefore = &value
+	return b
+}
+
+// WithRenewBeforePercentage sets the RenewBeforePercentage field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the RenewBeforePercentage field is set to the value of the last call.
+func (b *CertificateSpecApplyConfiguration) WithRenewBeforePercentage(value int32) *CertificateSpecApplyConfiguration {
+	b.RenewBeforePercentage = &value
+	return b
+}
+
+// WithDNSNames adds the given value to the DNSNames field in the declarative configuration
+// and returns the receiver, so that objects can be build by chaining "With" function invocations.
+// If called multiple times, values provided by each call will be appended to the DNSNames field.
+func (b *CertificateSpecApplyConfiguration) WithDNSNames(values ...string) *CertificateSpecApplyConfiguration {
+	for i := range values {
+		b.DNSNames = append(b.DNSNames, values[i])
+	}
+	return b
+}
+
+// WithIPAddresses adds the given value to the IPAddresses field in the declarative configuration
+// and returns the receiver, so that objects can be build by chaining "With" function invocations.
+// If called multiple times, values provided by each call will be appended to the IPAddresses field.
+func (b *CertificateSpecApplyConfiguration) WithIPAddresses(values ...string) *CertificateSpecApplyConfiguration {
+	for i := range values {
+		b.IPAddresses = append(b.IPAddresses, values[i])
+	}
+	return b
+}
+
+// WithURIs adds the given value to the URIs field in the declarative configuration
+// and returns the receiver, so that objects can be build by chaining "With" function invocations.
+// If called multiple times, values provided by each call will be appended to the URIs field.
+func (b *CertificateSpecApplyConfiguration) WithURIs(values ...string) *CertificateSpecApplyConfiguration {
+	for i := range values {
+		b.URIs = append(b.URIs, values[i])
+	}
+	return b
+}
+
+// WithOtherNames adds the given value to the OtherNames field in the declarative configuration
+// and returns the receiver, so that objects can be build by chaining "With" function invocations.
+// If called multiple times, values provided by each call will be appended to the OtherNames field.
+func (b *CertificateSpecApplyConfiguration) WithOtherNames(values ...*OtherNameApplyConfiguration) *CertificateSpecApplyConfiguration {
+	for i := range values {
+		if values[i] == nil {
+			panic("nil value passed to WithOtherNames")
+		}
+		b.OtherNames = append(b.OtherNames, *values[i])
+	}
+	return b
+}
+
+// WithEmailAddresses adds the given value to the EmailAddresses field in the declarative configuration
+// and returns the receiver, so that objects can be build by chaining "With" function invocations.
+// If called multiple times, values provided by each call will be appended to the EmailAddresses field.
+func (b *CertificateSpecApplyConfiguration) WithEmailAddresses(values ...string) *CertificateSpecApplyConfiguration {
+	for i := range values {
+		b.EmailAddresses = append(b.EmailAddresses, values[i])
+	}
+	return b
+}
+
+// WithSecretName sets the SecretName field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the SecretName field is set to the value of the last call.
+func (b *CertificateSpecApplyConfiguration) WithSecretName(value string) *CertificateSpecApplyConfiguration {
+	b.SecretName = &value
+	return b
+}
+
+// WithSecretTemplate sets the SecretTemplate field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the SecretTemplate field is set to the value of the last call.
+func (b *CertificateSpecApplyConfiguration) WithSecretTemplate(value *CertificateSecretTemplateApplyConfiguration) *CertificateSpecApplyConfiguration {
+	b.SecretTemplate = value
+	return b
+}
+
+// WithKeystores sets the Keystores field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Keystores field is set to the value of the last call.
+func (b *CertificateSpecApplyConfiguration) WithKeystores(value *CertificateKeystoresApplyConfiguration) *CertificateSpecApplyConfiguration {
+	b.Keystores = value
+	return b
+}
+
+// WithIssuerRef sets the IssuerRef field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the IssuerRef field is set to the value of the last call.
+func (b *CertificateSpecApplyConfiguration) WithIssuerRef(value apismetav1.ObjectReference) *CertificateSpecApplyConfiguration {
+	b.IssuerRef = &value
+	return b
+}
+
+// WithIsCA sets the IsCA field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the IsCA field is set to the value of the last call.
+func (b *CertificateSpecApplyConfiguration) WithIsCA(value bool) *CertificateSpecApplyConfiguration {
+	b.IsCA = &value
+	return b
+}
+
+// WithUsages adds the given value to the Usages field in the declarative configuration
+// and returns the receiver, so that objects can be build by chaining "With" function invocations.
+// If called multiple times, values provided by each call will be appended to the Usages field.
+func (b *CertificateSpecApplyConfiguration) WithUsages(values ...certmanagerv1.KeyUsage) *CertificateSpecApplyConfiguration {
+	for i := range values {
+		b.Usages = append(b.Usages, values[i])
+	}
+	return b
+}
+
+// WithPrivateKey sets the PrivateKey field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the PrivateKey field is set to the value of the last call.
+func (b *CertificateSpecApplyConfiguration) WithPrivateKey(value *CertificatePrivateKeyApplyConfiguration) *CertificateSpecApplyConfiguration {
+	b.PrivateKey = value
+	return b
+}
+
+// WithSignatureAlgorithm sets the SignatureAlgorithm field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the SignatureAlgorithm field is set to the value of the last call.
+func (b *CertificateSpecApplyConfiguration) WithSignatureAlgorithm(value certmanagerv1.SignatureAlgorithm) *CertificateSpecApplyConfiguration {
+	b.SignatureAlgorithm = &value
+	return b
+}
+
+// WithEncodeUsagesInRequest sets the EncodeUsagesInRequest field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the EncodeUsagesInRequest field is set to the value of the last call.
+func (b *CertificateSpecApplyConfiguration) WithEncodeUsagesInRequest(value bool) *CertificateSpecApplyConfiguration {
+	b.EncodeUsagesInRequest = &value
+	return b
+}
+
+// WithRevisionHistoryLimit sets the RevisionHistoryLimit field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the RevisionHistoryLimit field is set to the value of the last call.
+func (b *CertificateSpecApplyConfiguration) WithRevisionHistoryLimit(value int32) *CertificateSpecApplyConfiguration {
+	b.RevisionHistoryLimit = &value
+	return b
+}
+
+// WithAdditionalOutputFormats adds the given value to the AdditionalOutputFormats field in the declarative configuration
+// and returns the receiver, so that objects can be build by chaining "With" function invocations.
+// If called multiple times, values provided by each call will be appended to the AdditionalOutputFormats field.
+func (b *CertificateSpecApplyConfiguration) WithAdditionalOutputFormats(values ...*CertificateAdditionalOutputFormatApplyConfiguration) *CertificateSpecApplyConfiguration {
+	for i := range values {
+		if values[i] == nil {
+			panic("nil value passed to WithAdditionalOutputFormats")
+		}
+		b.AdditionalOutputFormats = append(b.AdditionalOutputFormats, *values[i])
+	}
+	return b
+}
+
+// WithNameConstraints sets the NameConstraints field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the NameConstraints field is set to the value of the last call.
+func (b *CertificateSpecApplyConfiguration) WithNameConstraints(value *NameConstraintsApplyConfiguration) *CertificateSpecApplyConfiguration {
+	b.NameConstraints = value
+	return b
+}
diff --git a/pkg/client/applyconfigurations/certmanager/v1/clusterissuer.go b/pkg/client/applyconfigurations/certmanager/v1/clusterissuer.go
new file mode 100644
index 00000000000..c77eba8e2b0
--- /dev/null
+++ b/pkg/client/applyconfigurations/certmanager/v1/clusterissuer.go
@@ -0,0 +1,224 @@
+/*
+Copyright The cert-manager Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+// Code generated by applyconfiguration-gen. DO NOT EDIT.
+
+package v1
+
+import (
+	apismetav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+	types "k8s.io/apimachinery/pkg/types"
+	metav1 "k8s.io/client-go/applyconfigurations/meta/v1"
+)
+
+// ClusterIssuerApplyConfiguration represents a declarative configuration of the ClusterIssuer type for use
+// with apply.
+type ClusterIssuerApplyConfiguration struct {
+	metav1.TypeMetaApplyConfiguration    `json:",inline"`
+	*metav1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
+	Spec                                 *IssuerSpecApplyConfiguration   `json:"spec,omitempty"`
+	Status                               *IssuerStatusApplyConfiguration `json:"status,omitempty"`
+}
+
+// ClusterIssuer constructs a declarative configuration of the ClusterIssuer type for use with
+// apply.
+func ClusterIssuer(name string) *ClusterIssuerApplyConfiguration {
+	b := &ClusterIssuerApplyConfiguration{}
+	b.WithName(name)
+	b.WithKind("ClusterIssuer")
+	b.WithAPIVersion("cert-manager.io/v1")
+	return b
+}
+
+// WithKind sets the Kind field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Kind field is set to the value of the last call.
+func (b *ClusterIssuerApplyConfiguration) WithKind(value string) *ClusterIssuerApplyConfiguration {
+	b.TypeMetaApplyConfiguration.Kind = &value
+	return b
+}
+
+// WithAPIVersion sets the APIVersion field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the APIVersion field is set to the value of the last call.
+func (b *ClusterIssuerApplyConfiguration) WithAPIVersion(value string) *ClusterIssuerApplyConfiguration {
+	b.TypeMetaApplyConfiguration.APIVersion = &value
+	return b
+}
+
+// WithName sets the Name field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Name field is set to the value of the last call.
+func (b *ClusterIssuerApplyConfiguration) WithName(value string) *ClusterIssuerApplyConfiguration {
+	b.ensureObjectMetaApplyConfigurationExists()
+	b.ObjectMetaApplyConfiguration.Name = &value
+	return b
+}
+
+// WithGenerateName sets the GenerateName field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the GenerateName field is set to the value of the last call.
+func (b *ClusterIssuerApplyConfiguration) WithGenerateName(value string) *ClusterIssuerApplyConfiguration {
+	b.ensureObjectMetaApplyConfigurationExists()
+	b.ObjectMetaApplyConfiguration.GenerateName = &value
+	return b
+}
+
+// WithNamespace sets the Namespace field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Namespace field is set to the value of the last call.
+func (b *ClusterIssuerApplyConfiguration) WithNamespace(value string) *ClusterIssuerApplyConfiguration {
+	b.ensureObjectMetaApplyConfigurationExists()
+	b.ObjectMetaApplyConfiguration.Namespace = &value
+	return b
+}
+
+// WithUID sets the UID field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the UID field is set to the value of the last call.
+func (b *ClusterIssuerApplyConfiguration) WithUID(value types.UID) *ClusterIssuerApplyConfiguration {
+	b.ensureObjectMetaApplyConfigurationExists()
+	b.ObjectMetaApplyConfiguration.UID = &value
+	return b
+}
+
+// WithResourceVersion sets the ResourceVersion field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the ResourceVersion field is set to the value of the last call.
+func (b *ClusterIssuerApplyConfiguration) WithResourceVersion(value string) *ClusterIssuerApplyConfiguration {
+	b.ensureObjectMetaApplyConfigurationExists()
+	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
+	return b
+}
+
+// WithGeneration sets the Generation field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Generation field is set to the value of the last call.
+func (b *ClusterIssuerApplyConfiguration) WithGeneration(value int64) *ClusterIssuerApplyConfiguration {
+	b.ensureObjectMetaApplyConfigurationExists()
+	b.ObjectMetaApplyConfiguration.Generation = &value
+	return b
+}
+
+// WithCreationTimestamp sets the CreationTimestamp field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the CreationTimestamp field is set to the value of the last call.
+func (b *ClusterIssuerApplyConfiguration) WithCreationTimestamp(value apismetav1.Time) *ClusterIssuerApplyConfiguration {
+	b.ensureObjectMetaApplyConfigurationExists()
+	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
+	return b
+}
+
+// WithDeletionTimestamp sets the DeletionTimestamp field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the DeletionTimestamp field is set to the value of the last call.
+func (b *ClusterIssuerApplyConfiguration) WithDeletionTimestamp(value apismetav1.Time) *ClusterIssuerApplyConfiguration {
+	b.ensureObjectMetaApplyConfigurationExists()
+	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
+	return b
+}
+
+// WithDeletionGracePeriodSeconds sets the DeletionGracePeriodSeconds field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
+func (b *ClusterIssuerApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *ClusterIssuerApplyConfiguration {
+	b.ensureObjectMetaApplyConfigurationExists()
+	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
+	return b
+}
+
+// WithLabels puts the entries into the Labels field in the declarative configuration
+// and returns the receiver, so that objects can be build by chaining "With" function invocations.
+// If called multiple times, the entries provided by each call will be put on the Labels field,
+// overwriting an existing map entries in Labels field with the same key.
+func (b *ClusterIssuerApplyConfiguration) WithLabels(entries map[string]string) *ClusterIssuerApplyConfiguration {
+	b.ensureObjectMetaApplyConfigurationExists()
+	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
+		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
+	}
+	for k, v := range entries {
+		b.ObjectMetaApplyConfiguration.Labels[k] = v
+	}
+	return b
+}
+
+// WithAnnotations puts the entries into the Annotations field in the declarative configuration
+// and returns the receiver, so that objects can be build by chaining "With" function invocations.
+// If called multiple times, the entries provided by each call will be put on the Annotations field,
+// overwriting an existing map entries in Annotations field with the same key.
+func (b *ClusterIssuerApplyConfiguration) WithAnnotations(entries map[string]string) *ClusterIssuerApplyConfiguration {
+	b.ensureObjectMetaApplyConfigurationExists()
+	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
+		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
+	}
+	for k, v := range entries {
+		b.ObjectMetaApplyConfiguration.Annotations[k] = v
+	}
+	return b
+}
+
+// WithOwnerReferences adds the given value to the OwnerReferences field in the declarative configuration
+// and returns the receiver, so that objects can be build by chaining "With" function invocations.
+// If called multiple times, values provided by each call will be appended to the OwnerReferences field.
+func (b *ClusterIssuerApplyConfiguration) WithOwnerReferences(values ...*metav1.OwnerReferenceApplyConfiguration) *ClusterIssuerApplyConfiguration {
+	b.ensureObjectMetaApplyConfigurationExists()
+	for i := range values {
+		if values[i] == nil {
+			panic("nil value passed to WithOwnerReferences")
+		}
+		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
+	}
+	return b
+}
+
+// WithFinalizers adds the given value to the Finalizers field in the declarative configuration
+// and returns the receiver, so that objects can be build by chaining "With" function invocations.
+// If called multiple times, values provided by each call will be appended to the Finalizers field.
+func (b *ClusterIssuerApplyConfiguration) WithFinalizers(values ...string) *ClusterIssuerApplyConfiguration {
+	b.ensureObjectMetaApplyConfigurationExists()
+	for i := range values {
+		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
+	}
+	return b
+}
+
+func (b *ClusterIssuerApplyConfiguration) ensureObjectMetaApplyConfigurationExists() {
+	if b.ObjectMetaApplyConfiguration == nil {
+		b.ObjectMetaApplyConfiguration = &metav1.ObjectMetaApplyConfiguration{}
+	}
+}
+
+// WithSpec sets the Spec field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Spec field is set to the value of the last call.
+func (b *ClusterIssuerApplyConfiguration) WithSpec(value *IssuerSpecApplyConfiguration) *ClusterIssuerApplyConfiguration {
+	b.Spec = value
+	return b
+}
+
+// WithStatus sets the Status field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Status field is set to the value of the last call.
+func (b *ClusterIssuerApplyConfiguration) WithStatus(value *IssuerStatusApplyConfiguration) *ClusterIssuerApplyConfiguration {
+	b.Status = value
+	return b
+}
+
+// GetName retrieves the value of the Name field in the declarative configuration.
+func (b *ClusterIssuerApplyConfiguration) GetName() *string {
+	b.ensureObjectMetaApplyConfigurationExists()
+	return b.ObjectMetaApplyConfiguration.Name
+}
diff --git a/pkg/client/applyconfigurations/certmanager/v1/issuer.go b/pkg/client/applyconfigurations/certmanager/v1/issuer.go
new file mode 100644
index 00000000000..bd88ed3e8df
--- /dev/null
+++ b/pkg/client/applyconfigurations/certmanager/v1/issuer.go
@@ -0,0 +1,225 @@
+/*
+Copyright The cert-manager Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+// Code generated by applyconfiguration-gen. DO NOT EDIT.
+
+package v1
+
+import (
+	apismetav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+	types "k8s.io/apimachinery/pkg/types"
+	metav1 "k8s.io/client-go/applyconfigurations/meta/v1"
+)
+
+// IssuerApplyConfiguration represents a declarative configuration of the Issuer type for use
+// with apply.
+type IssuerApplyConfiguration struct {
+	metav1.TypeMetaApplyConfiguration    `json:",inline"`
+	*metav1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
+	Spec                                 *IssuerSpecApplyConfiguration   `json:"spec,omitempty"`
+	Status                               *IssuerStatusApplyConfiguration `json:"status,omitempty"`
+}
+
+// Issuer constructs a declarative configuration of the Issuer type for use with
+// apply.
+func Issuer(name, namespace string) *IssuerApplyConfiguration {
+	b := &IssuerApplyConfiguration{}
+	b.WithName(name)
+	b.WithNamespace(namespace)
+	b.WithKind("Issuer")
+	b.WithAPIVersion("cert-manager.io/v1")
+	return b
+}
+
+// WithKind sets the Kind field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Kind field is set to the value of the last call.
+func (b *IssuerApplyConfiguration) WithKind(value string) *IssuerApplyConfiguration {
+	b.TypeMetaApplyConfiguration.Kind = &value
+	return b
+}
+
+// WithAPIVersion sets the APIVersion field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the APIVersion field is set to the value of the last call.
+func (b *IssuerApplyConfiguration) WithAPIVersion(value string) *IssuerApplyConfiguration {
+	b.TypeMetaApplyConfiguration.APIVersion = &value
+	return b
+}
+
+// WithName sets the Name field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Name field is set to the value of the last call.
+func (b *IssuerApplyConfiguration) WithName(value string) *IssuerApplyConfiguration {
+	b.ensureObjectMetaApplyConfigurationExists()
+	b.ObjectMetaApplyConfiguration.Name = &value
+	return b
+}
+
+// WithGenerateName sets the GenerateName field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the GenerateName field is set to the value of the last call.
+func (b *IssuerApplyConfiguration) WithGenerateName(value string) *IssuerApplyConfiguration {
+	b.ensureObjectMetaApplyConfigurationExists()
+	b.ObjectMetaApplyConfiguration.GenerateName = &value
+	return b
+}
+
+// WithNamespace sets the Namespace field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Namespace field is set to the value of the last call.
+func (b *IssuerApplyConfiguration) WithNamespace(value string) *IssuerApplyConfiguration {
+	b.ensureObjectMetaApplyConfigurationExists()
+	b.ObjectMetaApplyConfiguration.Namespace = &value
+	return b
+}
+
+// WithUID sets the UID field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the UID field is set to the value of the last call.
+func (b *IssuerApplyConfiguration) WithUID(value types.UID) *IssuerApplyConfiguration {
+	b.ensureObjectMetaApplyConfigurationExists()
+	b.ObjectMetaApplyConfiguration.UID = &value
+	return b
+}
+
+// WithResourceVersion sets the ResourceVersion field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the ResourceVersion field is set to the value of the last call.
+func (b *IssuerApplyConfiguration) WithResourceVersion(value string) *IssuerApplyConfiguration {
+	b.ensureObjectMetaApplyConfigurationExists()
+	b.ObjectMetaApplyConfiguration.ResourceVersion = &value
+	return b
+}
+
+// WithGeneration sets the Generation field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Generation field is set to the value of the last call.
+func (b *IssuerApplyConfiguration) WithGeneration(value int64) *IssuerApplyConfiguration {
+	b.ensureObjectMetaApplyConfigurationExists()
+	b.ObjectMetaApplyConfiguration.Generation = &value
+	return b
+}
+
+// WithCreationTimestamp sets the CreationTimestamp field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the CreationTimestamp field is set to the value of the last call.
+func (b *IssuerApplyConfiguration) WithCreationTimestamp(value apismetav1.Time) *IssuerApplyConfiguration {
+	b.ensureObjectMetaApplyConfigurationExists()
+	b.ObjectMetaApplyConfiguration.CreationTimestamp = &value
+	return b
+}
+
+// WithDeletionTimestamp sets the DeletionTimestamp field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the DeletionTimestamp field is set to the value of the last call.
+func (b *IssuerApplyConfiguration) WithDeletionTimestamp(value apismetav1.Time) *IssuerApplyConfiguration {
+	b.ensureObjectMetaApplyConfigurationExists()
+	b.ObjectMetaApplyConfiguration.DeletionTimestamp = &value
+	return b
+}
+
+// WithDeletionGracePeriodSeconds sets the DeletionGracePeriodSeconds field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call.
+func (b *IssuerApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *IssuerApplyConfiguration {
+	b.ensureObjectMetaApplyConfigurationExists()
+	b.ObjectMetaApplyConfiguration.DeletionGracePeriodSeconds = &value
+	return b
+}
+
+// WithLabels puts the entries into the Labels field in the declarative configuration
+// and returns the receiver, so that objects can be build by chaining "With" function invocations.
+// If called multiple times, the entries provided by each call will be put on the Labels field,
+// overwriting an existing map entries in Labels field with the same key.
+func (b *IssuerApplyConfiguration) WithLabels(entries map[string]string) *IssuerApplyConfiguration {
+	b.ensureObjectMetaApplyConfigurationExists()
+	if b.ObjectMetaApplyConfiguration.Labels == nil && len(entries) > 0 {
+		b.ObjectMetaApplyConfiguration.Labels = make(map[string]string, len(entries))
+	}
+	for k, v := range entries {
+		b.ObjectMetaApplyConfiguration.Labels[k] = v
+	}
+	return b
+}
+
+// WithAnnotations puts the entries into the Annotations field in the declarative configuration
+// and returns the receiver, so that objects can be build by chaining "With" function invocations.
+// If called multiple times, the entries provided by each call will be put on the Annotations field,
+// overwriting an existing map entries in Annotations field with the same key.
+func (b *IssuerApplyConfiguration) WithAnnotations(entries map[string]string) *IssuerApplyConfiguration {
+	b.ensureObjectMetaApplyConfigurationExists()
+	if b.ObjectMetaApplyConfiguration.Annotations == nil && len(entries) > 0 {
+		b.ObjectMetaApplyConfiguration.Annotations = make(map[string]string, len(entries))
+	}
+	for k, v := range entries {
+		b.ObjectMetaApplyConfiguration.Annotations[k] = v
+	}
+	return b
+}
+
+// WithOwnerReferences adds the given value to the OwnerReferences field in the declarative configuration
+// and returns the receiver, so that objects can be build by chaining "With" function invocations.
+// If called multiple times, values provided by each call will be appended to the OwnerReferences field.
+func (b *IssuerApplyConfiguration) WithOwnerReferences(values ...*metav1.OwnerReferenceApplyConfiguration) *IssuerApplyConfiguration {
+	b.ensureObjectMetaApplyConfigurationExists()
+	for i := range values {
+		if values[i] == nil {
+			panic("nil value passed to WithOwnerReferences")
+		}
+		b.ObjectMetaApplyConfiguration.OwnerReferences = append(b.ObjectMetaApplyConfiguration.OwnerReferences, *values[i])
+	}
+	return b
+}
+
+// WithFinalizers adds the given value to the Finalizers field in the declarative configuration
+// and returns the receiver, so that objects can be build by chaining "With" function invocations.
+// If called multiple times, values provided by each call will be appended to the Finalizers field.
+func (b *IssuerApplyConfiguration) WithFinalizers(values ...string) *IssuerApplyConfiguration {
+	b.ensureObjectMetaApplyConfigurationExists()
+	for i := range values {
+		b.ObjectMetaApplyConfiguration.Finalizers = append(b.ObjectMetaApplyConfiguration.Finalizers, values[i])
+	}
+	return b
+}
+
+func (b *IssuerApplyConfiguration) ensureObjectMetaApplyConfigurationExists() {
+	if b.ObjectMetaApplyConfiguration == nil {
+		b.ObjectMetaApplyConfiguration = &metav1.ObjectMetaApplyConfiguration{}
+	}
+}
+
+// WithSpec sets the Spec field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Spec field is set to the value of the last call.
+func (b *IssuerApplyConfiguration) WithSpec(value *IssuerSpecApplyConfiguration) *IssuerApplyConfiguration {
+	b.Spec = value
+	return b
+}
+
+// WithStatus sets the Status field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Status field is set to the value of the last call.
+func (b *IssuerApplyConfiguration) WithStatus(value *IssuerStatusApplyConfiguration) *IssuerApplyConfiguration {
+	b.Status = value
+	return b
+}
+
+// GetName retrieves the value of the Name field in the declarative configuration.
+func (b *IssuerApplyConfiguration) GetName() *string {
+	b.ensureObjectMetaApplyConfigurationExists()
+	return b.ObjectMetaApplyConfiguration.Name
+}
diff --git a/pkg/client/applyconfigurations/certmanager/v1/issuercondition.go b/pkg/client/applyconfigurations/certmanager/v1/issuercondition.go
new file mode 100644
index 00000000000..15791ab3f8a
--- /dev/null
+++ b/pkg/client/applyconfigurations/certmanager/v1/issuercondition.go
@@ -0,0 +1,90 @@
+/*
+Copyright The cert-manager Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+// Code generated by applyconfiguration-gen. DO NOT EDIT.
+
+package v1
+
+import (
+	certmanagerv1 "github.com/cert-manager/cert-manager/pkg/apis/certmanager/v1"
+	metav1 "github.com/cert-manager/cert-manager/pkg/apis/meta/v1"
+	apismetav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+)
+
+// IssuerConditionApplyConfiguration represents a declarative configuration of the IssuerCondition type for use
+// with apply.
+type IssuerConditionApplyConfiguration struct {
+	Type               *certmanagerv1.IssuerConditionType `json:"type,omitempty"`
+	Status             *metav1.ConditionStatus            `json:"status,omitempty"`
+	LastTransitionTime *apismetav1.Time                   `json:"lastTransitionTime,omitempty"`
+	Reason             *string                            `json:"reason,omitempty"`
+	Message            *string                            `json:"message,omitempty"`
+	ObservedGeneration *int64                             `json:"observedGeneration,omitempty"`
+}
+
+// IssuerConditionApplyConfiguration constructs a declarative configuration of the IssuerCondition type for use with
+// apply.
+func IssuerCondition() *IssuerConditionApplyConfiguration {
+	return &IssuerConditionApplyConfiguration{}
+}
+
+// WithType sets the Type field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Type field is set to the value of the last call.
+func (b *IssuerConditionApplyConfiguration) WithType(value certmanagerv1.IssuerConditionType) *IssuerConditionApplyConfiguration {
+	b.Type = &value
+	return b
+}
+
+// WithStatus sets the Status field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Status field is set to the value of the last call.
+func (b *IssuerConditionApplyConfiguration) WithStatus(value metav1.ConditionStatus) *IssuerConditionApplyConfiguration {
+	b.Status = &value
+	return b
+}
+
+// WithLastTransitionTime sets the LastTransitionTime field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the LastTransitionTime field is set to the value of the last call.
+func (b *IssuerConditionApplyConfiguration) WithLastTransitionTime(value apismetav1.Time) *IssuerConditionApplyConfiguration {
+	b.LastTransitionTime = &value
+	return b
+}
+
+// WithReason sets the Reason field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Reason field is set to the value of the last call.
+func (b *IssuerConditionApplyConfiguration) WithReason(value string) *IssuerConditionApplyConfiguration {
+	b.Reason = &value
+	return b
+}
+
+// WithMessage sets the Message field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Message field is set to the value of the last call.
+func (b *IssuerConditionApplyConfiguration) WithMessage(value string) *IssuerConditionApplyConfiguration {
+	b.Message = &value
+	return b
+}
+
+// WithObservedGeneration sets the ObservedGeneration field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the ObservedGeneration field is set to the value of the last call.
+func (b *IssuerConditionApplyConfiguration) WithObservedGeneration(value int64) *IssuerConditionApplyConfiguration {
+	b.ObservedGeneration = &value
+	return b
+}
diff --git a/pkg/client/applyconfigurations/certmanager/v1/issuerconfig.go b/pkg/client/applyconfigurations/certmanager/v1/issuerconfig.go
new file mode 100644
index 00000000000..85ddf8f3fd2
--- /dev/null
+++ b/pkg/client/applyconfigurations/certmanager/v1/issuerconfig.go
@@ -0,0 +1,79 @@
+/*
+Copyright The cert-manager Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+// Code generated by applyconfiguration-gen. DO NOT EDIT.
+
+package v1
+
+import (
+	acmev1 "github.com/cert-manager/cert-manager/pkg/client/applyconfigurations/acme/v1"
+)
+
+// IssuerConfigApplyConfiguration represents a declarative configuration of the IssuerConfig type for use
+// with apply.
+type IssuerConfigApplyConfiguration struct {
+	ACME       *acmev1.ACMEIssuerApplyConfiguration `json:"acme,omitempty"`
+	CA         *CAIssuerApplyConfiguration          `json:"ca,omitempty"`
+	Vault      *VaultIssuerApplyConfiguration       `json:"vault,omitempty"`
+	SelfSigned *SelfSignedIssuerApplyConfiguration  `json:"selfSigned,omitempty"`
+	Venafi     *VenafiIssuerApplyConfiguration      `json:"venafi,omitempty"`
+}
+
+// IssuerConfigApplyConfiguration constructs a declarative configuration of the IssuerConfig type for use with
+// apply.
+func IssuerConfig() *IssuerConfigApplyConfiguration {
+	return &IssuerConfigApplyConfiguration{}
+}
+
+// WithACME sets the ACME field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the ACME field is set to the value of the last call.
+func (b *IssuerConfigApplyConfiguration) WithACME(value *acmev1.ACMEIssuerApplyConfiguration) *IssuerConfigApplyConfiguration {
+	b.ACME = value
+	return b
+}
+
+// WithCA sets the CA field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the CA field is set to the value of the last call.
+func (b *IssuerConfigApplyConfiguration) WithCA(value *CAIssuerApplyConfiguration) *IssuerConfigApplyConfiguration {
+	b.CA = value
+	return b
+}
+
+// WithVault sets the Vault field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Vault field is set to the value of the last call.
+func (b *IssuerConfigApplyConfiguration) WithVault(value *VaultIssuerApplyConfiguration) *IssuerConfigApplyConfiguration {
+	b.Vault = value
+	return b
+}
+
+// WithSelfSigned sets the SelfSigned field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the SelfSigned field is set to the value of the last call.
+func (b *IssuerConfigApplyConfiguration) WithSelfSigned(value *SelfSignedIssuerApplyConfiguration) *IssuerConfigApplyConfiguration {
+	b.SelfSigned = value
+	return b
+}
+
+// WithVenafi sets the Venafi field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Venafi field is set to the value of the last call.
+func (b *IssuerConfigApplyConfiguration) WithVenafi(value *VenafiIssuerApplyConfiguration) *IssuerConfigApplyConfiguration {
+	b.Venafi = value
+	return b
+}
diff --git a/pkg/client/applyconfigurations/certmanager/v1/issuerspec.go b/pkg/client/applyconfigurations/certmanager/v1/issuerspec.go
new file mode 100644
index 00000000000..d9d1393be31
--- /dev/null
+++ b/pkg/client/applyconfigurations/certmanager/v1/issuerspec.go
@@ -0,0 +1,75 @@
+/*
+Copyright The cert-manager Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+// Code generated by applyconfiguration-gen. DO NOT EDIT.
+
+package v1
+
+import (
+	acmev1 "github.com/cert-manager/cert-manager/pkg/client/applyconfigurations/acme/v1"
+)
+
+// IssuerSpecApplyConfiguration represents a declarative configuration of the IssuerSpec type for use
+// with apply.
+type IssuerSpecApplyConfiguration struct {
+	IssuerConfigApplyConfiguration `json:",inline"`
+}
+
+// IssuerSpecApplyConfiguration constructs a declarative configuration of the IssuerSpec type for use with
+// apply.
+func IssuerSpec() *IssuerSpecApplyConfiguration {
+	return &IssuerSpecApplyConfiguration{}
+}
+
+// WithACME sets the ACME field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the ACME field is set to the value of the last call.
+func (b *IssuerSpecApplyConfiguration) WithACME(value *acmev1.ACMEIssuerApplyConfiguration) *IssuerSpecApplyConfiguration {
+	b.IssuerConfigApplyConfiguration.ACME = value
+	return b
+}
+
+// WithCA sets the CA field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the CA field is set to the value of the last call.
+func (b *IssuerSpecApplyConfiguration) WithCA(value *CAIssuerApplyConfiguration) *IssuerSpecApplyConfiguration {
+	b.IssuerConfigApplyConfiguration.CA = value
+	return b
+}
+
+// WithVault sets the Vault field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Vault field is set to the value of the last call.
+func (b *IssuerSpecApplyConfiguration) WithVault(value *VaultIssuerApplyConfiguration) *IssuerSpecApplyConfiguration {
+	b.IssuerConfigApplyConfiguration.Vault = value
+	return b
+}
+
+// WithSelfSigned sets the SelfSigned field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the SelfSigned field is set to the value of the last call.
+func (b *IssuerSpecApplyConfiguration) WithSelfSigned(value *SelfSignedIssuerApplyConfiguration) *IssuerSpecApplyConfiguration {
+	b.IssuerConfigApplyConfiguration.SelfSigned = value
+	return b
+}
+
+// WithVenafi sets the Venafi field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Venafi field is set to the value of the last call.
+func (b *IssuerSpecApplyConfiguration) WithVenafi(value *VenafiIssuerApplyConfiguration) *IssuerSpecApplyConfiguration {
+	b.IssuerConfigApplyConfiguration.Venafi = value
+	return b
+}
diff --git a/pkg/client/applyconfigurations/certmanager/v1/issuerstatus.go b/pkg/client/applyconfigurations/certmanager/v1/issuerstatus.go
new file mode 100644
index 00000000000..77a03fe8f3a
--- /dev/null
+++ b/pkg/client/applyconfigurations/certmanager/v1/issuerstatus.go
@@ -0,0 +1,57 @@
+/*
+Copyright The cert-manager Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+// Code generated by applyconfiguration-gen. DO NOT EDIT.
+
+package v1
+
+import (
+	acmev1 "github.com/cert-manager/cert-manager/pkg/client/applyconfigurations/acme/v1"
+)
+
+// IssuerStatusApplyConfiguration represents a declarative configuration of the IssuerStatus type for use
+// with apply.
+type IssuerStatusApplyConfiguration struct {
+	Conditions []IssuerConditionApplyConfiguration        `json:"conditions,omitempty"`
+	ACME       *acmev1.ACMEIssuerStatusApplyConfiguration `json:"acme,omitempty"`
+}
+
+// IssuerStatusApplyConfiguration constructs a declarative configuration of the IssuerStatus type for use with
+// apply.
+func IssuerStatus() *IssuerStatusApplyConfiguration {
+	return &IssuerStatusApplyConfiguration{}
+}
+
+// WithConditions adds the given value to the Conditions field in the declarative configuration
+// and returns the receiver, so that objects can be build by chaining "With" function invocations.
+// If called multiple times, values provided by each call will be appended to the Conditions field.
+func (b *IssuerStatusApplyConfiguration) WithConditions(values ...*IssuerConditionApplyConfiguration) *IssuerStatusApplyConfiguration {
+	for i := range values {
+		if values[i] == nil {
+			panic("nil value passed to WithConditions")
+		}
+		b.Conditions = append(b.Conditions, *values[i])
+	}
+	return b
+}
+
+// WithACME sets the ACME field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the ACME field is set to the value of the last call.
+func (b *IssuerStatusApplyConfiguration) WithACME(value *acmev1.ACMEIssuerStatusApplyConfiguration) *IssuerStatusApplyConfiguration {
+	b.ACME = value
+	return b
+}
diff --git a/pkg/client/applyconfigurations/certmanager/v1/jkskeystore.go b/pkg/client/applyconfigurations/certmanager/v1/jkskeystore.go
new file mode 100644
index 00000000000..316badd8b1f
--- /dev/null
+++ b/pkg/client/applyconfigurations/certmanager/v1/jkskeystore.go
@@ -0,0 +1,70 @@
+/*
+Copyright The cert-manager Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+// Code generated by applyconfiguration-gen. DO NOT EDIT.
+
+package v1
+
+import (
+	metav1 "github.com/cert-manager/cert-manager/pkg/apis/meta/v1"
+)
+
+// JKSKeystoreApplyConfiguration represents a declarative configuration of the JKSKeystore type for use
+// with apply.
+type JKSKeystoreApplyConfiguration struct {
+	Create            *bool                     `json:"create,omitempty"`
+	Alias             *string                   `json:"alias,omitempty"`
+	PasswordSecretRef *metav1.SecretKeySelector `json:"passwordSecretRef,omitempty"`
+	Password          *string                   `json:"password,omitempty"`
+}
+
+// JKSKeystoreApplyConfiguration constructs a declarative configuration of the JKSKeystore type for use with
+// apply.
+func JKSKeystore() *JKSKeystoreApplyConfiguration {
+	return &JKSKeystoreApplyConfiguration{}
+}
+
+// WithCreate sets the Create field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Create field is set to the value of the last call.
+func (b *JKSKeystoreApplyConfiguration) WithCreate(value bool) *JKSKeystoreApplyConfiguration {
+	b.Create = &value
+	return b
+}
+
+// WithAlias sets the Alias field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Alias field is set to the value of the last call.
+func (b *JKSKeystoreApplyConfiguration) WithAlias(value string) *JKSKeystoreApplyConfiguration {
+	b.Alias = &value
+	return b
+}
+
+// WithPasswordSecretRef sets the PasswordSecretRef field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the PasswordSecretRef field is set to the value of the last call.
+func (b *JKSKeystoreApplyConfiguration) WithPasswordSecretRef(value metav1.SecretKeySelector) *JKSKeystoreApplyConfiguration {
+	b.PasswordSecretRef = &value
+	return b
+}
+
+// WithPassword sets the Password field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Password field is set to the value of the last call.
+func (b *JKSKeystoreApplyConfiguration) WithPassword(value string) *JKSKeystoreApplyConfiguration {
+	b.Password = &value
+	return b
+}
diff --git a/pkg/client/applyconfigurations/certmanager/v1/nameconstraintitem.go b/pkg/client/applyconfigurations/certmanager/v1/nameconstraintitem.go
new file mode 100644
index 00000000000..f25f6beb071
--- /dev/null
+++ b/pkg/client/applyconfigurations/certmanager/v1/nameconstraintitem.go
@@ -0,0 +1,74 @@
+/*
+Copyright The cert-manager Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+// Code generated by applyconfiguration-gen. DO NOT EDIT.
+
+package v1
+
+// NameConstraintItemApplyConfiguration represents a declarative configuration of the NameConstraintItem type for use
+// with apply.
+type NameConstraintItemApplyConfiguration struct {
+	DNSDomains     []string `json:"dnsDomains,omitempty"`
+	IPRanges       []string `json:"ipRanges,omitempty"`
+	EmailAddresses []string `json:"emailAddresses,omitempty"`
+	URIDomains     []string `json:"uriDomains,omitempty"`
+}
+
+// NameConstraintItemApplyConfiguration constructs a declarative configuration of the NameConstraintItem type for use with
+// apply.
+func NameConstraintItem() *NameConstraintItemApplyConfiguration {
+	return &NameConstraintItemApplyConfiguration{}
+}
+
+// WithDNSDomains adds the given value to the DNSDomains field in the declarative configuration
+// and returns the receiver, so that objects can be build by chaining "With" function invocations.
+// If called multiple times, values provided by each call will be appended to the DNSDomains field.
+func (b *NameConstraintItemApplyConfiguration) WithDNSDomains(values ...string) *NameConstraintItemApplyConfiguration {
+	for i := range values {
+		b.DNSDomains = append(b.DNSDomains, values[i])
+	}
+	return b
+}
+
+// WithIPRanges adds the given value to the IPRanges field in the declarative configuration
+// and returns the receiver, so that objects can be build by chaining "With" function invocations.
+// If called multiple times, values provided by each call will be appended to the IPRanges field.
+func (b *NameConstraintItemApplyConfiguration) WithIPRanges(values ...string) *NameConstraintItemApplyConfiguration {
+	for i := range values {
+		b.IPRanges = append(b.IPRanges, values[i])
+	}
+	return b
+}
+
+// WithEmailAddresses adds the given value to the EmailAddresses field in the declarative configuration
+// and returns the receiver, so that objects can be build by chaining "With" function invocations.
+// If called multiple times, values provided by each call will be appended to the EmailAddresses field.
+func (b *NameConstraintItemApplyConfiguration) WithEmailAddresses(values ...string) *NameConstraintItemApplyConfiguration {
+	for i := range values {
+		b.EmailAddresses = append(b.EmailAddresses, values[i])
+	}
+	return b
+}
+
+// WithURIDomains adds the given value to the URIDomains field in the declarative configuration
+// and returns the receiver, so that objects can be build by chaining "With" function invocations.
+// If called multiple times, values provided by each call will be appended to the URIDomains field.
+func (b *NameConstraintItemApplyConfiguration) WithURIDomains(values ...string) *NameConstraintItemApplyConfiguration {
+	for i := range values {
+		b.URIDomains = append(b.URIDomains, values[i])
+	}
+	return b
+}
diff --git a/pkg/client/applyconfigurations/certmanager/v1/nameconstraints.go b/pkg/client/applyconfigurations/certmanager/v1/nameconstraints.go
new file mode 100644
index 00000000000..224676dcceb
--- /dev/null
+++ b/pkg/client/applyconfigurations/certmanager/v1/nameconstraints.go
@@ -0,0 +1,57 @@
+/*
+Copyright The cert-manager Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+// Code generated by applyconfiguration-gen. DO NOT EDIT.
+
+package v1
+
+// NameConstraintsApplyConfiguration represents a declarative configuration of the NameConstraints type for use
+// with apply.
+type NameConstraintsApplyConfiguration struct {
+	Critical  *bool                                 `json:"critical,omitempty"`
+	Permitted *NameConstraintItemApplyConfiguration `json:"permitted,omitempty"`
+	Excluded  *NameConstraintItemApplyConfiguration `json:"excluded,omitempty"`
+}
+
+// NameConstraintsApplyConfiguration constructs a declarative configuration of the NameConstraints type for use with
+// apply.
+func NameConstraints() *NameConstraintsApplyConfiguration {
+	return &NameConstraintsApplyConfiguration{}
+}
+
+// WithCritical sets the Critical field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Critical field is set to the value of the last call.
+func (b *NameConstraintsApplyConfiguration) WithCritical(value bool) *NameConstraintsApplyConfiguration {
+	b.Critical = &value
+	return b
+}
+
+// WithPermitted sets the Permitted field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Permitted field is set to the value of the last call.
+func (b *NameConstraintsApplyConfiguration) WithPermitted(value *NameConstraintItemApplyConfiguration) *NameConstraintsApplyConfiguration {
+	b.Permitted = value
+	return b
+}
+
+// WithExcluded sets the Excluded field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Excluded field is set to the value of the last call.
+func (b *NameConstraintsApplyConfiguration) WithExcluded(value *NameConstraintItemApplyConfiguration) *NameConstraintsApplyConfiguration {
+	b.Excluded = value
+	return b
+}
diff --git a/pkg/client/applyconfigurations/certmanager/v1/othername.go b/pkg/client/applyconfigurations/certmanager/v1/othername.go
new file mode 100644
index 00000000000..144422df052
--- /dev/null
+++ b/pkg/client/applyconfigurations/certmanager/v1/othername.go
@@ -0,0 +1,48 @@
+/*
+Copyright The cert-manager Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+// Code generated by applyconfiguration-gen. DO NOT EDIT.
+
+package v1
+
+// OtherNameApplyConfiguration represents a declarative configuration of the OtherName type for use
+// with apply.
+type OtherNameApplyConfiguration struct {
+	OID       *string `json:"oid,omitempty"`
+	UTF8Value *string `json:"utf8Value,omitempty"`
+}
+
+// OtherNameApplyConfiguration constructs a declarative configuration of the OtherName type for use with
+// apply.
+func OtherName() *OtherNameApplyConfiguration {
+	return &OtherNameApplyConfiguration{}
+}
+
+// WithOID sets the OID field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the OID field is set to the value of the last call.
+func (b *OtherNameApplyConfiguration) WithOID(value string) *OtherNameApplyConfiguration {
+	b.OID = &value
+	return b
+}
+
+// WithUTF8Value sets the UTF8Value field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the UTF8Value field is set to the value of the last call.
+func (b *OtherNameApplyConfiguration) WithUTF8Value(value string) *OtherNameApplyConfiguration {
+	b.UTF8Value = &value
+	return b
+}
diff --git a/pkg/client/applyconfigurations/certmanager/v1/pkcs12keystore.go b/pkg/client/applyconfigurations/certmanager/v1/pkcs12keystore.go
new file mode 100644
index 00000000000..f9845e729bc
--- /dev/null
+++ b/pkg/client/applyconfigurations/certmanager/v1/pkcs12keystore.go
@@ -0,0 +1,71 @@
+/*
+Copyright The cert-manager Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+// Code generated by applyconfiguration-gen. DO NOT EDIT.
+
+package v1
+
+import (
+	certmanagerv1 "github.com/cert-manager/cert-manager/pkg/apis/certmanager/v1"
+	metav1 "github.com/cert-manager/cert-manager/pkg/apis/meta/v1"
+)
+
+// PKCS12KeystoreApplyConfiguration represents a declarative configuration of the PKCS12Keystore type for use
+// with apply.
+type PKCS12KeystoreApplyConfiguration struct {
+	Create            *bool                        `json:"create,omitempty"`
+	Profile           *certmanagerv1.PKCS12Profile `json:"profile,omitempty"`
+	PasswordSecretRef *metav1.SecretKeySelector    `json:"passwordSecretRef,omitempty"`
+	Password          *string                      `json:"password,omitempty"`
+}
+
+// PKCS12KeystoreApplyConfiguration constructs a declarative configuration of the PKCS12Keystore type for use with
+// apply.
+func PKCS12Keystore() *PKCS12KeystoreApplyConfiguration {
+	return &PKCS12KeystoreApplyConfiguration{}
+}
+
+// WithCreate sets the Create field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Create field is set to the value of the last call.
+func (b *PKCS12KeystoreApplyConfiguration) WithCreate(value bool) *PKCS12KeystoreApplyConfiguration {
+	b.Create = &value
+	return b
+}
+
+// WithProfile sets the Profile field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Profile field is set to the value of the last call.
+func (b *PKCS12KeystoreApplyConfiguration) WithProfile(value certmanagerv1.PKCS12Profile) *PKCS12KeystoreApplyConfiguration {
+	b.Profile = &value
+	return b
+}
+
+// WithPasswordSecretRef sets the PasswordSecretRef field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the PasswordSecretRef field is set to the value of the last call.
+func (b *PKCS12KeystoreApplyConfiguration) WithPasswordSecretRef(value metav1.SecretKeySelector) *PKCS12KeystoreApplyConfiguration {
+	b.PasswordSecretRef = &value
+	return b
+}
+
+// WithPassword sets the Password field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Password field is set to the value of the last call.
+func (b *PKCS12KeystoreApplyConfiguration) WithPassword(value string) *PKCS12KeystoreApplyConfiguration {
+	b.Password = &value
+	return b
+}
diff --git a/pkg/client/applyconfigurations/certmanager/v1/selfsignedissuer.go b/pkg/client/applyconfigurations/certmanager/v1/selfsignedissuer.go
new file mode 100644
index 00000000000..936cb6c03db
--- /dev/null
+++ b/pkg/client/applyconfigurations/certmanager/v1/selfsignedissuer.go
@@ -0,0 +1,41 @@
+/*
+Copyright The cert-manager Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+// Code generated by applyconfiguration-gen. DO NOT EDIT.
+
+package v1
+
+// SelfSignedIssuerApplyConfiguration represents a declarative configuration of the SelfSignedIssuer type for use
+// with apply.
+type SelfSignedIssuerApplyConfiguration struct {
+	CRLDistributionPoints []string `json:"crlDistributionPoints,omitempty"`
+}
+
+// SelfSignedIssuerApplyConfiguration constructs a declarative configuration of the SelfSignedIssuer type for use with
+// apply.
+func SelfSignedIssuer() *SelfSignedIssuerApplyConfiguration {
+	return &SelfSignedIssuerApplyConfiguration{}
+}
+
+// WithCRLDistributionPoints adds the given value to the CRLDistributionPoints field in the declarative configuration
+// and returns the receiver, so that objects can be build by chaining "With" function invocations.
+// If called multiple times, values provided by each call will be appended to the CRLDistributionPoints field.
+func (b *SelfSignedIssuerApplyConfiguration) WithCRLDistributionPoints(values ...string) *SelfSignedIssuerApplyConfiguration {
+	for i := range values {
+		b.CRLDistributionPoints = append(b.CRLDistributionPoints, values[i])
+	}
+	return b
+}
diff --git a/pkg/client/applyconfigurations/certmanager/v1/serviceaccountref.go b/pkg/client/applyconfigurations/certmanager/v1/serviceaccountref.go
new file mode 100644
index 00000000000..b1fd4e84cb5
--- /dev/null
+++ b/pkg/client/applyconfigurations/certmanager/v1/serviceaccountref.go
@@ -0,0 +1,50 @@
+/*
+Copyright The cert-manager Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+// Code generated by applyconfiguration-gen. DO NOT EDIT.
+
+package v1
+
+// ServiceAccountRefApplyConfiguration represents a declarative configuration of the ServiceAccountRef type for use
+// with apply.
+type ServiceAccountRefApplyConfiguration struct {
+	Name           *string  `json:"name,omitempty"`
+	TokenAudiences []string `json:"audiences,omitempty"`
+}
+
+// ServiceAccountRefApplyConfiguration constructs a declarative configuration of the ServiceAccountRef type for use with
+// apply.
+func ServiceAccountRef() *ServiceAccountRefApplyConfiguration {
+	return &ServiceAccountRefApplyConfiguration{}
+}
+
+// WithName sets the Name field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Name field is set to the value of the last call.
+func (b *ServiceAccountRefApplyConfiguration) WithName(value string) *ServiceAccountRefApplyConfiguration {
+	b.Name = &value
+	return b
+}
+
+// WithTokenAudiences adds the given value to the TokenAudiences field in the declarative configuration
+// and returns the receiver, so that objects can be build by chaining "With" function invocations.
+// If called multiple times, values provided by each call will be appended to the TokenAudiences field.
+func (b *ServiceAccountRefApplyConfiguration) WithTokenAudiences(values ...string) *ServiceAccountRefApplyConfiguration {
+	for i := range values {
+		b.TokenAudiences = append(b.TokenAudiences, values[i])
+	}
+	return b
+}
diff --git a/pkg/client/applyconfigurations/certmanager/v1/vaultapprole.go b/pkg/client/applyconfigurations/certmanager/v1/vaultapprole.go
new file mode 100644
index 00000000000..673171bae1f
--- /dev/null
+++ b/pkg/client/applyconfigurations/certmanager/v1/vaultapprole.go
@@ -0,0 +1,61 @@
+/*
+Copyright The cert-manager Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+// Code generated by applyconfiguration-gen. DO NOT EDIT.
+
+package v1
+
+import (
+	metav1 "github.com/cert-manager/cert-manager/pkg/apis/meta/v1"
+)
+
+// VaultAppRoleApplyConfiguration represents a declarative configuration of the VaultAppRole type for use
+// with apply.
+type VaultAppRoleApplyConfiguration struct {
+	Path      *string                   `json:"path,omitempty"`
+	RoleId    *string                   `json:"roleId,omitempty"`
+	SecretRef *metav1.SecretKeySelector `json:"secretRef,omitempty"`
+}
+
+// VaultAppRoleApplyConfiguration constructs a declarative configuration of the VaultAppRole type for use with
+// apply.
+func VaultAppRole() *VaultAppRoleApplyConfiguration {
+	return &VaultAppRoleApplyConfiguration{}
+}
+
+// WithPath sets the Path field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Path field is set to the value of the last call.
+func (b *VaultAppRoleApplyConfiguration) WithPath(value string) *VaultAppRoleApplyConfiguration {
+	b.Path = &value
+	return b
+}
+
+// WithRoleId sets the RoleId field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the RoleId field is set to the value of the last call.
+func (b *VaultAppRoleApplyConfiguration) WithRoleId(value string) *VaultAppRoleApplyConfiguration {
+	b.RoleId = &value
+	return b
+}
+
+// WithSecretRef sets the SecretRef field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the SecretRef field is set to the value of the last call.
+func (b *VaultAppRoleApplyConfiguration) WithSecretRef(value metav1.SecretKeySelector) *VaultAppRoleApplyConfiguration {
+	b.SecretRef = &value
+	return b
+}
diff --git a/pkg/client/applyconfigurations/certmanager/v1/vaultauth.go b/pkg/client/applyconfigurations/certmanager/v1/vaultauth.go
new file mode 100644
index 00000000000..4ae0f3fc0da
--- /dev/null
+++ b/pkg/client/applyconfigurations/certmanager/v1/vaultauth.go
@@ -0,0 +1,70 @@
+/*
+Copyright The cert-manager Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+// Code generated by applyconfiguration-gen. DO NOT EDIT.
+
+package v1
+
+import (
+	metav1 "github.com/cert-manager/cert-manager/pkg/apis/meta/v1"
+)
+
+// VaultAuthApplyConfiguration represents a declarative configuration of the VaultAuth type for use
+// with apply.
+type VaultAuthApplyConfiguration struct {
+	TokenSecretRef    *metav1.SecretKeySelector                     `json:"tokenSecretRef,omitempty"`
+	AppRole           *VaultAppRoleApplyConfiguration               `json:"appRole,omitempty"`
+	ClientCertificate *VaultClientCertificateAuthApplyConfiguration `json:"clientCertificate,omitempty"`
+	Kubernetes        *VaultKubernetesAuthApplyConfiguration        `json:"kubernetes,omitempty"`
+}
+
+// VaultAuthApplyConfiguration constructs a declarative configuration of the VaultAuth type for use with
+// apply.
+func VaultAuth() *VaultAuthApplyConfiguration {
+	return &VaultAuthApplyConfiguration{}
+}
+
+// WithTokenSecretRef sets the TokenSecretRef field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the TokenSecretRef field is set to the value of the last call.
+func (b *VaultAuthApplyConfiguration) WithTokenSecretRef(value metav1.SecretKeySelector) *VaultAuthApplyConfiguration {
+	b.TokenSecretRef = &value
+	return b
+}
+
+// WithAppRole sets the AppRole field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the AppRole field is set to the value of the last call.
+func (b *VaultAuthApplyConfiguration) WithAppRole(value *VaultAppRoleApplyConfiguration) *VaultAuthApplyConfiguration {
+	b.AppRole = value
+	return b
+}
+
+// WithClientCertificate sets the ClientCertificate field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the ClientCertificate field is set to the value of the last call.
+func (b *VaultAuthApplyConfiguration) WithClientCertificate(value *VaultClientCertificateAuthApplyConfiguration) *VaultAuthApplyConfiguration {
+	b.ClientCertificate = value
+	return b
+}
+
+// WithKubernetes sets the Kubernetes field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Kubernetes field is set to the value of the last call.
+func (b *VaultAuthApplyConfiguration) WithKubernetes(value *VaultKubernetesAuthApplyConfiguration) *VaultAuthApplyConfiguration {
+	b.Kubernetes = value
+	return b
+}
diff --git a/pkg/client/applyconfigurations/certmanager/v1/vaultclientcertificateauth.go b/pkg/client/applyconfigurations/certmanager/v1/vaultclientcertificateauth.go
new file mode 100644
index 00000000000..93e9ff9baee
--- /dev/null
+++ b/pkg/client/applyconfigurations/certmanager/v1/vaultclientcertificateauth.go
@@ -0,0 +1,57 @@
+/*
+Copyright The cert-manager Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+// Code generated by applyconfiguration-gen. DO NOT EDIT.
+
+package v1
+
+// VaultClientCertificateAuthApplyConfiguration represents a declarative configuration of the VaultClientCertificateAuth type for use
+// with apply.
+type VaultClientCertificateAuthApplyConfiguration struct {
+	Path       *string `json:"mountPath,omitempty"`
+	SecretName *string `json:"secretName,omitempty"`
+	Name       *string `json:"name,omitempty"`
+}
+
+// VaultClientCertificateAuthApplyConfiguration constructs a declarative configuration of the VaultClientCertificateAuth type for use with
+// apply.
+func VaultClientCertificateAuth() *VaultClientCertificateAuthApplyConfiguration {
+	return &VaultClientCertificateAuthApplyConfiguration{}
+}
+
+// WithPath sets the Path field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Path field is set to the value of the last call.
+func (b *VaultClientCertificateAuthApplyConfiguration) WithPath(value string) *VaultClientCertificateAuthApplyConfiguration {
+	b.Path = &value
+	return b
+}
+
+// WithSecretName sets the SecretName field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the SecretName field is set to the value of the last call.
+func (b *VaultClientCertificateAuthApplyConfiguration) WithSecretName(value string) *VaultClientCertificateAuthApplyConfiguration {
+	b.SecretName = &value
+	return b
+}
+
+// WithName sets the Name field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Name field is set to the value of the last call.
+func (b *VaultClientCertificateAuthApplyConfiguration) WithName(value string) *VaultClientCertificateAuthApplyConfiguration {
+	b.Name = &value
+	return b
+}
diff --git a/pkg/client/applyconfigurations/certmanager/v1/vaultissuer.go b/pkg/client/applyconfigurations/certmanager/v1/vaultissuer.go
new file mode 100644
index 00000000000..b336e9660b1
--- /dev/null
+++ b/pkg/client/applyconfigurations/certmanager/v1/vaultissuer.go
@@ -0,0 +1,117 @@
+/*
+Copyright The cert-manager Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+// Code generated by applyconfiguration-gen. DO NOT EDIT.
+
+package v1
+
+import (
+	metav1 "github.com/cert-manager/cert-manager/pkg/apis/meta/v1"
+)
+
+// VaultIssuerApplyConfiguration represents a declarative configuration of the VaultIssuer type for use
+// with apply.
+type VaultIssuerApplyConfiguration struct {
+	Auth                *VaultAuthApplyConfiguration `json:"auth,omitempty"`
+	Server              *string                      `json:"server,omitempty"`
+	ServerName          *string                      `json:"serverName,omitempty"`
+	Path                *string                      `json:"path,omitempty"`
+	Namespace           *string                      `json:"namespace,omitempty"`
+	CABundle            []byte                       `json:"caBundle,omitempty"`
+	CABundleSecretRef   *metav1.SecretKeySelector    `json:"caBundleSecretRef,omitempty"`
+	ClientCertSecretRef *metav1.SecretKeySelector    `json:"clientCertSecretRef,omitempty"`
+	ClientKeySecretRef  *metav1.SecretKeySelector    `json:"clientKeySecretRef,omitempty"`
+}
+
+// VaultIssuerApplyConfiguration constructs a declarative configuration of the VaultIssuer type for use with
+// apply.
+func VaultIssuer() *VaultIssuerApplyConfiguration {
+	return &VaultIssuerApplyConfiguration{}
+}
+
+// WithAuth sets the Auth field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Auth field is set to the value of the last call.
+func (b *VaultIssuerApplyConfiguration) WithAuth(value *VaultAuthApplyConfiguration) *VaultIssuerApplyConfiguration {
+	b.Auth = value
+	return b
+}
+
+// WithServer sets the Server field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Server field is set to the value of the last call.
+func (b *VaultIssuerApplyConfiguration) WithServer(value string) *VaultIssuerApplyConfiguration {
+	b.Server = &value
+	return b
+}
+
+// WithServerName sets the ServerName field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the ServerName field is set to the value of the last call.
+func (b *VaultIssuerApplyConfiguration) WithServerName(value string) *VaultIssuerApplyConfiguration {
+	b.ServerName = &value
+	return b
+}
+
+// WithPath sets the Path field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Path field is set to the value of the last call.
+func (b *VaultIssuerApplyConfiguration) WithPath(value string) *VaultIssuerApplyConfiguration {
+	b.Path = &value
+	return b
+}
+
+// WithNamespace sets the Namespace field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Namespace field is set to the value of the last call.
+func (b *VaultIssuerApplyConfiguration) WithNamespace(value string) *VaultIssuerApplyConfiguration {
+	b.Namespace = &value
+	return b
+}
+
+// WithCABundle adds the given value to the CABundle field in the declarative configuration
+// and returns the receiver, so that objects can be build by chaining "With" function invocations.
+// If called multiple times, values provided by each call will be appended to the CABundle field.
+func (b *VaultIssuerApplyConfiguration) WithCABundle(values ...byte) *VaultIssuerApplyConfiguration {
+	for i := range values {
+		b.CABundle = append(b.CABundle, values[i])
+	}
+	return b
+}
+
+// WithCABundleSecretRef sets the CABundleSecretRef field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the CABundleSecretRef field is set to the value of the last call.
+func (b *VaultIssuerApplyConfiguration) WithCABundleSecretRef(value metav1.SecretKeySelector) *VaultIssuerApplyConfiguration {
+	b.CABundleSecretRef = &value
+	return b
+}
+
+// WithClientCertSecretRef sets the ClientCertSecretRef field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the ClientCertSecretRef field is set to the value of the last call.
+func (b *VaultIssuerApplyConfiguration) WithClientCertSecretRef(value metav1.SecretKeySelector) *VaultIssuerApplyConfiguration {
+	b.ClientCertSecretRef = &value
+	return b
+}
+
+// WithClientKeySecretRef sets the ClientKeySecretRef field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the ClientKeySecretRef field is set to the value of the last call.
+func (b *VaultIssuerApplyConfiguration) WithClientKeySecretRef(value metav1.SecretKeySelector) *VaultIssuerApplyConfiguration {
+	b.ClientKeySecretRef = &value
+	return b
+}
diff --git a/pkg/client/applyconfigurations/certmanager/v1/vaultkubernetesauth.go b/pkg/client/applyconfigurations/certmanager/v1/vaultkubernetesauth.go
new file mode 100644
index 00000000000..d6c66ae7cb4
--- /dev/null
+++ b/pkg/client/applyconfigurations/certmanager/v1/vaultkubernetesauth.go
@@ -0,0 +1,70 @@
+/*
+Copyright The cert-manager Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+// Code generated by applyconfiguration-gen. DO NOT EDIT.
+
+package v1
+
+import (
+	metav1 "github.com/cert-manager/cert-manager/pkg/apis/meta/v1"
+)
+
+// VaultKubernetesAuthApplyConfiguration represents a declarative configuration of the VaultKubernetesAuth type for use
+// with apply.
+type VaultKubernetesAuthApplyConfiguration struct {
+	Path              *string                              `json:"mountPath,omitempty"`
+	SecretRef         *metav1.SecretKeySelector            `json:"secretRef,omitempty"`
+	ServiceAccountRef *ServiceAccountRefApplyConfiguration `json:"serviceAccountRef,omitempty"`
+	Role              *string                              `json:"role,omitempty"`
+}
+
+// VaultKubernetesAuthApplyConfiguration constructs a declarative configuration of the VaultKubernetesAuth type for use with
+// apply.
+func VaultKubernetesAuth() *VaultKubernetesAuthApplyConfiguration {
+	return &VaultKubernetesAuthApplyConfiguration{}
+}
+
+// WithPath sets the Path field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Path field is set to the value of the last call.
+func (b *VaultKubernetesAuthApplyConfiguration) WithPath(value string) *VaultKubernetesAuthApplyConfiguration {
+	b.Path = &value
+	return b
+}
+
+// WithSecretRef sets the SecretRef field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the SecretRef field is set to the value of the last call.
+func (b *VaultKubernetesAuthApplyConfiguration) WithSecretRef(value metav1.SecretKeySelector) *VaultKubernetesAuthApplyConfiguration {
+	b.SecretRef = &value
+	return b
+}
+
+// WithServiceAccountRef sets the ServiceAccountRef field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the ServiceAccountRef field is set to the value of the last call.
+func (b *VaultKubernetesAuthApplyConfiguration) WithServiceAccountRef(value *ServiceAccountRefApplyConfiguration) *VaultKubernetesAuthApplyConfiguration {
+	b.ServiceAccountRef = value
+	return b
+}
+
+// WithRole sets the Role field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Role field is set to the value of the last call.
+func (b *VaultKubernetesAuthApplyConfiguration) WithRole(value string) *VaultKubernetesAuthApplyConfiguration {
+	b.Role = &value
+	return b
+}
diff --git a/pkg/client/applyconfigurations/certmanager/v1/venaficloud.go b/pkg/client/applyconfigurations/certmanager/v1/venaficloud.go
new file mode 100644
index 00000000000..a5e40ec8fbf
--- /dev/null
+++ b/pkg/client/applyconfigurations/certmanager/v1/venaficloud.go
@@ -0,0 +1,52 @@
+/*
+Copyright The cert-manager Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+// Code generated by applyconfiguration-gen. DO NOT EDIT.
+
+package v1
+
+import (
+	metav1 "github.com/cert-manager/cert-manager/pkg/apis/meta/v1"
+)
+
+// VenafiCloudApplyConfiguration represents a declarative configuration of the VenafiCloud type for use
+// with apply.
+type VenafiCloudApplyConfiguration struct {
+	URL               *string                   `json:"url,omitempty"`
+	APITokenSecretRef *metav1.SecretKeySelector `json:"apiTokenSecretRef,omitempty"`
+}
+
+// VenafiCloudApplyConfiguration constructs a declarative configuration of the VenafiCloud type for use with
+// apply.
+func VenafiCloud() *VenafiCloudApplyConfiguration {
+	return &VenafiCloudApplyConfiguration{}
+}
+
+// WithURL sets the URL field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the URL field is set to the value of the last call.
+func (b *VenafiCloudApplyConfiguration) WithURL(value string) *VenafiCloudApplyConfiguration {
+	b.URL = &value
+	return b
+}
+
+// WithAPITokenSecretRef sets the APITokenSecretRef field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the APITokenSecretRef field is set to the value of the last call.
+func (b *VenafiCloudApplyConfiguration) WithAPITokenSecretRef(value metav1.SecretKeySelector) *VenafiCloudApplyConfiguration {
+	b.APITokenSecretRef = &value
+	return b
+}
diff --git a/pkg/client/applyconfigurations/certmanager/v1/venafiissuer.go b/pkg/client/applyconfigurations/certmanager/v1/venafiissuer.go
new file mode 100644
index 00000000000..90132ae636c
--- /dev/null
+++ b/pkg/client/applyconfigurations/certmanager/v1/venafiissuer.go
@@ -0,0 +1,57 @@
+/*
+Copyright The cert-manager Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+// Code generated by applyconfiguration-gen. DO NOT EDIT.
+
+package v1
+
+// VenafiIssuerApplyConfiguration represents a declarative configuration of the VenafiIssuer type for use
+// with apply.
+type VenafiIssuerApplyConfiguration struct {
+	Zone  *string                        `json:"zone,omitempty"`
+	TPP   *VenafiTPPApplyConfiguration   `json:"tpp,omitempty"`
+	Cloud *VenafiCloudApplyConfiguration `json:"cloud,omitempty"`
+}
+
+// VenafiIssuerApplyConfiguration constructs a declarative configuration of the VenafiIssuer type for use with
+// apply.
+func VenafiIssuer() *VenafiIssuerApplyConfiguration {
+	return &VenafiIssuerApplyConfiguration{}
+}
+
+// WithZone sets the Zone field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Zone field is set to the value of the last call.
+func (b *VenafiIssuerApplyConfiguration) WithZone(value string) *VenafiIssuerApplyConfiguration {
+	b.Zone = &value
+	return b
+}
+
+// WithTPP sets the TPP field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the TPP field is set to the value of the last call.
+func (b *VenafiIssuerApplyConfiguration) WithTPP(value *VenafiTPPApplyConfiguration) *VenafiIssuerApplyConfiguration {
+	b.TPP = value
+	return b
+}
+
+// WithCloud sets the Cloud field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Cloud field is set to the value of the last call.
+func (b *VenafiIssuerApplyConfiguration) WithCloud(value *VenafiCloudApplyConfiguration) *VenafiIssuerApplyConfiguration {
+	b.Cloud = value
+	return b
+}
diff --git a/pkg/client/applyconfigurations/certmanager/v1/venafitpp.go b/pkg/client/applyconfigurations/certmanager/v1/venafitpp.go
new file mode 100644
index 00000000000..4a9fc629159
--- /dev/null
+++ b/pkg/client/applyconfigurations/certmanager/v1/venafitpp.go
@@ -0,0 +1,72 @@
+/*
+Copyright The cert-manager Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+// Code generated by applyconfiguration-gen. DO NOT EDIT.
+
+package v1
+
+import (
+	metav1 "github.com/cert-manager/cert-manager/pkg/apis/meta/v1"
+)
+
+// VenafiTPPApplyConfiguration represents a declarative configuration of the VenafiTPP type for use
+// with apply.
+type VenafiTPPApplyConfiguration struct {
+	URL               *string                      `json:"url,omitempty"`
+	CredentialsRef    *metav1.LocalObjectReference `json:"credentialsRef,omitempty"`
+	CABundle          []byte                       `json:"caBundle,omitempty"`
+	CABundleSecretRef *metav1.SecretKeySelector    `json:"caBundleSecretRef,omitempty"`
+}
+
+// VenafiTPPApplyConfiguration constructs a declarative configuration of the VenafiTPP type for use with
+// apply.
+func VenafiTPP() *VenafiTPPApplyConfiguration {
+	return &VenafiTPPApplyConfiguration{}
+}
+
+// WithURL sets the URL field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the URL field is set to the value of the last call.
+func (b *VenafiTPPApplyConfiguration) WithURL(value string) *VenafiTPPApplyConfiguration {
+	b.URL = &value
+	return b
+}
+
+// WithCredentialsRef sets the CredentialsRef field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the CredentialsRef field is set to the value of the last call.
+func (b *VenafiTPPApplyConfiguration) WithCredentialsRef(value metav1.LocalObjectReference) *VenafiTPPApplyConfiguration {
+	b.CredentialsRef = &value
+	return b
+}
+
+// WithCABundle adds the given value to the CABundle field in the declarative configuration
+// and returns the receiver, so that objects can be build by chaining "With" function invocations.
+// If called multiple times, values provided by each call will be appended to the CABundle field.
+func (b *VenafiTPPApplyConfiguration) WithCABundle(values ...byte) *VenafiTPPApplyConfiguration {
+	for i := range values {
+		b.CABundle = append(b.CABundle, values[i])
+	}
+	return b
+}
+
+// WithCABundleSecretRef sets the CABundleSecretRef field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the CABundleSecretRef field is set to the value of the last call.
+func (b *VenafiTPPApplyConfiguration) WithCABundleSecretRef(value metav1.SecretKeySelector) *VenafiTPPApplyConfiguration {
+	b.CABundleSecretRef = &value
+	return b
+}
diff --git a/pkg/client/applyconfigurations/certmanager/v1/x509subject.go b/pkg/client/applyconfigurations/certmanager/v1/x509subject.go
new file mode 100644
index 00000000000..9cae41f8468
--- /dev/null
+++ b/pkg/client/applyconfigurations/certmanager/v1/x509subject.go
@@ -0,0 +1,116 @@
+/*
+Copyright The cert-manager Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+// Code generated by applyconfiguration-gen. DO NOT EDIT.
+
+package v1
+
+// X509SubjectApplyConfiguration represents a declarative configuration of the X509Subject type for use
+// with apply.
+type X509SubjectApplyConfiguration struct {
+	Organizations       []string `json:"organizations,omitempty"`
+	Countries           []string `json:"countries,omitempty"`
+	OrganizationalUnits []string `json:"organizationalUnits,omitempty"`
+	Localities          []string `json:"localities,omitempty"`
+	Provinces           []string `json:"provinces,omitempty"`
+	StreetAddresses     []string `json:"streetAddresses,omitempty"`
+	PostalCodes         []string `json:"postalCodes,omitempty"`
+	SerialNumber        *string  `json:"serialNumber,omitempty"`
+}
+
+// X509SubjectApplyConfiguration constructs a declarative configuration of the X509Subject type for use with
+// apply.
+func X509Subject() *X509SubjectApplyConfiguration {
+	return &X509SubjectApplyConfiguration{}
+}
+
+// WithOrganizations adds the given value to the Organizations field in the declarative configuration
+// and returns the receiver, so that objects can be build by chaining "With" function invocations.
+// If called multiple times, values provided by each call will be appended to the Organizations field.
+func (b *X509SubjectApplyConfiguration) WithOrganizations(values ...string) *X509SubjectApplyConfiguration {
+	for i := range values {
+		b.Organizations = append(b.Organizations, values[i])
+	}
+	return b
+}
+
+// WithCountries adds the given value to the Countries field in the declarative configuration
+// and returns the receiver, so that objects can be build by chaining "With" function invocations.
+// If called multiple times, values provided by each call will be appended to the Countries field.
+func (b *X509SubjectApplyConfiguration) WithCountries(values ...string) *X509SubjectApplyConfiguration {
+	for i := range values {
+		b.Countries = append(b.Countries, values[i])
+	}
+	return b
+}
+
+// WithOrganizationalUnits adds the given value to the OrganizationalUnits field in the declarative configuration
+// and returns the receiver, so that objects can be build by chaining "With" function invocations.
+// If called multiple times, values provided by each call will be appended to the OrganizationalUnits field.
+func (b *X509SubjectApplyConfiguration) WithOrganizationalUnits(values ...string) *X509SubjectApplyConfiguration {
+	for i := range values {
+		b.OrganizationalUnits = append(b.OrganizationalUnits, values[i])
+	}
+	return b
+}
+
+// WithLocalities adds the given value to the Localities field in the declarative configuration
+// and returns the receiver, so that objects can be build by chaining "With" function invocations.
+// If called multiple times, values provided by each call will be appended to the Localities field.
+func (b *X509SubjectApplyConfiguration) WithLocalities(values ...string) *X509SubjectApplyConfiguration {
+	for i := range values {
+		b.Localities = append(b.Localities, values[i])
+	}
+	return b
+}
+
+// WithProvinces adds the given value to the Provinces field in the declarative configuration
+// and returns the receiver, so that objects can be build by chaining "With" function invocations.
+// If called multiple times, values provided by each call will be appended to the Provinces field.
+func (b *X509SubjectApplyConfiguration) WithProvinces(values ...string) *X509SubjectApplyConfiguration {
+	for i := range values {
+		b.Provinces = append(b.Provinces, values[i])
+	}
+	return b
+}
+
+// WithStreetAddresses adds the given value to the StreetAddresses field in the declarative configuration
+// and returns the receiver, so that objects can be build by chaining "With" function invocations.
+// If called multiple times, values provided by each call will be appended to the StreetAddresses field.
+func (b *X509SubjectApplyConfiguration) WithStreetAddresses(values ...string) *X509SubjectApplyConfiguration {
+	for i := range values {
+		b.StreetAddresses = append(b.StreetAddresses, values[i])
+	}
+	return b
+}
+
+// WithPostalCodes adds the given value to the PostalCodes field in the declarative configuration
+// and returns the receiver, so that objects can be build by chaining "With" function invocations.
+// If called multiple times, values provided by each call will be appended to the PostalCodes field.
+func (b *X509SubjectApplyConfiguration) WithPostalCodes(values ...string) *X509SubjectApplyConfiguration {
+	for i := range values {
+		b.PostalCodes = append(b.PostalCodes, values[i])
+	}
+	return b
+}
+
+// WithSerialNumber sets the SerialNumber field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the SerialNumber field is set to the value of the last call.
+func (b *X509SubjectApplyConfiguration) WithSerialNumber(value string) *X509SubjectApplyConfiguration {
+	b.SerialNumber = &value
+	return b
+}
diff --git a/pkg/client/applyconfigurations/internal/internal.go b/pkg/client/applyconfigurations/internal/internal.go
new file mode 100644
index 00000000000..be04f91ac4b
--- /dev/null
+++ b/pkg/client/applyconfigurations/internal/internal.go
@@ -0,0 +1,62 @@
+/*
+Copyright The cert-manager Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+// Code generated by applyconfiguration-gen. DO NOT EDIT.
+
+package internal
+
+import (
+	fmt "fmt"
+	sync "sync"
+
+	typed "sigs.k8s.io/structured-merge-diff/v4/typed"
+)
+
+func Parser() *typed.Parser {
+	parserOnce.Do(func() {
+		var err error
+		parser, err = typed.NewParser(schemaYAML)
+		if err != nil {
+			panic(fmt.Sprintf("Failed to parse schema: %v", err))
+		}
+	})
+	return parser
+}
+
+var parserOnce sync.Once
+var parser *typed.Parser
+var schemaYAML = typed.YAMLObject(`types:
+- name: __untyped_atomic_
+  scalar: untyped
+  list:
+    elementType:
+      namedType: __untyped_atomic_
+    elementRelationship: atomic
+  map:
+    elementType:
+      namedType: __untyped_atomic_
+    elementRelationship: atomic
+- name: __untyped_deduced_
+  scalar: untyped
+  list:
+    elementType:
+      namedType: __untyped_atomic_
+    elementRelationship: atomic
+  map:
+    elementType:
+      namedType: __untyped_deduced_
+    elementRelationship: separable
+`)
diff --git a/pkg/client/applyconfigurations/utils.go b/pkg/client/applyconfigurations/utils.go
new file mode 100644
index 00000000000..5acbafc10bd
--- /dev/null
+++ b/pkg/client/applyconfigurations/utils.go
@@ -0,0 +1,188 @@
+/*
+Copyright The cert-manager Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+// Code generated by applyconfiguration-gen. DO NOT EDIT.
+
+package applyconfigurations
+
+import (
+	v1 "github.com/cert-manager/cert-manager/pkg/apis/acme/v1"
+	certmanagerv1 "github.com/cert-manager/cert-manager/pkg/apis/certmanager/v1"
+	acmev1 "github.com/cert-manager/cert-manager/pkg/client/applyconfigurations/acme/v1"
+	applyconfigurationscertmanagerv1 "github.com/cert-manager/cert-manager/pkg/client/applyconfigurations/certmanager/v1"
+	internal "github.com/cert-manager/cert-manager/pkg/client/applyconfigurations/internal"
+	runtime "k8s.io/apimachinery/pkg/runtime"
+	schema "k8s.io/apimachinery/pkg/runtime/schema"
+	testing "k8s.io/client-go/testing"
+)
+
+// ForKind returns an apply configuration type for the given GroupVersionKind, or nil if no
+// apply configuration type exists for the given GroupVersionKind.
+func ForKind(kind schema.GroupVersionKind) interface{} {
+	switch kind {
+	// Group=acme.cert-manager.io, Version=v1
+	case v1.SchemeGroupVersion.WithKind("ACMEAuthorization"):
+		return &acmev1.ACMEAuthorizationApplyConfiguration{}
+	case v1.SchemeGroupVersion.WithKind("ACMEChallenge"):
+		return &acmev1.ACMEChallengeApplyConfiguration{}
+	case v1.SchemeGroupVersion.WithKind("ACMEChallengeSolver"):
+		return &acmev1.ACMEChallengeSolverApplyConfiguration{}
+	case v1.SchemeGroupVersion.WithKind("ACMEChallengeSolverDNS01"):
+		return &acmev1.ACMEChallengeSolverDNS01ApplyConfiguration{}
+	case v1.SchemeGroupVersion.WithKind("ACMEChallengeSolverHTTP01"):
+		return &acmev1.ACMEChallengeSolverHTTP01ApplyConfiguration{}
+	case v1.SchemeGroupVersion.WithKind("ACMEChallengeSolverHTTP01GatewayHTTPRoute"):
+		return &acmev1.ACMEChallengeSolverHTTP01GatewayHTTPRouteApplyConfiguration{}
+	case v1.SchemeGroupVersion.WithKind("ACMEChallengeSolverHTTP01Ingress"):
+		return &acmev1.ACMEChallengeSolverHTTP01IngressApplyConfiguration{}
+	case v1.SchemeGroupVersion.WithKind("ACMEChallengeSolverHTTP01IngressObjectMeta"):
+		return &acmev1.ACMEChallengeSolverHTTP01IngressObjectMetaApplyConfiguration{}
+	case v1.SchemeGroupVersion.WithKind("ACMEChallengeSolverHTTP01IngressPodObjectMeta"):
+		return &acmev1.ACMEChallengeSolverHTTP01IngressPodObjectMetaApplyConfiguration{}
+	case v1.SchemeGroupVersion.WithKind("ACMEChallengeSolverHTTP01IngressPodSecurityContext"):
+		return &acmev1.ACMEChallengeSolverHTTP01IngressPodSecurityContextApplyConfiguration{}
+	case v1.SchemeGroupVersion.WithKind("ACMEChallengeSolverHTTP01IngressPodSpec"):
+		return &acmev1.ACMEChallengeSolverHTTP01IngressPodSpecApplyConfiguration{}
+	case v1.SchemeGroupVersion.WithKind("ACMEChallengeSolverHTTP01IngressPodTemplate"):
+		return &acmev1.ACMEChallengeSolverHTTP01IngressPodTemplateApplyConfiguration{}
+	case v1.SchemeGroupVersion.WithKind("ACMEChallengeSolverHTTP01IngressTemplate"):
+		return &acmev1.ACMEChallengeSolverHTTP01IngressTemplateApplyConfiguration{}
+	case v1.SchemeGroupVersion.WithKind("ACMEExternalAccountBinding"):
+		return &acmev1.ACMEExternalAccountBindingApplyConfiguration{}
+	case v1.SchemeGroupVersion.WithKind("ACMEIssuer"):
+		return &acmev1.ACMEIssuerApplyConfiguration{}
+	case v1.SchemeGroupVersion.WithKind("ACMEIssuerDNS01ProviderAcmeDNS"):
+		return &acmev1.ACMEIssuerDNS01ProviderAcmeDNSApplyConfiguration{}
+	case v1.SchemeGroupVersion.WithKind("ACMEIssuerDNS01ProviderAkamai"):
+		return &acmev1.ACMEIssuerDNS01ProviderAkamaiApplyConfiguration{}
+	case v1.SchemeGroupVersion.WithKind("ACMEIssuerDNS01ProviderAzureDNS"):
+		return &acmev1.ACMEIssuerDNS01ProviderAzureDNSApplyConfiguration{}
+	case v1.SchemeGroupVersion.WithKind("ACMEIssuerDNS01ProviderCloudDNS"):
+		return &acmev1.ACMEIssuerDNS01ProviderCloudDNSApplyConfiguration{}
+	case v1.SchemeGroupVersion.WithKind("ACMEIssuerDNS01ProviderCloudflare"):
+		return &acmev1.ACMEIssuerDNS01ProviderCloudflareApplyConfiguration{}
+	case v1.SchemeGroupVersion.WithKind("ACMEIssuerDNS01ProviderDigitalOcean"):
+		return &acmev1.ACMEIssuerDNS01ProviderDigitalOceanApplyConfiguration{}
+	case v1.SchemeGroupVersion.WithKind("ACMEIssuerDNS01ProviderRFC2136"):
+		return &acmev1.ACMEIssuerDNS01ProviderRFC2136ApplyConfiguration{}
+	case v1.SchemeGroupVersion.WithKind("ACMEIssuerDNS01ProviderRoute53"):
+		return &acmev1.ACMEIssuerDNS01ProviderRoute53ApplyConfiguration{}
+	case v1.SchemeGroupVersion.WithKind("ACMEIssuerDNS01ProviderWebhook"):
+		return &acmev1.ACMEIssuerDNS01ProviderWebhookApplyConfiguration{}
+	case v1.SchemeGroupVersion.WithKind("ACMEIssuerStatus"):
+		return &acmev1.ACMEIssuerStatusApplyConfiguration{}
+	case v1.SchemeGroupVersion.WithKind("AzureManagedIdentity"):
+		return &acmev1.AzureManagedIdentityApplyConfiguration{}
+	case v1.SchemeGroupVersion.WithKind("CertificateDNSNameSelector"):
+		return &acmev1.CertificateDNSNameSelectorApplyConfiguration{}
+	case v1.SchemeGroupVersion.WithKind("Challenge"):
+		return &acmev1.ChallengeApplyConfiguration{}
+	case v1.SchemeGroupVersion.WithKind("ChallengeSpec"):
+		return &acmev1.ChallengeSpecApplyConfiguration{}
+	case v1.SchemeGroupVersion.WithKind("ChallengeStatus"):
+		return &acmev1.ChallengeStatusApplyConfiguration{}
+	case v1.SchemeGroupVersion.WithKind("Order"):
+		return &acmev1.OrderApplyConfiguration{}
+	case v1.SchemeGroupVersion.WithKind("OrderSpec"):
+		return &acmev1.OrderSpecApplyConfiguration{}
+	case v1.SchemeGroupVersion.WithKind("OrderStatus"):
+		return &acmev1.OrderStatusApplyConfiguration{}
+	case v1.SchemeGroupVersion.WithKind("Route53Auth"):
+		return &acmev1.Route53AuthApplyConfiguration{}
+	case v1.SchemeGroupVersion.WithKind("Route53KubernetesAuth"):
+		return &acmev1.Route53KubernetesAuthApplyConfiguration{}
+	case v1.SchemeGroupVersion.WithKind("ServiceAccountRef"):
+		return &acmev1.ServiceAccountRefApplyConfiguration{}
+
+		// Group=cert-manager.io, Version=v1
+	case certmanagerv1.SchemeGroupVersion.WithKind("CAIssuer"):
+		return &applyconfigurationscertmanagerv1.CAIssuerApplyConfiguration{}
+	case certmanagerv1.SchemeGroupVersion.WithKind("Certificate"):
+		return &applyconfigurationscertmanagerv1.CertificateApplyConfiguration{}
+	case certmanagerv1.SchemeGroupVersion.WithKind("CertificateAdditionalOutputFormat"):
+		return &applyconfigurationscertmanagerv1.CertificateAdditionalOutputFormatApplyConfiguration{}
+	case certmanagerv1.SchemeGroupVersion.WithKind("CertificateCondition"):
+		return &applyconfigurationscertmanagerv1.CertificateConditionApplyConfiguration{}
+	case certmanagerv1.SchemeGroupVersion.WithKind("CertificateKeystores"):
+		return &applyconfigurationscertmanagerv1.CertificateKeystoresApplyConfiguration{}
+	case certmanagerv1.SchemeGroupVersion.WithKind("CertificatePrivateKey"):
+		return &applyconfigurationscertmanagerv1.CertificatePrivateKeyApplyConfiguration{}
+	case certmanagerv1.SchemeGroupVersion.WithKind("CertificateRequest"):
+		return &applyconfigurationscertmanagerv1.CertificateRequestApplyConfiguration{}
+	case certmanagerv1.SchemeGroupVersion.WithKind("CertificateRequestCondition"):
+		return &applyconfigurationscertmanagerv1.CertificateRequestConditionApplyConfiguration{}
+	case certmanagerv1.SchemeGroupVersion.WithKind("CertificateRequestSpec"):
+		return &applyconfigurationscertmanagerv1.CertificateRequestSpecApplyConfiguration{}
+	case certmanagerv1.SchemeGroupVersion.WithKind("CertificateRequestStatus"):
+		return &applyconfigurationscertmanagerv1.CertificateRequestStatusApplyConfiguration{}
+	case certmanagerv1.SchemeGroupVersion.WithKind("CertificateSecretTemplate"):
+		return &applyconfigurationscertmanagerv1.CertificateSecretTemplateApplyConfiguration{}
+	case certmanagerv1.SchemeGroupVersion.WithKind("CertificateSpec"):
+		return &applyconfigurationscertmanagerv1.CertificateSpecApplyConfiguration{}
+	case certmanagerv1.SchemeGroupVersion.WithKind("CertificateStatus"):
+		return &applyconfigurationscertmanagerv1.CertificateStatusApplyConfiguration{}
+	case certmanagerv1.SchemeGroupVersion.WithKind("ClusterIssuer"):
+		return &applyconfigurationscertmanagerv1.ClusterIssuerApplyConfiguration{}
+	case certmanagerv1.SchemeGroupVersion.WithKind("Issuer"):
+		return &applyconfigurationscertmanagerv1.IssuerApplyConfiguration{}
+	case certmanagerv1.SchemeGroupVersion.WithKind("IssuerCondition"):
+		return &applyconfigurationscertmanagerv1.IssuerConditionApplyConfiguration{}
+	case certmanagerv1.SchemeGroupVersion.WithKind("IssuerConfig"):
+		return &applyconfigurationscertmanagerv1.IssuerConfigApplyConfiguration{}
+	case certmanagerv1.SchemeGroupVersion.WithKind("IssuerSpec"):
+		return &applyconfigurationscertmanagerv1.IssuerSpecApplyConfiguration{}
+	case certmanagerv1.SchemeGroupVersion.WithKind("IssuerStatus"):
+		return &applyconfigurationscertmanagerv1.IssuerStatusApplyConfiguration{}
+	case certmanagerv1.SchemeGroupVersion.WithKind("JKSKeystore"):
+		return &applyconfigurationscertmanagerv1.JKSKeystoreApplyConfiguration{}
+	case certmanagerv1.SchemeGroupVersion.WithKind("NameConstraintItem"):
+		return &applyconfigurationscertmanagerv1.NameConstraintItemApplyConfiguration{}
+	case certmanagerv1.SchemeGroupVersion.WithKind("NameConstraints"):
+		return &applyconfigurationscertmanagerv1.NameConstraintsApplyConfiguration{}
+	case certmanagerv1.SchemeGroupVersion.WithKind("OtherName"):
+		return &applyconfigurationscertmanagerv1.OtherNameApplyConfiguration{}
+	case certmanagerv1.SchemeGroupVersion.WithKind("PKCS12Keystore"):
+		return &applyconfigurationscertmanagerv1.PKCS12KeystoreApplyConfiguration{}
+	case certmanagerv1.SchemeGroupVersion.WithKind("SelfSignedIssuer"):
+		return &applyconfigurationscertmanagerv1.SelfSignedIssuerApplyConfiguration{}
+	case certmanagerv1.SchemeGroupVersion.WithKind("ServiceAccountRef"):
+		return &applyconfigurationscertmanagerv1.ServiceAccountRefApplyConfiguration{}
+	case certmanagerv1.SchemeGroupVersion.WithKind("VaultAppRole"):
+		return &applyconfigurationscertmanagerv1.VaultAppRoleApplyConfiguration{}
+	case certmanagerv1.SchemeGroupVersion.WithKind("VaultAuth"):
+		return &applyconfigurationscertmanagerv1.VaultAuthApplyConfiguration{}
+	case certmanagerv1.SchemeGroupVersion.WithKind("VaultClientCertificateAuth"):
+		return &applyconfigurationscertmanagerv1.VaultClientCertificateAuthApplyConfiguration{}
+	case certmanagerv1.SchemeGroupVersion.WithKind("VaultIssuer"):
+		return &applyconfigurationscertmanagerv1.VaultIssuerApplyConfiguration{}
+	case certmanagerv1.SchemeGroupVersion.WithKind("VaultKubernetesAuth"):
+		return &applyconfigurationscertmanagerv1.VaultKubernetesAuthApplyConfiguration{}
+	case certmanagerv1.SchemeGroupVersion.WithKind("VenafiCloud"):
+		return &applyconfigurationscertmanagerv1.VenafiCloudApplyConfiguration{}
+	case certmanagerv1.SchemeGroupVersion.WithKind("VenafiIssuer"):
+		return &applyconfigurationscertmanagerv1.VenafiIssuerApplyConfiguration{}
+	case certmanagerv1.SchemeGroupVersion.WithKind("VenafiTPP"):
+		return &applyconfigurationscertmanagerv1.VenafiTPPApplyConfiguration{}
+	case certmanagerv1.SchemeGroupVersion.WithKind("X509Subject"):
+		return &applyconfigurationscertmanagerv1.X509SubjectApplyConfiguration{}
+
+	}
+	return nil
+}
+
+func NewTypeConverter(scheme *runtime.Scheme) *testing.TypeConverter {
+	return &testing.TypeConverter{Scheme: scheme, TypeResolver: internal.Parser()}
+}
diff --git a/pkg/client/clientset/versioned/fake/clientset_generated.go b/pkg/client/clientset/versioned/fake/clientset_generated.go
index 49076251542..199e2be459d 100644
--- a/pkg/client/clientset/versioned/fake/clientset_generated.go
+++ b/pkg/client/clientset/versioned/fake/clientset_generated.go
@@ -19,6 +19,7 @@ limitations under the License.
 package fake
 
 import (
+	applyconfigurations "github.com/cert-manager/cert-manager/pkg/client/applyconfigurations"
 	clientset "github.com/cert-manager/cert-manager/pkg/client/clientset/versioned"
 	acmev1 "github.com/cert-manager/cert-manager/pkg/client/clientset/versioned/typed/acme/v1"
 	fakeacmev1 "github.com/cert-manager/cert-manager/pkg/client/clientset/versioned/typed/acme/v1/fake"
@@ -85,6 +86,42 @@ func (c *Clientset) Tracker() testing.ObjectTracker {
 	return c.tracker
 }
 
+// NewClientset returns a clientset that will respond with the provided objects.
+// It's backed by a very simple object tracker that processes creates, updates and deletions as-is,
+// without applying any validations and/or defaults. It shouldn't be considered a replacement
+// for a real clientset and is mostly useful in simple unit tests.
+func NewClientset(objects ...runtime.Object) *Clientset {
+	o := testing.NewFieldManagedObjectTracker(
+		scheme,
+		codecs.UniversalDecoder(),
+		applyconfigurations.NewTypeConverter(scheme),
+	)
+	for _, obj := range objects {
+		if err := o.Add(obj); err != nil {
+			panic(err)
+		}
+	}
+
+	cs := &Clientset{tracker: o}
+	cs.discovery = &fakediscovery.FakeDiscovery{Fake: &cs.Fake}
+	cs.AddReactor("*", "*", testing.ObjectReaction(o))
+	cs.AddWatchReactor("*", func(action testing.Action) (handled bool, ret watch.Interface, err error) {
+		var opts metav1.ListOptions
+		if watchActcion, ok := action.(testing.WatchActionImpl); ok {
+			opts = watchActcion.ListOptions
+		}
+		gvr := action.GetResource()
+		ns := action.GetNamespace()
+		watch, err := o.Watch(gvr, ns, opts)
+		if err != nil {
+			return false, nil, err
+		}
+		return true, watch, nil
+	})
+
+	return cs
+}
+
 var (
 	_ clientset.Interface = &Clientset{}
 	_ testing.FakeClient  = &Clientset{}
diff --git a/pkg/client/clientset/versioned/typed/acme/v1/challenge.go b/pkg/client/clientset/versioned/typed/acme/v1/challenge.go
index 0026fa8f5e7..82d89913920 100644
--- a/pkg/client/clientset/versioned/typed/acme/v1/challenge.go
+++ b/pkg/client/clientset/versioned/typed/acme/v1/challenge.go
@@ -22,6 +22,7 @@ import (
 	context "context"
 
 	acmev1 "github.com/cert-manager/cert-manager/pkg/apis/acme/v1"
+	applyconfigurationsacmev1 "github.com/cert-manager/cert-manager/pkg/client/applyconfigurations/acme/v1"
 	scheme "github.com/cert-manager/cert-manager/pkg/client/clientset/versioned/scheme"
 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 	types "k8s.io/apimachinery/pkg/types"
@@ -47,18 +48,21 @@ type ChallengeInterface interface {
 	List(ctx context.Context, opts metav1.ListOptions) (*acmev1.ChallengeList, error)
 	Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error)
 	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *acmev1.Challenge, err error)
+	Apply(ctx context.Context, challenge *applyconfigurationsacmev1.ChallengeApplyConfiguration, opts metav1.ApplyOptions) (result *acmev1.Challenge, err error)
+	// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
+	ApplyStatus(ctx context.Context, challenge *applyconfigurationsacmev1.ChallengeApplyConfiguration, opts metav1.ApplyOptions) (result *acmev1.Challenge, err error)
 	ChallengeExpansion
 }
 
 // challenges implements ChallengeInterface
 type challenges struct {
-	*gentype.ClientWithList[*acmev1.Challenge, *acmev1.ChallengeList]
+	*gentype.ClientWithListAndApply[*acmev1.Challenge, *acmev1.ChallengeList, *applyconfigurationsacmev1.ChallengeApplyConfiguration]
 }
 
 // newChallenges returns a Challenges
 func newChallenges(c *AcmeV1Client, namespace string) *challenges {
 	return &challenges{
-		gentype.NewClientWithList[*acmev1.Challenge, *acmev1.ChallengeList](
+		gentype.NewClientWithListAndApply[*acmev1.Challenge, *acmev1.ChallengeList, *applyconfigurationsacmev1.ChallengeApplyConfiguration](
 			"challenges",
 			c.RESTClient(),
 			scheme.ParameterCodec,
diff --git a/pkg/client/clientset/versioned/typed/acme/v1/fake/fake_challenge.go b/pkg/client/clientset/versioned/typed/acme/v1/fake/fake_challenge.go
index cdf201a3871..2313e566ba5 100644
--- a/pkg/client/clientset/versioned/typed/acme/v1/fake/fake_challenge.go
+++ b/pkg/client/clientset/versioned/typed/acme/v1/fake/fake_challenge.go
@@ -20,19 +20,20 @@ package fake
 
 import (
 	v1 "github.com/cert-manager/cert-manager/pkg/apis/acme/v1"
-	acmev1 "github.com/cert-manager/cert-manager/pkg/client/clientset/versioned/typed/acme/v1"
+	acmev1 "github.com/cert-manager/cert-manager/pkg/client/applyconfigurations/acme/v1"
+	typedacmev1 "github.com/cert-manager/cert-manager/pkg/client/clientset/versioned/typed/acme/v1"
 	gentype "k8s.io/client-go/gentype"
 )
 
 // fakeChallenges implements ChallengeInterface
 type fakeChallenges struct {
-	*gentype.FakeClientWithList[*v1.Challenge, *v1.ChallengeList]
+	*gentype.FakeClientWithListAndApply[*v1.Challenge, *v1.ChallengeList, *acmev1.ChallengeApplyConfiguration]
 	Fake *FakeAcmeV1
 }
 
-func newFakeChallenges(fake *FakeAcmeV1, namespace string) acmev1.ChallengeInterface {
+func newFakeChallenges(fake *FakeAcmeV1, namespace string) typedacmev1.ChallengeInterface {
 	return &fakeChallenges{
-		gentype.NewFakeClientWithList[*v1.Challenge, *v1.ChallengeList](
+		gentype.NewFakeClientWithListAndApply[*v1.Challenge, *v1.ChallengeList, *acmev1.ChallengeApplyConfiguration](
 			fake.Fake,
 			namespace,
 			v1.SchemeGroupVersion.WithResource("challenges"),
diff --git a/pkg/client/clientset/versioned/typed/acme/v1/fake/fake_order.go b/pkg/client/clientset/versioned/typed/acme/v1/fake/fake_order.go
index 406a62aef89..2cfe1be0993 100644
--- a/pkg/client/clientset/versioned/typed/acme/v1/fake/fake_order.go
+++ b/pkg/client/clientset/versioned/typed/acme/v1/fake/fake_order.go
@@ -20,19 +20,20 @@ package fake
 
 import (
 	v1 "github.com/cert-manager/cert-manager/pkg/apis/acme/v1"
-	acmev1 "github.com/cert-manager/cert-manager/pkg/client/clientset/versioned/typed/acme/v1"
+	acmev1 "github.com/cert-manager/cert-manager/pkg/client/applyconfigurations/acme/v1"
+	typedacmev1 "github.com/cert-manager/cert-manager/pkg/client/clientset/versioned/typed/acme/v1"
 	gentype "k8s.io/client-go/gentype"
 )
 
 // fakeOrders implements OrderInterface
 type fakeOrders struct {
-	*gentype.FakeClientWithList[*v1.Order, *v1.OrderList]
+	*gentype.FakeClientWithListAndApply[*v1.Order, *v1.OrderList, *acmev1.OrderApplyConfiguration]
 	Fake *FakeAcmeV1
 }
 
-func newFakeOrders(fake *FakeAcmeV1, namespace string) acmev1.OrderInterface {
+func newFakeOrders(fake *FakeAcmeV1, namespace string) typedacmev1.OrderInterface {
 	return &fakeOrders{
-		gentype.NewFakeClientWithList[*v1.Order, *v1.OrderList](
+		gentype.NewFakeClientWithListAndApply[*v1.Order, *v1.OrderList, *acmev1.OrderApplyConfiguration](
 			fake.Fake,
 			namespace,
 			v1.SchemeGroupVersion.WithResource("orders"),
diff --git a/pkg/client/clientset/versioned/typed/acme/v1/order.go b/pkg/client/clientset/versioned/typed/acme/v1/order.go
index 763168c8515..cd5c1fcbe8b 100644
--- a/pkg/client/clientset/versioned/typed/acme/v1/order.go
+++ b/pkg/client/clientset/versioned/typed/acme/v1/order.go
@@ -22,6 +22,7 @@ import (
 	context "context"
 
 	acmev1 "github.com/cert-manager/cert-manager/pkg/apis/acme/v1"
+	applyconfigurationsacmev1 "github.com/cert-manager/cert-manager/pkg/client/applyconfigurations/acme/v1"
 	scheme "github.com/cert-manager/cert-manager/pkg/client/clientset/versioned/scheme"
 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 	types "k8s.io/apimachinery/pkg/types"
@@ -47,18 +48,21 @@ type OrderInterface interface {
 	List(ctx context.Context, opts metav1.ListOptions) (*acmev1.OrderList, error)
 	Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error)
 	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *acmev1.Order, err error)
+	Apply(ctx context.Context, order *applyconfigurationsacmev1.OrderApplyConfiguration, opts metav1.ApplyOptions) (result *acmev1.Order, err error)
+	// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
+	ApplyStatus(ctx context.Context, order *applyconfigurationsacmev1.OrderApplyConfiguration, opts metav1.ApplyOptions) (result *acmev1.Order, err error)
 	OrderExpansion
 }
 
 // orders implements OrderInterface
 type orders struct {
-	*gentype.ClientWithList[*acmev1.Order, *acmev1.OrderList]
+	*gentype.ClientWithListAndApply[*acmev1.Order, *acmev1.OrderList, *applyconfigurationsacmev1.OrderApplyConfiguration]
 }
 
 // newOrders returns a Orders
 func newOrders(c *AcmeV1Client, namespace string) *orders {
 	return &orders{
-		gentype.NewClientWithList[*acmev1.Order, *acmev1.OrderList](
+		gentype.NewClientWithListAndApply[*acmev1.Order, *acmev1.OrderList, *applyconfigurationsacmev1.OrderApplyConfiguration](
 			"orders",
 			c.RESTClient(),
 			scheme.ParameterCodec,
diff --git a/pkg/client/clientset/versioned/typed/certmanager/v1/certificate.go b/pkg/client/clientset/versioned/typed/certmanager/v1/certificate.go
index 6604e918cdb..7760408e4e1 100644
--- a/pkg/client/clientset/versioned/typed/certmanager/v1/certificate.go
+++ b/pkg/client/clientset/versioned/typed/certmanager/v1/certificate.go
@@ -22,6 +22,7 @@ import (
 	context "context"
 
 	certmanagerv1 "github.com/cert-manager/cert-manager/pkg/apis/certmanager/v1"
+	applyconfigurationscertmanagerv1 "github.com/cert-manager/cert-manager/pkg/client/applyconfigurations/certmanager/v1"
 	scheme "github.com/cert-manager/cert-manager/pkg/client/clientset/versioned/scheme"
 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 	types "k8s.io/apimachinery/pkg/types"
@@ -47,18 +48,21 @@ type CertificateInterface interface {
 	List(ctx context.Context, opts metav1.ListOptions) (*certmanagerv1.CertificateList, error)
 	Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error)
 	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *certmanagerv1.Certificate, err error)
+	Apply(ctx context.Context, certificate *applyconfigurationscertmanagerv1.CertificateApplyConfiguration, opts metav1.ApplyOptions) (result *certmanagerv1.Certificate, err error)
+	// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
+	ApplyStatus(ctx context.Context, certificate *applyconfigurationscertmanagerv1.CertificateApplyConfiguration, opts metav1.ApplyOptions) (result *certmanagerv1.Certificate, err error)
 	CertificateExpansion
 }
 
 // certificates implements CertificateInterface
 type certificates struct {
-	*gentype.ClientWithList[*certmanagerv1.Certificate, *certmanagerv1.CertificateList]
+	*gentype.ClientWithListAndApply[*certmanagerv1.Certificate, *certmanagerv1.CertificateList, *applyconfigurationscertmanagerv1.CertificateApplyConfiguration]
 }
 
 // newCertificates returns a Certificates
 func newCertificates(c *CertmanagerV1Client, namespace string) *certificates {
 	return &certificates{
-		gentype.NewClientWithList[*certmanagerv1.Certificate, *certmanagerv1.CertificateList](
+		gentype.NewClientWithListAndApply[*certmanagerv1.Certificate, *certmanagerv1.CertificateList, *applyconfigurationscertmanagerv1.CertificateApplyConfiguration](
 			"certificates",
 			c.RESTClient(),
 			scheme.ParameterCodec,
diff --git a/pkg/client/clientset/versioned/typed/certmanager/v1/certificaterequest.go b/pkg/client/clientset/versioned/typed/certmanager/v1/certificaterequest.go
index b7c41ca5edf..f8a1877640f 100644
--- a/pkg/client/clientset/versioned/typed/certmanager/v1/certificaterequest.go
+++ b/pkg/client/clientset/versioned/typed/certmanager/v1/certificaterequest.go
@@ -22,6 +22,7 @@ import (
 	context "context"
 
 	certmanagerv1 "github.com/cert-manager/cert-manager/pkg/apis/certmanager/v1"
+	applyconfigurationscertmanagerv1 "github.com/cert-manager/cert-manager/pkg/client/applyconfigurations/certmanager/v1"
 	scheme "github.com/cert-manager/cert-manager/pkg/client/clientset/versioned/scheme"
 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 	types "k8s.io/apimachinery/pkg/types"
@@ -47,18 +48,21 @@ type CertificateRequestInterface interface {
 	List(ctx context.Context, opts metav1.ListOptions) (*certmanagerv1.CertificateRequestList, error)
 	Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error)
 	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *certmanagerv1.CertificateRequest, err error)
+	Apply(ctx context.Context, certificateRequest *applyconfigurationscertmanagerv1.CertificateRequestApplyConfiguration, opts metav1.ApplyOptions) (result *certmanagerv1.CertificateRequest, err error)
+	// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
+	ApplyStatus(ctx context.Context, certificateRequest *applyconfigurationscertmanagerv1.CertificateRequestApplyConfiguration, opts metav1.ApplyOptions) (result *certmanagerv1.CertificateRequest, err error)
 	CertificateRequestExpansion
 }
 
 // certificateRequests implements CertificateRequestInterface
 type certificateRequests struct {
-	*gentype.ClientWithList[*certmanagerv1.CertificateRequest, *certmanagerv1.CertificateRequestList]
+	*gentype.ClientWithListAndApply[*certmanagerv1.CertificateRequest, *certmanagerv1.CertificateRequestList, *applyconfigurationscertmanagerv1.CertificateRequestApplyConfiguration]
 }
 
 // newCertificateRequests returns a CertificateRequests
 func newCertificateRequests(c *CertmanagerV1Client, namespace string) *certificateRequests {
 	return &certificateRequests{
-		gentype.NewClientWithList[*certmanagerv1.CertificateRequest, *certmanagerv1.CertificateRequestList](
+		gentype.NewClientWithListAndApply[*certmanagerv1.CertificateRequest, *certmanagerv1.CertificateRequestList, *applyconfigurationscertmanagerv1.CertificateRequestApplyConfiguration](
 			"certificaterequests",
 			c.RESTClient(),
 			scheme.ParameterCodec,
diff --git a/pkg/client/clientset/versioned/typed/certmanager/v1/clusterissuer.go b/pkg/client/clientset/versioned/typed/certmanager/v1/clusterissuer.go
index 5ed145a5e4b..de1ac6f330b 100644
--- a/pkg/client/clientset/versioned/typed/certmanager/v1/clusterissuer.go
+++ b/pkg/client/clientset/versioned/typed/certmanager/v1/clusterissuer.go
@@ -22,6 +22,7 @@ import (
 	context "context"
 
 	certmanagerv1 "github.com/cert-manager/cert-manager/pkg/apis/certmanager/v1"
+	applyconfigurationscertmanagerv1 "github.com/cert-manager/cert-manager/pkg/client/applyconfigurations/certmanager/v1"
 	scheme "github.com/cert-manager/cert-manager/pkg/client/clientset/versioned/scheme"
 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 	types "k8s.io/apimachinery/pkg/types"
@@ -47,18 +48,21 @@ type ClusterIssuerInterface interface {
 	List(ctx context.Context, opts metav1.ListOptions) (*certmanagerv1.ClusterIssuerList, error)
 	Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error)
 	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *certmanagerv1.ClusterIssuer, err error)
+	Apply(ctx context.Context, clusterIssuer *applyconfigurationscertmanagerv1.ClusterIssuerApplyConfiguration, opts metav1.ApplyOptions) (result *certmanagerv1.ClusterIssuer, err error)
+	// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
+	ApplyStatus(ctx context.Context, clusterIssuer *applyconfigurationscertmanagerv1.ClusterIssuerApplyConfiguration, opts metav1.ApplyOptions) (result *certmanagerv1.ClusterIssuer, err error)
 	ClusterIssuerExpansion
 }
 
 // clusterIssuers implements ClusterIssuerInterface
 type clusterIssuers struct {
-	*gentype.ClientWithList[*certmanagerv1.ClusterIssuer, *certmanagerv1.ClusterIssuerList]
+	*gentype.ClientWithListAndApply[*certmanagerv1.ClusterIssuer, *certmanagerv1.ClusterIssuerList, *applyconfigurationscertmanagerv1.ClusterIssuerApplyConfiguration]
 }
 
 // newClusterIssuers returns a ClusterIssuers
 func newClusterIssuers(c *CertmanagerV1Client) *clusterIssuers {
 	return &clusterIssuers{
-		gentype.NewClientWithList[*certmanagerv1.ClusterIssuer, *certmanagerv1.ClusterIssuerList](
+		gentype.NewClientWithListAndApply[*certmanagerv1.ClusterIssuer, *certmanagerv1.ClusterIssuerList, *applyconfigurationscertmanagerv1.ClusterIssuerApplyConfiguration](
 			"clusterissuers",
 			c.RESTClient(),
 			scheme.ParameterCodec,
diff --git a/pkg/client/clientset/versioned/typed/certmanager/v1/fake/fake_certificate.go b/pkg/client/clientset/versioned/typed/certmanager/v1/fake/fake_certificate.go
index 8a379be00de..a9618252b44 100644
--- a/pkg/client/clientset/versioned/typed/certmanager/v1/fake/fake_certificate.go
+++ b/pkg/client/clientset/versioned/typed/certmanager/v1/fake/fake_certificate.go
@@ -20,19 +20,20 @@ package fake
 
 import (
 	v1 "github.com/cert-manager/cert-manager/pkg/apis/certmanager/v1"
-	certmanagerv1 "github.com/cert-manager/cert-manager/pkg/client/clientset/versioned/typed/certmanager/v1"
+	certmanagerv1 "github.com/cert-manager/cert-manager/pkg/client/applyconfigurations/certmanager/v1"
+	typedcertmanagerv1 "github.com/cert-manager/cert-manager/pkg/client/clientset/versioned/typed/certmanager/v1"
 	gentype "k8s.io/client-go/gentype"
 )
 
 // fakeCertificates implements CertificateInterface
 type fakeCertificates struct {
-	*gentype.FakeClientWithList[*v1.Certificate, *v1.CertificateList]
+	*gentype.FakeClientWithListAndApply[*v1.Certificate, *v1.CertificateList, *certmanagerv1.CertificateApplyConfiguration]
 	Fake *FakeCertmanagerV1
 }
 
-func newFakeCertificates(fake *FakeCertmanagerV1, namespace string) certmanagerv1.CertificateInterface {
+func newFakeCertificates(fake *FakeCertmanagerV1, namespace string) typedcertmanagerv1.CertificateInterface {
 	return &fakeCertificates{
-		gentype.NewFakeClientWithList[*v1.Certificate, *v1.CertificateList](
+		gentype.NewFakeClientWithListAndApply[*v1.Certificate, *v1.CertificateList, *certmanagerv1.CertificateApplyConfiguration](
 			fake.Fake,
 			namespace,
 			v1.SchemeGroupVersion.WithResource("certificates"),
diff --git a/pkg/client/clientset/versioned/typed/certmanager/v1/fake/fake_certificaterequest.go b/pkg/client/clientset/versioned/typed/certmanager/v1/fake/fake_certificaterequest.go
index d3ca4448277..0cc93b342a2 100644
--- a/pkg/client/clientset/versioned/typed/certmanager/v1/fake/fake_certificaterequest.go
+++ b/pkg/client/clientset/versioned/typed/certmanager/v1/fake/fake_certificaterequest.go
@@ -20,19 +20,20 @@ package fake
 
 import (
 	v1 "github.com/cert-manager/cert-manager/pkg/apis/certmanager/v1"
-	certmanagerv1 "github.com/cert-manager/cert-manager/pkg/client/clientset/versioned/typed/certmanager/v1"
+	certmanagerv1 "github.com/cert-manager/cert-manager/pkg/client/applyconfigurations/certmanager/v1"
+	typedcertmanagerv1 "github.com/cert-manager/cert-manager/pkg/client/clientset/versioned/typed/certmanager/v1"
 	gentype "k8s.io/client-go/gentype"
 )
 
 // fakeCertificateRequests implements CertificateRequestInterface
 type fakeCertificateRequests struct {
-	*gentype.FakeClientWithList[*v1.CertificateRequest, *v1.CertificateRequestList]
+	*gentype.FakeClientWithListAndApply[*v1.CertificateRequest, *v1.CertificateRequestList, *certmanagerv1.CertificateRequestApplyConfiguration]
 	Fake *FakeCertmanagerV1
 }
 
-func newFakeCertificateRequests(fake *FakeCertmanagerV1, namespace string) certmanagerv1.CertificateRequestInterface {
+func newFakeCertificateRequests(fake *FakeCertmanagerV1, namespace string) typedcertmanagerv1.CertificateRequestInterface {
 	return &fakeCertificateRequests{
-		gentype.NewFakeClientWithList[*v1.CertificateRequest, *v1.CertificateRequestList](
+		gentype.NewFakeClientWithListAndApply[*v1.CertificateRequest, *v1.CertificateRequestList, *certmanagerv1.CertificateRequestApplyConfiguration](
 			fake.Fake,
 			namespace,
 			v1.SchemeGroupVersion.WithResource("certificaterequests"),
diff --git a/pkg/client/clientset/versioned/typed/certmanager/v1/fake/fake_clusterissuer.go b/pkg/client/clientset/versioned/typed/certmanager/v1/fake/fake_clusterissuer.go
index 69d0a1bd4f1..097f9f4c220 100644
--- a/pkg/client/clientset/versioned/typed/certmanager/v1/fake/fake_clusterissuer.go
+++ b/pkg/client/clientset/versioned/typed/certmanager/v1/fake/fake_clusterissuer.go
@@ -20,19 +20,20 @@ package fake
 
 import (
 	v1 "github.com/cert-manager/cert-manager/pkg/apis/certmanager/v1"
-	certmanagerv1 "github.com/cert-manager/cert-manager/pkg/client/clientset/versioned/typed/certmanager/v1"
+	certmanagerv1 "github.com/cert-manager/cert-manager/pkg/client/applyconfigurations/certmanager/v1"
+	typedcertmanagerv1 "github.com/cert-manager/cert-manager/pkg/client/clientset/versioned/typed/certmanager/v1"
 	gentype "k8s.io/client-go/gentype"
 )
 
 // fakeClusterIssuers implements ClusterIssuerInterface
 type fakeClusterIssuers struct {
-	*gentype.FakeClientWithList[*v1.ClusterIssuer, *v1.ClusterIssuerList]
+	*gentype.FakeClientWithListAndApply[*v1.ClusterIssuer, *v1.ClusterIssuerList, *certmanagerv1.ClusterIssuerApplyConfiguration]
 	Fake *FakeCertmanagerV1
 }
 
-func newFakeClusterIssuers(fake *FakeCertmanagerV1) certmanagerv1.ClusterIssuerInterface {
+func newFakeClusterIssuers(fake *FakeCertmanagerV1) typedcertmanagerv1.ClusterIssuerInterface {
 	return &fakeClusterIssuers{
-		gentype.NewFakeClientWithList[*v1.ClusterIssuer, *v1.ClusterIssuerList](
+		gentype.NewFakeClientWithListAndApply[*v1.ClusterIssuer, *v1.ClusterIssuerList, *certmanagerv1.ClusterIssuerApplyConfiguration](
 			fake.Fake,
 			"",
 			v1.SchemeGroupVersion.WithResource("clusterissuers"),
diff --git a/pkg/client/clientset/versioned/typed/certmanager/v1/fake/fake_issuer.go b/pkg/client/clientset/versioned/typed/certmanager/v1/fake/fake_issuer.go
index 858f8c6a271..1c3bec77577 100644
--- a/pkg/client/clientset/versioned/typed/certmanager/v1/fake/fake_issuer.go
+++ b/pkg/client/clientset/versioned/typed/certmanager/v1/fake/fake_issuer.go
@@ -20,19 +20,20 @@ package fake
 
 import (
 	v1 "github.com/cert-manager/cert-manager/pkg/apis/certmanager/v1"
-	certmanagerv1 "github.com/cert-manager/cert-manager/pkg/client/clientset/versioned/typed/certmanager/v1"
+	certmanagerv1 "github.com/cert-manager/cert-manager/pkg/client/applyconfigurations/certmanager/v1"
+	typedcertmanagerv1 "github.com/cert-manager/cert-manager/pkg/client/clientset/versioned/typed/certmanager/v1"
 	gentype "k8s.io/client-go/gentype"
 )
 
 // fakeIssuers implements IssuerInterface
 type fakeIssuers struct {
-	*gentype.FakeClientWithList[*v1.Issuer, *v1.IssuerList]
+	*gentype.FakeClientWithListAndApply[*v1.Issuer, *v1.IssuerList, *certmanagerv1.IssuerApplyConfiguration]
 	Fake *FakeCertmanagerV1
 }
 
-func newFakeIssuers(fake *FakeCertmanagerV1, namespace string) certmanagerv1.IssuerInterface {
+func newFakeIssuers(fake *FakeCertmanagerV1, namespace string) typedcertmanagerv1.IssuerInterface {
 	return &fakeIssuers{
-		gentype.NewFakeClientWithList[*v1.Issuer, *v1.IssuerList](
+		gentype.NewFakeClientWithListAndApply[*v1.Issuer, *v1.IssuerList, *certmanagerv1.IssuerApplyConfiguration](
 			fake.Fake,
 			namespace,
 			v1.SchemeGroupVersion.WithResource("issuers"),
diff --git a/pkg/client/clientset/versioned/typed/certmanager/v1/issuer.go b/pkg/client/clientset/versioned/typed/certmanager/v1/issuer.go
index 9e00078323f..b915a9d65eb 100644
--- a/pkg/client/clientset/versioned/typed/certmanager/v1/issuer.go
+++ b/pkg/client/clientset/versioned/typed/certmanager/v1/issuer.go
@@ -22,6 +22,7 @@ import (
 	context "context"
 
 	certmanagerv1 "github.com/cert-manager/cert-manager/pkg/apis/certmanager/v1"
+	applyconfigurationscertmanagerv1 "github.com/cert-manager/cert-manager/pkg/client/applyconfigurations/certmanager/v1"
 	scheme "github.com/cert-manager/cert-manager/pkg/client/clientset/versioned/scheme"
 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 	types "k8s.io/apimachinery/pkg/types"
@@ -47,18 +48,21 @@ type IssuerInterface interface {
 	List(ctx context.Context, opts metav1.ListOptions) (*certmanagerv1.IssuerList, error)
 	Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error)
 	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *certmanagerv1.Issuer, err error)
+	Apply(ctx context.Context, issuer *applyconfigurationscertmanagerv1.IssuerApplyConfiguration, opts metav1.ApplyOptions) (result *certmanagerv1.Issuer, err error)
+	// Add a +genclient:noStatus comment above the type to avoid generating ApplyStatus().
+	ApplyStatus(ctx context.Context, issuer *applyconfigurationscertmanagerv1.IssuerApplyConfiguration, opts metav1.ApplyOptions) (result *certmanagerv1.Issuer, err error)
 	IssuerExpansion
 }
 
 // issuers implements IssuerInterface
 type issuers struct {
-	*gentype.ClientWithList[*certmanagerv1.Issuer, *certmanagerv1.IssuerList]
+	*gentype.ClientWithListAndApply[*certmanagerv1.Issuer, *certmanagerv1.IssuerList, *applyconfigurationscertmanagerv1.IssuerApplyConfiguration]
 }
 
 // newIssuers returns a Issuers
 func newIssuers(c *CertmanagerV1Client, namespace string) *issuers {
 	return &issuers{
-		gentype.NewClientWithList[*certmanagerv1.Issuer, *certmanagerv1.IssuerList](
+		gentype.NewClientWithListAndApply[*certmanagerv1.Issuer, *certmanagerv1.IssuerList, *applyconfigurationscertmanagerv1.IssuerApplyConfiguration](
 			"issuers",
 			c.RESTClient(),
 			scheme.ParameterCodec,


Test patch:
diff --git a/pkg/client/applyconfigurations/certmanager/v1/certificatestatus.go b/pkg/client/applyconfigurations/certmanager/v1/certificatestatus.go
new file mode 100644
index 00000000000..06919f17d11
--- /dev/null
+++ b/pkg/client/applyconfigurations/certmanager/v1/certificatestatus.go
@@ -0,0 +1,111 @@
+/*
+Copyright The cert-manager Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+// Code generated by applyconfiguration-gen. DO NOT EDIT.
+
+package v1
+
+import (
+	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+)
+
+// CertificateStatusApplyConfiguration represents a declarative configuration of the CertificateStatus type for use
+// with apply.
+type CertificateStatusApplyConfiguration struct {
+	Conditions               []CertificateConditionApplyConfiguration `json:"conditions,omitempty"`
+	LastFailureTime          *metav1.Time                             `json:"lastFailureTime,omitempty"`
+	NotBefore                *metav1.Time                             `json:"notBefore,omitempty"`
+	NotAfter                 *metav1.Time                             `json:"notAfter,omitempty"`
+	RenewalTime              *metav1.Time                             `json:"renewalTime,omitempty"`
+	Revision                 *int                                     `json:"revision,omitempty"`
+	NextPrivateKeySecretName *string                                  `json:"nextPrivateKeySecretName,omitempty"`
+	FailedIssuanceAttempts   *int                                     `json:"failedIssuanceAttempts,omitempty"`
+}
+
+// CertificateStatusApplyConfiguration constructs a declarative configuration of the CertificateStatus type for use with
+// apply.
+func CertificateStatus() *CertificateStatusApplyConfiguration {
+	return &CertificateStatusApplyConfiguration{}
+}
+
+// WithConditions adds the given value to the Conditions field in the declarative configuration
+// and returns the receiver, so that objects can be build by chaining "With" function invocations.
+// If called multiple times, values provided by each call will be appended to the Conditions field.
+func (b *CertificateStatusApplyConfiguration) WithConditions(values ...*CertificateConditionApplyConfiguration) *CertificateStatusApplyConfiguration {
+	for i := range values {
+		if values[i] == nil {
+			panic("nil value passed to WithConditions")
+		}
+		b.Conditions = append(b.Conditions, *values[i])
+	}
+	return b
+}
+
+// WithLastFailureTime sets the LastFailureTime field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the LastFailureTime field is set to the value of the last call.
+func (b *CertificateStatusApplyConfiguration) WithLastFailureTime(value metav1.Time) *CertificateStatusApplyConfiguration {
+	b.LastFailureTime = &value
+	return b
+}
+
+// WithNotBefore sets the NotBefore field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the NotBefore field is set to the value of the last call.
+func (b *CertificateStatusApplyConfiguration) WithNotBefore(value metav1.Time) *CertificateStatusApplyConfiguration {
+	b.NotBefore = &value
+	return b
+}
+
+// WithNotAfter sets the NotAfter field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the NotAfter field is set to the value of the last call.
+func (b *CertificateStatusApplyConfiguration) WithNotAfter(value metav1.Time) *CertificateStatusApplyConfiguration {
+	b.NotAfter = &value
+	return b
+}
+
+// WithRenewalTime sets the RenewalTime field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the RenewalTime field is set to the value of the last call.
+func (b *CertificateStatusApplyConfiguration) WithRenewalTime(value metav1.Time) *CertificateStatusApplyConfiguration {
+	b.RenewalTime = &value
+	return b
+}
+
+// WithRevision sets the Revision field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the Revision field is set to the value of the last call.
+func (b *CertificateStatusApplyConfiguration) WithRevision(value int) *CertificateStatusApplyConfiguration {
+	b.Revision = &value
+	return b
+}
+
+// WithNextPrivateKeySecretName sets the NextPrivateKeySecretName field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the NextPrivateKeySecretName field is set to the value of the last call.
+func (b *CertificateStatusApplyConfiguration) WithNextPrivateKeySecretName(value string) *CertificateStatusApplyConfiguration {
+	b.NextPrivateKeySecretName = &value
+	return b
+}
+
+// WithFailedIssuanceAttempts sets the FailedIssuanceAttempts field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the FailedIssuanceAttempts field is set to the value of the last call.
+func (b *CertificateStatusApplyConfiguration) WithFailedIssuanceAttempts(value int) *CertificateStatusApplyConfiguration {
+	b.FailedIssuanceAttempts = &value
+	return b
+}