// Code generated by crd2pulumi DO NOT EDIT.
// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! ***

package v1beta1

import (
	"context"
	"reflect"

	"antoine-roux.tk/projects/go/pulumi-library/crds/kubernetes/internal"
	v1 "github.com/pulumi/pulumi-kubernetes/sdk/v4/go/kubernetes/meta/v1"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumix"
)

var _ = internal.GetEnvOrDefault

// A Certificate resource should be created to ensure an up to date and signed x509 certificate is stored in the Kubernetes Secret resource named in `spec.secretName`.
//
//	The stored certificate will be renewed before it expires (as configured by `spec.renewBefore`).
type CertificateType struct {
	ApiVersion *string        `pulumi:"apiVersion"`
	Kind       *string        `pulumi:"kind"`
	Metadata   *v1.ObjectMeta `pulumi:"metadata"`
	// Desired state of the Certificate resource.
	Spec CertificateSpec `pulumi:"spec"`
	// Status of the Certificate. This is set and managed automatically.
	Status *CertificateStatus `pulumi:"status"`
}

type CertificateMetadata struct {
}

// A CertificateRequest is used to request a signed certificate from one of the configured issuers.
//
//	All fields within the CertificateRequest's `spec` are immutable after creation. A CertificateRequest will either succeed or fail, as denoted by its `status.state` field.
//	A CertificateRequest is a one-shot resource, meaning it represents a single point in time request for a certificate and cannot be re-used.
type CertificateRequestType struct {
	ApiVersion *string        `pulumi:"apiVersion"`
	Kind       *string        `pulumi:"kind"`
	Metadata   *v1.ObjectMeta `pulumi:"metadata"`
	// Desired state of the CertificateRequest resource.
	Spec CertificateRequestSpec `pulumi:"spec"`
	// Status of the CertificateRequest. This is set and managed automatically.
	Status *CertificateRequestStatus `pulumi:"status"`
}

type CertificateRequestMetadata struct {
}

// Desired state of the CertificateRequest resource.
type CertificateRequestSpec struct {
	// The requested 'duration' (i.e. lifetime) of the Certificate. This option may be ignored/overridden by some issuer types.
	Duration *string `pulumi:"duration"`
	// Extra contains extra attributes of the user that created the CertificateRequest. Populated by the cert-manager webhook on creation and immutable.
	Extra map[string][]string `pulumi:"extra"`
	// Groups contains group membership of the user that created the CertificateRequest. Populated by the cert-manager webhook on creation and immutable.
	Groups []string `pulumi:"groups"`
	// IsCA will request to mark the certificate as valid for certificate signing when submitting to the issuer. This will automatically add the `cert sign` usage to the list of `usages`.
	IsCA *bool `pulumi:"isCA"`
	// IssuerRef is a reference to the issuer for this CertificateRequest.  If the `kind` field is not set, or set to `Issuer`, an Issuer resource with the given name in the same namespace as the CertificateRequest will be used.  If the `kind` field is set to `ClusterIssuer`, a ClusterIssuer with the provided name will be used. The `name` field in this stanza is required at all times. The group field refers to the API group of the issuer which defaults to `cert-manager.io` if empty.
	IssuerRef CertificateRequestSpecIssuerRef `pulumi:"issuerRef"`
	// The PEM-encoded x509 certificate signing request to be submitted to the CA for signing.
	Request string `pulumi:"request"`
	// UID contains the uid of the user that created the CertificateRequest. Populated by the cert-manager webhook on creation and immutable.
	Uid *string `pulumi:"uid"`
	// Usages is the set of x509 usages that are requested for the certificate. Defaults to `digital signature` and `key encipherment` if not specified.
	Usages []string `pulumi:"usages"`
	// Username contains the name of the user that created the CertificateRequest. Populated by the cert-manager webhook on creation and immutable.
	Username *string `pulumi:"username"`
}

// CertificateRequestSpecInput is an input type that accepts CertificateRequestSpecArgs and CertificateRequestSpecOutput values.
// You can construct a concrete instance of `CertificateRequestSpecInput` via:
//
//	CertificateRequestSpecArgs{...}
type CertificateRequestSpecInput interface {
	pulumi.Input

	ToCertificateRequestSpecOutput() CertificateRequestSpecOutput
	ToCertificateRequestSpecOutputWithContext(context.Context) CertificateRequestSpecOutput
}

// Desired state of the CertificateRequest resource.
type CertificateRequestSpecArgs struct {
	// The requested 'duration' (i.e. lifetime) of the Certificate. This option may be ignored/overridden by some issuer types.
	Duration pulumi.StringPtrInput `pulumi:"duration"`
	// Extra contains extra attributes of the user that created the CertificateRequest. Populated by the cert-manager webhook on creation and immutable.
	Extra pulumi.StringArrayMapInput `pulumi:"extra"`
	// Groups contains group membership of the user that created the CertificateRequest. Populated by the cert-manager webhook on creation and immutable.
	Groups pulumi.StringArrayInput `pulumi:"groups"`
	// IsCA will request to mark the certificate as valid for certificate signing when submitting to the issuer. This will automatically add the `cert sign` usage to the list of `usages`.
	IsCA pulumi.BoolPtrInput `pulumi:"isCA"`
	// IssuerRef is a reference to the issuer for this CertificateRequest.  If the `kind` field is not set, or set to `Issuer`, an Issuer resource with the given name in the same namespace as the CertificateRequest will be used.  If the `kind` field is set to `ClusterIssuer`, a ClusterIssuer with the provided name will be used. The `name` field in this stanza is required at all times. The group field refers to the API group of the issuer which defaults to `cert-manager.io` if empty.
	IssuerRef CertificateRequestSpecIssuerRefInput `pulumi:"issuerRef"`
	// The PEM-encoded x509 certificate signing request to be submitted to the CA for signing.
	Request pulumi.StringInput `pulumi:"request"`
	// UID contains the uid of the user that created the CertificateRequest. Populated by the cert-manager webhook on creation and immutable.
	Uid pulumi.StringPtrInput `pulumi:"uid"`
	// Usages is the set of x509 usages that are requested for the certificate. Defaults to `digital signature` and `key encipherment` if not specified.
	Usages pulumi.StringArrayInput `pulumi:"usages"`
	// Username contains the name of the user that created the CertificateRequest. Populated by the cert-manager webhook on creation and immutable.
	Username pulumi.StringPtrInput `pulumi:"username"`
}

func (CertificateRequestSpecArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*CertificateRequestSpec)(nil)).Elem()
}

func (i CertificateRequestSpecArgs) ToCertificateRequestSpecOutput() CertificateRequestSpecOutput {
	return i.ToCertificateRequestSpecOutputWithContext(context.Background())
}

func (i CertificateRequestSpecArgs) ToCertificateRequestSpecOutputWithContext(ctx context.Context) CertificateRequestSpecOutput {
	return pulumi.ToOutputWithContext(ctx, i).(CertificateRequestSpecOutput)
}

func (i CertificateRequestSpecArgs) ToOutput(ctx context.Context) pulumix.Output[CertificateRequestSpec] {
	return pulumix.Output[CertificateRequestSpec]{
		OutputState: i.ToCertificateRequestSpecOutputWithContext(ctx).OutputState,
	}
}

func (i CertificateRequestSpecArgs) ToCertificateRequestSpecPtrOutput() CertificateRequestSpecPtrOutput {
	return i.ToCertificateRequestSpecPtrOutputWithContext(context.Background())
}

func (i CertificateRequestSpecArgs) ToCertificateRequestSpecPtrOutputWithContext(ctx context.Context) CertificateRequestSpecPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(CertificateRequestSpecOutput).ToCertificateRequestSpecPtrOutputWithContext(ctx)
}

// CertificateRequestSpecPtrInput is an input type that accepts CertificateRequestSpecArgs, CertificateRequestSpecPtr and CertificateRequestSpecPtrOutput values.
// You can construct a concrete instance of `CertificateRequestSpecPtrInput` via:
//
//	        CertificateRequestSpecArgs{...}
//
//	or:
//
//	        nil
type CertificateRequestSpecPtrInput interface {
	pulumi.Input

	ToCertificateRequestSpecPtrOutput() CertificateRequestSpecPtrOutput
	ToCertificateRequestSpecPtrOutputWithContext(context.Context) CertificateRequestSpecPtrOutput
}

type certificateRequestSpecPtrType CertificateRequestSpecArgs

func CertificateRequestSpecPtr(v *CertificateRequestSpecArgs) CertificateRequestSpecPtrInput {
	return (*certificateRequestSpecPtrType)(v)
}

func (*certificateRequestSpecPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**CertificateRequestSpec)(nil)).Elem()
}

func (i *certificateRequestSpecPtrType) ToCertificateRequestSpecPtrOutput() CertificateRequestSpecPtrOutput {
	return i.ToCertificateRequestSpecPtrOutputWithContext(context.Background())
}

func (i *certificateRequestSpecPtrType) ToCertificateRequestSpecPtrOutputWithContext(ctx context.Context) CertificateRequestSpecPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(CertificateRequestSpecPtrOutput)
}

func (i *certificateRequestSpecPtrType) ToOutput(ctx context.Context) pulumix.Output[*CertificateRequestSpec] {
	return pulumix.Output[*CertificateRequestSpec]{
		OutputState: i.ToCertificateRequestSpecPtrOutputWithContext(ctx).OutputState,
	}
}

// Desired state of the CertificateRequest resource.
type CertificateRequestSpecOutput struct{ *pulumi.OutputState }

func (CertificateRequestSpecOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*CertificateRequestSpec)(nil)).Elem()
}

func (o CertificateRequestSpecOutput) ToCertificateRequestSpecOutput() CertificateRequestSpecOutput {
	return o
}

func (o CertificateRequestSpecOutput) ToCertificateRequestSpecOutputWithContext(ctx context.Context) CertificateRequestSpecOutput {
	return o
}

func (o CertificateRequestSpecOutput) ToCertificateRequestSpecPtrOutput() CertificateRequestSpecPtrOutput {
	return o.ToCertificateRequestSpecPtrOutputWithContext(context.Background())
}

func (o CertificateRequestSpecOutput) ToCertificateRequestSpecPtrOutputWithContext(ctx context.Context) CertificateRequestSpecPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v CertificateRequestSpec) *CertificateRequestSpec {
		return &v
	}).(CertificateRequestSpecPtrOutput)
}

func (o CertificateRequestSpecOutput) ToOutput(ctx context.Context) pulumix.Output[CertificateRequestSpec] {
	return pulumix.Output[CertificateRequestSpec]{
		OutputState: o.OutputState,
	}
}

// The requested 'duration' (i.e. lifetime) of the Certificate. This option may be ignored/overridden by some issuer types.
func (o CertificateRequestSpecOutput) Duration() pulumi.StringPtrOutput {
	return o.ApplyT(func(v CertificateRequestSpec) *string { return v.Duration }).(pulumi.StringPtrOutput)
}

// Extra contains extra attributes of the user that created the CertificateRequest. Populated by the cert-manager webhook on creation and immutable.
func (o CertificateRequestSpecOutput) Extra() pulumi.StringArrayMapOutput {
	return o.ApplyT(func(v CertificateRequestSpec) map[string][]string { return v.Extra }).(pulumi.StringArrayMapOutput)
}

// Groups contains group membership of the user that created the CertificateRequest. Populated by the cert-manager webhook on creation and immutable.
func (o CertificateRequestSpecOutput) Groups() pulumi.StringArrayOutput {
	return o.ApplyT(func(v CertificateRequestSpec) []string { return v.Groups }).(pulumi.StringArrayOutput)
}

// IsCA will request to mark the certificate as valid for certificate signing when submitting to the issuer. This will automatically add the `cert sign` usage to the list of `usages`.
func (o CertificateRequestSpecOutput) IsCA() pulumi.BoolPtrOutput {
	return o.ApplyT(func(v CertificateRequestSpec) *bool { return v.IsCA }).(pulumi.BoolPtrOutput)
}

// IssuerRef is a reference to the issuer for this CertificateRequest.  If the `kind` field is not set, or set to `Issuer`, an Issuer resource with the given name in the same namespace as the CertificateRequest will be used.  If the `kind` field is set to `ClusterIssuer`, a ClusterIssuer with the provided name will be used. The `name` field in this stanza is required at all times. The group field refers to the API group of the issuer which defaults to `cert-manager.io` if empty.
func (o CertificateRequestSpecOutput) IssuerRef() CertificateRequestSpecIssuerRefOutput {
	return o.ApplyT(func(v CertificateRequestSpec) CertificateRequestSpecIssuerRef { return v.IssuerRef }).(CertificateRequestSpecIssuerRefOutput)
}

// The PEM-encoded x509 certificate signing request to be submitted to the CA for signing.
func (o CertificateRequestSpecOutput) Request() pulumi.StringOutput {
	return o.ApplyT(func(v CertificateRequestSpec) string { return v.Request }).(pulumi.StringOutput)
}

// UID contains the uid of the user that created the CertificateRequest. Populated by the cert-manager webhook on creation and immutable.
func (o CertificateRequestSpecOutput) Uid() pulumi.StringPtrOutput {
	return o.ApplyT(func(v CertificateRequestSpec) *string { return v.Uid }).(pulumi.StringPtrOutput)
}

// Usages is the set of x509 usages that are requested for the certificate. Defaults to `digital signature` and `key encipherment` if not specified.
func (o CertificateRequestSpecOutput) Usages() pulumi.StringArrayOutput {
	return o.ApplyT(func(v CertificateRequestSpec) []string { return v.Usages }).(pulumi.StringArrayOutput)
}

// Username contains the name of the user that created the CertificateRequest. Populated by the cert-manager webhook on creation and immutable.
func (o CertificateRequestSpecOutput) Username() pulumi.StringPtrOutput {
	return o.ApplyT(func(v CertificateRequestSpec) *string { return v.Username }).(pulumi.StringPtrOutput)
}

type CertificateRequestSpecPtrOutput struct{ *pulumi.OutputState }

func (CertificateRequestSpecPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**CertificateRequestSpec)(nil)).Elem()
}

func (o CertificateRequestSpecPtrOutput) ToCertificateRequestSpecPtrOutput() CertificateRequestSpecPtrOutput {
	return o
}

func (o CertificateRequestSpecPtrOutput) ToCertificateRequestSpecPtrOutputWithContext(ctx context.Context) CertificateRequestSpecPtrOutput {
	return o
}

func (o CertificateRequestSpecPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*CertificateRequestSpec] {
	return pulumix.Output[*CertificateRequestSpec]{
		OutputState: o.OutputState,
	}
}

func (o CertificateRequestSpecPtrOutput) Elem() CertificateRequestSpecOutput {
	return o.ApplyT(func(v *CertificateRequestSpec) CertificateRequestSpec {
		if v != nil {
			return *v
		}
		var ret CertificateRequestSpec
		return ret
	}).(CertificateRequestSpecOutput)
}

// The requested 'duration' (i.e. lifetime) of the Certificate. This option may be ignored/overridden by some issuer types.
func (o CertificateRequestSpecPtrOutput) Duration() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *CertificateRequestSpec) *string {
		if v == nil {
			return nil
		}
		return v.Duration
	}).(pulumi.StringPtrOutput)
}

// Extra contains extra attributes of the user that created the CertificateRequest. Populated by the cert-manager webhook on creation and immutable.
func (o CertificateRequestSpecPtrOutput) Extra() pulumi.StringArrayMapOutput {
	return o.ApplyT(func(v *CertificateRequestSpec) map[string][]string {
		if v == nil {
			return nil
		}
		return v.Extra
	}).(pulumi.StringArrayMapOutput)
}

// Groups contains group membership of the user that created the CertificateRequest. Populated by the cert-manager webhook on creation and immutable.
func (o CertificateRequestSpecPtrOutput) Groups() pulumi.StringArrayOutput {
	return o.ApplyT(func(v *CertificateRequestSpec) []string {
		if v == nil {
			return nil
		}
		return v.Groups
	}).(pulumi.StringArrayOutput)
}

// IsCA will request to mark the certificate as valid for certificate signing when submitting to the issuer. This will automatically add the `cert sign` usage to the list of `usages`.
func (o CertificateRequestSpecPtrOutput) IsCA() pulumi.BoolPtrOutput {
	return o.ApplyT(func(v *CertificateRequestSpec) *bool {
		if v == nil {
			return nil
		}
		return v.IsCA
	}).(pulumi.BoolPtrOutput)
}

// IssuerRef is a reference to the issuer for this CertificateRequest.  If the `kind` field is not set, or set to `Issuer`, an Issuer resource with the given name in the same namespace as the CertificateRequest will be used.  If the `kind` field is set to `ClusterIssuer`, a ClusterIssuer with the provided name will be used. The `name` field in this stanza is required at all times. The group field refers to the API group of the issuer which defaults to `cert-manager.io` if empty.
func (o CertificateRequestSpecPtrOutput) IssuerRef() CertificateRequestSpecIssuerRefPtrOutput {
	return o.ApplyT(func(v *CertificateRequestSpec) *CertificateRequestSpecIssuerRef {
		if v == nil {
			return nil
		}
		return &v.IssuerRef
	}).(CertificateRequestSpecIssuerRefPtrOutput)
}

// The PEM-encoded x509 certificate signing request to be submitted to the CA for signing.
func (o CertificateRequestSpecPtrOutput) Request() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *CertificateRequestSpec) *string {
		if v == nil {
			return nil
		}
		return &v.Request
	}).(pulumi.StringPtrOutput)
}

// UID contains the uid of the user that created the CertificateRequest. Populated by the cert-manager webhook on creation and immutable.
func (o CertificateRequestSpecPtrOutput) Uid() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *CertificateRequestSpec) *string {
		if v == nil {
			return nil
		}
		return v.Uid
	}).(pulumi.StringPtrOutput)
}

// Usages is the set of x509 usages that are requested for the certificate. Defaults to `digital signature` and `key encipherment` if not specified.
func (o CertificateRequestSpecPtrOutput) Usages() pulumi.StringArrayOutput {
	return o.ApplyT(func(v *CertificateRequestSpec) []string {
		if v == nil {
			return nil
		}
		return v.Usages
	}).(pulumi.StringArrayOutput)
}

// Username contains the name of the user that created the CertificateRequest. Populated by the cert-manager webhook on creation and immutable.
func (o CertificateRequestSpecPtrOutput) Username() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *CertificateRequestSpec) *string {
		if v == nil {
			return nil
		}
		return v.Username
	}).(pulumi.StringPtrOutput)
}

// Extra contains extra attributes of the user that created the CertificateRequest. Populated by the cert-manager webhook on creation and immutable.
type CertificateRequestSpecExtra struct {
}

// IssuerRef is a reference to the issuer for this CertificateRequest.  If the `kind` field is not set, or set to `Issuer`, an Issuer resource with the given name in the same namespace as the CertificateRequest will be used.  If the `kind` field is set to `ClusterIssuer`, a ClusterIssuer with the provided name will be used. The `name` field in this stanza is required at all times. The group field refers to the API group of the issuer which defaults to `cert-manager.io` if empty.
type CertificateRequestSpecIssuerRef struct {
	// Group of the resource being referred to.
	Group *string `pulumi:"group"`
	// Kind of the resource being referred to.
	Kind *string `pulumi:"kind"`
	// Name of the resource being referred to.
	Name string `pulumi:"name"`
}

// CertificateRequestSpecIssuerRefInput is an input type that accepts CertificateRequestSpecIssuerRefArgs and CertificateRequestSpecIssuerRefOutput values.
// You can construct a concrete instance of `CertificateRequestSpecIssuerRefInput` via:
//
//	CertificateRequestSpecIssuerRefArgs{...}
type CertificateRequestSpecIssuerRefInput interface {
	pulumi.Input

	ToCertificateRequestSpecIssuerRefOutput() CertificateRequestSpecIssuerRefOutput
	ToCertificateRequestSpecIssuerRefOutputWithContext(context.Context) CertificateRequestSpecIssuerRefOutput
}

// IssuerRef is a reference to the issuer for this CertificateRequest.  If the `kind` field is not set, or set to `Issuer`, an Issuer resource with the given name in the same namespace as the CertificateRequest will be used.  If the `kind` field is set to `ClusterIssuer`, a ClusterIssuer with the provided name will be used. The `name` field in this stanza is required at all times. The group field refers to the API group of the issuer which defaults to `cert-manager.io` if empty.
type CertificateRequestSpecIssuerRefArgs struct {
	// Group of the resource being referred to.
	Group pulumi.StringPtrInput `pulumi:"group"`
	// Kind of the resource being referred to.
	Kind pulumi.StringPtrInput `pulumi:"kind"`
	// Name of the resource being referred to.
	Name pulumi.StringInput `pulumi:"name"`
}

func (CertificateRequestSpecIssuerRefArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*CertificateRequestSpecIssuerRef)(nil)).Elem()
}

func (i CertificateRequestSpecIssuerRefArgs) ToCertificateRequestSpecIssuerRefOutput() CertificateRequestSpecIssuerRefOutput {
	return i.ToCertificateRequestSpecIssuerRefOutputWithContext(context.Background())
}

func (i CertificateRequestSpecIssuerRefArgs) ToCertificateRequestSpecIssuerRefOutputWithContext(ctx context.Context) CertificateRequestSpecIssuerRefOutput {
	return pulumi.ToOutputWithContext(ctx, i).(CertificateRequestSpecIssuerRefOutput)
}

func (i CertificateRequestSpecIssuerRefArgs) ToOutput(ctx context.Context) pulumix.Output[CertificateRequestSpecIssuerRef] {
	return pulumix.Output[CertificateRequestSpecIssuerRef]{
		OutputState: i.ToCertificateRequestSpecIssuerRefOutputWithContext(ctx).OutputState,
	}
}

func (i CertificateRequestSpecIssuerRefArgs) ToCertificateRequestSpecIssuerRefPtrOutput() CertificateRequestSpecIssuerRefPtrOutput {
	return i.ToCertificateRequestSpecIssuerRefPtrOutputWithContext(context.Background())
}

func (i CertificateRequestSpecIssuerRefArgs) ToCertificateRequestSpecIssuerRefPtrOutputWithContext(ctx context.Context) CertificateRequestSpecIssuerRefPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(CertificateRequestSpecIssuerRefOutput).ToCertificateRequestSpecIssuerRefPtrOutputWithContext(ctx)
}

// CertificateRequestSpecIssuerRefPtrInput is an input type that accepts CertificateRequestSpecIssuerRefArgs, CertificateRequestSpecIssuerRefPtr and CertificateRequestSpecIssuerRefPtrOutput values.
// You can construct a concrete instance of `CertificateRequestSpecIssuerRefPtrInput` via:
//
//	        CertificateRequestSpecIssuerRefArgs{...}
//
//	or:
//
//	        nil
type CertificateRequestSpecIssuerRefPtrInput interface {
	pulumi.Input

	ToCertificateRequestSpecIssuerRefPtrOutput() CertificateRequestSpecIssuerRefPtrOutput
	ToCertificateRequestSpecIssuerRefPtrOutputWithContext(context.Context) CertificateRequestSpecIssuerRefPtrOutput
}

type certificateRequestSpecIssuerRefPtrType CertificateRequestSpecIssuerRefArgs

func CertificateRequestSpecIssuerRefPtr(v *CertificateRequestSpecIssuerRefArgs) CertificateRequestSpecIssuerRefPtrInput {
	return (*certificateRequestSpecIssuerRefPtrType)(v)
}

func (*certificateRequestSpecIssuerRefPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**CertificateRequestSpecIssuerRef)(nil)).Elem()
}

func (i *certificateRequestSpecIssuerRefPtrType) ToCertificateRequestSpecIssuerRefPtrOutput() CertificateRequestSpecIssuerRefPtrOutput {
	return i.ToCertificateRequestSpecIssuerRefPtrOutputWithContext(context.Background())
}

func (i *certificateRequestSpecIssuerRefPtrType) ToCertificateRequestSpecIssuerRefPtrOutputWithContext(ctx context.Context) CertificateRequestSpecIssuerRefPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(CertificateRequestSpecIssuerRefPtrOutput)
}

func (i *certificateRequestSpecIssuerRefPtrType) ToOutput(ctx context.Context) pulumix.Output[*CertificateRequestSpecIssuerRef] {
	return pulumix.Output[*CertificateRequestSpecIssuerRef]{
		OutputState: i.ToCertificateRequestSpecIssuerRefPtrOutputWithContext(ctx).OutputState,
	}
}

// IssuerRef is a reference to the issuer for this CertificateRequest.  If the `kind` field is not set, or set to `Issuer`, an Issuer resource with the given name in the same namespace as the CertificateRequest will be used.  If the `kind` field is set to `ClusterIssuer`, a ClusterIssuer with the provided name will be used. The `name` field in this stanza is required at all times. The group field refers to the API group of the issuer which defaults to `cert-manager.io` if empty.
type CertificateRequestSpecIssuerRefOutput struct{ *pulumi.OutputState }

func (CertificateRequestSpecIssuerRefOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*CertificateRequestSpecIssuerRef)(nil)).Elem()
}

func (o CertificateRequestSpecIssuerRefOutput) ToCertificateRequestSpecIssuerRefOutput() CertificateRequestSpecIssuerRefOutput {
	return o
}

func (o CertificateRequestSpecIssuerRefOutput) ToCertificateRequestSpecIssuerRefOutputWithContext(ctx context.Context) CertificateRequestSpecIssuerRefOutput {
	return o
}

func (o CertificateRequestSpecIssuerRefOutput) ToCertificateRequestSpecIssuerRefPtrOutput() CertificateRequestSpecIssuerRefPtrOutput {
	return o.ToCertificateRequestSpecIssuerRefPtrOutputWithContext(context.Background())
}

func (o CertificateRequestSpecIssuerRefOutput) ToCertificateRequestSpecIssuerRefPtrOutputWithContext(ctx context.Context) CertificateRequestSpecIssuerRefPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v CertificateRequestSpecIssuerRef) *CertificateRequestSpecIssuerRef {
		return &v
	}).(CertificateRequestSpecIssuerRefPtrOutput)
}

func (o CertificateRequestSpecIssuerRefOutput) ToOutput(ctx context.Context) pulumix.Output[CertificateRequestSpecIssuerRef] {
	return pulumix.Output[CertificateRequestSpecIssuerRef]{
		OutputState: o.OutputState,
	}
}

// Group of the resource being referred to.
func (o CertificateRequestSpecIssuerRefOutput) Group() pulumi.StringPtrOutput {
	return o.ApplyT(func(v CertificateRequestSpecIssuerRef) *string { return v.Group }).(pulumi.StringPtrOutput)
}

// Kind of the resource being referred to.
func (o CertificateRequestSpecIssuerRefOutput) Kind() pulumi.StringPtrOutput {
	return o.ApplyT(func(v CertificateRequestSpecIssuerRef) *string { return v.Kind }).(pulumi.StringPtrOutput)
}

// Name of the resource being referred to.
func (o CertificateRequestSpecIssuerRefOutput) Name() pulumi.StringOutput {
	return o.ApplyT(func(v CertificateRequestSpecIssuerRef) string { return v.Name }).(pulumi.StringOutput)
}

type CertificateRequestSpecIssuerRefPtrOutput struct{ *pulumi.OutputState }

func (CertificateRequestSpecIssuerRefPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**CertificateRequestSpecIssuerRef)(nil)).Elem()
}

func (o CertificateRequestSpecIssuerRefPtrOutput) ToCertificateRequestSpecIssuerRefPtrOutput() CertificateRequestSpecIssuerRefPtrOutput {
	return o
}

func (o CertificateRequestSpecIssuerRefPtrOutput) ToCertificateRequestSpecIssuerRefPtrOutputWithContext(ctx context.Context) CertificateRequestSpecIssuerRefPtrOutput {
	return o
}

func (o CertificateRequestSpecIssuerRefPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*CertificateRequestSpecIssuerRef] {
	return pulumix.Output[*CertificateRequestSpecIssuerRef]{
		OutputState: o.OutputState,
	}
}

func (o CertificateRequestSpecIssuerRefPtrOutput) Elem() CertificateRequestSpecIssuerRefOutput {
	return o.ApplyT(func(v *CertificateRequestSpecIssuerRef) CertificateRequestSpecIssuerRef {
		if v != nil {
			return *v
		}
		var ret CertificateRequestSpecIssuerRef
		return ret
	}).(CertificateRequestSpecIssuerRefOutput)
}

// Group of the resource being referred to.
func (o CertificateRequestSpecIssuerRefPtrOutput) Group() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *CertificateRequestSpecIssuerRef) *string {
		if v == nil {
			return nil
		}
		return v.Group
	}).(pulumi.StringPtrOutput)
}

// Kind of the resource being referred to.
func (o CertificateRequestSpecIssuerRefPtrOutput) Kind() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *CertificateRequestSpecIssuerRef) *string {
		if v == nil {
			return nil
		}
		return v.Kind
	}).(pulumi.StringPtrOutput)
}

// Name of the resource being referred to.
func (o CertificateRequestSpecIssuerRefPtrOutput) Name() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *CertificateRequestSpecIssuerRef) *string {
		if v == nil {
			return nil
		}
		return &v.Name
	}).(pulumi.StringPtrOutput)
}

// Status of the CertificateRequest. This is set and managed automatically.
type CertificateRequestStatus struct {
	// The PEM encoded x509 certificate of the signer, also known as the CA (Certificate Authority). This is set on a best-effort basis by different issuers. If not set, the CA is assumed to be unknown/not available.
	Ca *string `pulumi:"ca"`
	// The PEM encoded x509 certificate resulting from the certificate signing request. If not set, the CertificateRequest has either not been completed or has failed. More information on failure can be found by checking the `conditions` field.
	Certificate *string `pulumi:"certificate"`
	// List of status conditions to indicate the status of a CertificateRequest. Known condition types are `Ready` and `InvalidRequest`.
	Conditions []CertificateRequestStatusConditions `pulumi:"conditions"`
	// FailureTime stores the time that this CertificateRequest failed. This is used to influence garbage collection and back-off.
	FailureTime *string `pulumi:"failureTime"`
}

// CertificateRequestStatusInput is an input type that accepts CertificateRequestStatusArgs and CertificateRequestStatusOutput values.
// You can construct a concrete instance of `CertificateRequestStatusInput` via:
//
//	CertificateRequestStatusArgs{...}
type CertificateRequestStatusInput interface {
	pulumi.Input

	ToCertificateRequestStatusOutput() CertificateRequestStatusOutput
	ToCertificateRequestStatusOutputWithContext(context.Context) CertificateRequestStatusOutput
}

// Status of the CertificateRequest. This is set and managed automatically.
type CertificateRequestStatusArgs struct {
	// The PEM encoded x509 certificate of the signer, also known as the CA (Certificate Authority). This is set on a best-effort basis by different issuers. If not set, the CA is assumed to be unknown/not available.
	Ca pulumi.StringPtrInput `pulumi:"ca"`
	// The PEM encoded x509 certificate resulting from the certificate signing request. If not set, the CertificateRequest has either not been completed or has failed. More information on failure can be found by checking the `conditions` field.
	Certificate pulumi.StringPtrInput `pulumi:"certificate"`
	// List of status conditions to indicate the status of a CertificateRequest. Known condition types are `Ready` and `InvalidRequest`.
	Conditions CertificateRequestStatusConditionsArrayInput `pulumi:"conditions"`
	// FailureTime stores the time that this CertificateRequest failed. This is used to influence garbage collection and back-off.
	FailureTime pulumi.StringPtrInput `pulumi:"failureTime"`
}

func (CertificateRequestStatusArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*CertificateRequestStatus)(nil)).Elem()
}

func (i CertificateRequestStatusArgs) ToCertificateRequestStatusOutput() CertificateRequestStatusOutput {
	return i.ToCertificateRequestStatusOutputWithContext(context.Background())
}

func (i CertificateRequestStatusArgs) ToCertificateRequestStatusOutputWithContext(ctx context.Context) CertificateRequestStatusOutput {
	return pulumi.ToOutputWithContext(ctx, i).(CertificateRequestStatusOutput)
}

func (i CertificateRequestStatusArgs) ToOutput(ctx context.Context) pulumix.Output[CertificateRequestStatus] {
	return pulumix.Output[CertificateRequestStatus]{
		OutputState: i.ToCertificateRequestStatusOutputWithContext(ctx).OutputState,
	}
}

func (i CertificateRequestStatusArgs) ToCertificateRequestStatusPtrOutput() CertificateRequestStatusPtrOutput {
	return i.ToCertificateRequestStatusPtrOutputWithContext(context.Background())
}

func (i CertificateRequestStatusArgs) ToCertificateRequestStatusPtrOutputWithContext(ctx context.Context) CertificateRequestStatusPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(CertificateRequestStatusOutput).ToCertificateRequestStatusPtrOutputWithContext(ctx)
}

// CertificateRequestStatusPtrInput is an input type that accepts CertificateRequestStatusArgs, CertificateRequestStatusPtr and CertificateRequestStatusPtrOutput values.
// You can construct a concrete instance of `CertificateRequestStatusPtrInput` via:
//
//	        CertificateRequestStatusArgs{...}
//
//	or:
//
//	        nil
type CertificateRequestStatusPtrInput interface {
	pulumi.Input

	ToCertificateRequestStatusPtrOutput() CertificateRequestStatusPtrOutput
	ToCertificateRequestStatusPtrOutputWithContext(context.Context) CertificateRequestStatusPtrOutput
}

type certificateRequestStatusPtrType CertificateRequestStatusArgs

func CertificateRequestStatusPtr(v *CertificateRequestStatusArgs) CertificateRequestStatusPtrInput {
	return (*certificateRequestStatusPtrType)(v)
}

func (*certificateRequestStatusPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**CertificateRequestStatus)(nil)).Elem()
}

func (i *certificateRequestStatusPtrType) ToCertificateRequestStatusPtrOutput() CertificateRequestStatusPtrOutput {
	return i.ToCertificateRequestStatusPtrOutputWithContext(context.Background())
}

func (i *certificateRequestStatusPtrType) ToCertificateRequestStatusPtrOutputWithContext(ctx context.Context) CertificateRequestStatusPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(CertificateRequestStatusPtrOutput)
}

func (i *certificateRequestStatusPtrType) ToOutput(ctx context.Context) pulumix.Output[*CertificateRequestStatus] {
	return pulumix.Output[*CertificateRequestStatus]{
		OutputState: i.ToCertificateRequestStatusPtrOutputWithContext(ctx).OutputState,
	}
}

// Status of the CertificateRequest. This is set and managed automatically.
type CertificateRequestStatusOutput struct{ *pulumi.OutputState }

func (CertificateRequestStatusOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*CertificateRequestStatus)(nil)).Elem()
}

func (o CertificateRequestStatusOutput) ToCertificateRequestStatusOutput() CertificateRequestStatusOutput {
	return o
}

func (o CertificateRequestStatusOutput) ToCertificateRequestStatusOutputWithContext(ctx context.Context) CertificateRequestStatusOutput {
	return o
}

func (o CertificateRequestStatusOutput) ToCertificateRequestStatusPtrOutput() CertificateRequestStatusPtrOutput {
	return o.ToCertificateRequestStatusPtrOutputWithContext(context.Background())
}

func (o CertificateRequestStatusOutput) ToCertificateRequestStatusPtrOutputWithContext(ctx context.Context) CertificateRequestStatusPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v CertificateRequestStatus) *CertificateRequestStatus {
		return &v
	}).(CertificateRequestStatusPtrOutput)
}

func (o CertificateRequestStatusOutput) ToOutput(ctx context.Context) pulumix.Output[CertificateRequestStatus] {
	return pulumix.Output[CertificateRequestStatus]{
		OutputState: o.OutputState,
	}
}

// The PEM encoded x509 certificate of the signer, also known as the CA (Certificate Authority). This is set on a best-effort basis by different issuers. If not set, the CA is assumed to be unknown/not available.
func (o CertificateRequestStatusOutput) Ca() pulumi.StringPtrOutput {
	return o.ApplyT(func(v CertificateRequestStatus) *string { return v.Ca }).(pulumi.StringPtrOutput)
}

// The PEM encoded x509 certificate resulting from the certificate signing request. If not set, the CertificateRequest has either not been completed or has failed. More information on failure can be found by checking the `conditions` field.
func (o CertificateRequestStatusOutput) Certificate() pulumi.StringPtrOutput {
	return o.ApplyT(func(v CertificateRequestStatus) *string { return v.Certificate }).(pulumi.StringPtrOutput)
}

// List of status conditions to indicate the status of a CertificateRequest. Known condition types are `Ready` and `InvalidRequest`.
func (o CertificateRequestStatusOutput) Conditions() CertificateRequestStatusConditionsArrayOutput {
	return o.ApplyT(func(v CertificateRequestStatus) []CertificateRequestStatusConditions { return v.Conditions }).(CertificateRequestStatusConditionsArrayOutput)
}

// FailureTime stores the time that this CertificateRequest failed. This is used to influence garbage collection and back-off.
func (o CertificateRequestStatusOutput) FailureTime() pulumi.StringPtrOutput {
	return o.ApplyT(func(v CertificateRequestStatus) *string { return v.FailureTime }).(pulumi.StringPtrOutput)
}

type CertificateRequestStatusPtrOutput struct{ *pulumi.OutputState }

func (CertificateRequestStatusPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**CertificateRequestStatus)(nil)).Elem()
}

func (o CertificateRequestStatusPtrOutput) ToCertificateRequestStatusPtrOutput() CertificateRequestStatusPtrOutput {
	return o
}

func (o CertificateRequestStatusPtrOutput) ToCertificateRequestStatusPtrOutputWithContext(ctx context.Context) CertificateRequestStatusPtrOutput {
	return o
}

func (o CertificateRequestStatusPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*CertificateRequestStatus] {
	return pulumix.Output[*CertificateRequestStatus]{
		OutputState: o.OutputState,
	}
}

func (o CertificateRequestStatusPtrOutput) Elem() CertificateRequestStatusOutput {
	return o.ApplyT(func(v *CertificateRequestStatus) CertificateRequestStatus {
		if v != nil {
			return *v
		}
		var ret CertificateRequestStatus
		return ret
	}).(CertificateRequestStatusOutput)
}

// The PEM encoded x509 certificate of the signer, also known as the CA (Certificate Authority). This is set on a best-effort basis by different issuers. If not set, the CA is assumed to be unknown/not available.
func (o CertificateRequestStatusPtrOutput) Ca() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *CertificateRequestStatus) *string {
		if v == nil {
			return nil
		}
		return v.Ca
	}).(pulumi.StringPtrOutput)
}

// The PEM encoded x509 certificate resulting from the certificate signing request. If not set, the CertificateRequest has either not been completed or has failed. More information on failure can be found by checking the `conditions` field.
func (o CertificateRequestStatusPtrOutput) Certificate() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *CertificateRequestStatus) *string {
		if v == nil {
			return nil
		}
		return v.Certificate
	}).(pulumi.StringPtrOutput)
}

// List of status conditions to indicate the status of a CertificateRequest. Known condition types are `Ready` and `InvalidRequest`.
func (o CertificateRequestStatusPtrOutput) Conditions() CertificateRequestStatusConditionsArrayOutput {
	return o.ApplyT(func(v *CertificateRequestStatus) []CertificateRequestStatusConditions {
		if v == nil {
			return nil
		}
		return v.Conditions
	}).(CertificateRequestStatusConditionsArrayOutput)
}

// FailureTime stores the time that this CertificateRequest failed. This is used to influence garbage collection and back-off.
func (o CertificateRequestStatusPtrOutput) FailureTime() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *CertificateRequestStatus) *string {
		if v == nil {
			return nil
		}
		return v.FailureTime
	}).(pulumi.StringPtrOutput)
}

// CertificateRequestCondition contains condition information for a CertificateRequest.
type CertificateRequestStatusConditions struct {
	// LastTransitionTime is the timestamp corresponding to the last status change of this condition.
	LastTransitionTime *string `pulumi:"lastTransitionTime"`
	// Message is a human readable description of the details of the last transition, complementing reason.
	Message *string `pulumi:"message"`
	// Reason is a brief machine readable explanation for the condition's last transition.
	Reason *string `pulumi:"reason"`
	// Status of the condition, one of (`True`, `False`, `Unknown`).
	Status string `pulumi:"status"`
	// Type of the condition, known values are (`Ready`, `InvalidRequest`, `Approved`, `Denied`).
	Type string `pulumi:"type"`
}

// CertificateRequestStatusConditionsInput is an input type that accepts CertificateRequestStatusConditionsArgs and CertificateRequestStatusConditionsOutput values.
// You can construct a concrete instance of `CertificateRequestStatusConditionsInput` via:
//
//	CertificateRequestStatusConditionsArgs{...}
type CertificateRequestStatusConditionsInput interface {
	pulumi.Input

	ToCertificateRequestStatusConditionsOutput() CertificateRequestStatusConditionsOutput
	ToCertificateRequestStatusConditionsOutputWithContext(context.Context) CertificateRequestStatusConditionsOutput
}

// CertificateRequestCondition contains condition information for a CertificateRequest.
type CertificateRequestStatusConditionsArgs struct {
	// LastTransitionTime is the timestamp corresponding to the last status change of this condition.
	LastTransitionTime pulumi.StringPtrInput `pulumi:"lastTransitionTime"`
	// Message is a human readable description of the details of the last transition, complementing reason.
	Message pulumi.StringPtrInput `pulumi:"message"`
	// Reason is a brief machine readable explanation for the condition's last transition.
	Reason pulumi.StringPtrInput `pulumi:"reason"`
	// Status of the condition, one of (`True`, `False`, `Unknown`).
	Status pulumi.StringInput `pulumi:"status"`
	// Type of the condition, known values are (`Ready`, `InvalidRequest`, `Approved`, `Denied`).
	Type pulumi.StringInput `pulumi:"type"`
}

func (CertificateRequestStatusConditionsArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*CertificateRequestStatusConditions)(nil)).Elem()
}

func (i CertificateRequestStatusConditionsArgs) ToCertificateRequestStatusConditionsOutput() CertificateRequestStatusConditionsOutput {
	return i.ToCertificateRequestStatusConditionsOutputWithContext(context.Background())
}

func (i CertificateRequestStatusConditionsArgs) ToCertificateRequestStatusConditionsOutputWithContext(ctx context.Context) CertificateRequestStatusConditionsOutput {
	return pulumi.ToOutputWithContext(ctx, i).(CertificateRequestStatusConditionsOutput)
}

func (i CertificateRequestStatusConditionsArgs) ToOutput(ctx context.Context) pulumix.Output[CertificateRequestStatusConditions] {
	return pulumix.Output[CertificateRequestStatusConditions]{
		OutputState: i.ToCertificateRequestStatusConditionsOutputWithContext(ctx).OutputState,
	}
}

// CertificateRequestStatusConditionsArrayInput is an input type that accepts CertificateRequestStatusConditionsArray and CertificateRequestStatusConditionsArrayOutput values.
// You can construct a concrete instance of `CertificateRequestStatusConditionsArrayInput` via:
//
//	CertificateRequestStatusConditionsArray{ CertificateRequestStatusConditionsArgs{...} }
type CertificateRequestStatusConditionsArrayInput interface {
	pulumi.Input

	ToCertificateRequestStatusConditionsArrayOutput() CertificateRequestStatusConditionsArrayOutput
	ToCertificateRequestStatusConditionsArrayOutputWithContext(context.Context) CertificateRequestStatusConditionsArrayOutput
}

type CertificateRequestStatusConditionsArray []CertificateRequestStatusConditionsInput

func (CertificateRequestStatusConditionsArray) ElementType() reflect.Type {
	return reflect.TypeOf((*[]CertificateRequestStatusConditions)(nil)).Elem()
}

func (i CertificateRequestStatusConditionsArray) ToCertificateRequestStatusConditionsArrayOutput() CertificateRequestStatusConditionsArrayOutput {
	return i.ToCertificateRequestStatusConditionsArrayOutputWithContext(context.Background())
}

func (i CertificateRequestStatusConditionsArray) ToCertificateRequestStatusConditionsArrayOutputWithContext(ctx context.Context) CertificateRequestStatusConditionsArrayOutput {
	return pulumi.ToOutputWithContext(ctx, i).(CertificateRequestStatusConditionsArrayOutput)
}

func (i CertificateRequestStatusConditionsArray) ToOutput(ctx context.Context) pulumix.Output[[]CertificateRequestStatusConditions] {
	return pulumix.Output[[]CertificateRequestStatusConditions]{
		OutputState: i.ToCertificateRequestStatusConditionsArrayOutputWithContext(ctx).OutputState,
	}
}

// CertificateRequestCondition contains condition information for a CertificateRequest.
type CertificateRequestStatusConditionsOutput struct{ *pulumi.OutputState }

func (CertificateRequestStatusConditionsOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*CertificateRequestStatusConditions)(nil)).Elem()
}

func (o CertificateRequestStatusConditionsOutput) ToCertificateRequestStatusConditionsOutput() CertificateRequestStatusConditionsOutput {
	return o
}

func (o CertificateRequestStatusConditionsOutput) ToCertificateRequestStatusConditionsOutputWithContext(ctx context.Context) CertificateRequestStatusConditionsOutput {
	return o
}

func (o CertificateRequestStatusConditionsOutput) ToOutput(ctx context.Context) pulumix.Output[CertificateRequestStatusConditions] {
	return pulumix.Output[CertificateRequestStatusConditions]{
		OutputState: o.OutputState,
	}
}

// LastTransitionTime is the timestamp corresponding to the last status change of this condition.
func (o CertificateRequestStatusConditionsOutput) LastTransitionTime() pulumi.StringPtrOutput {
	return o.ApplyT(func(v CertificateRequestStatusConditions) *string { return v.LastTransitionTime }).(pulumi.StringPtrOutput)
}

// Message is a human readable description of the details of the last transition, complementing reason.
func (o CertificateRequestStatusConditionsOutput) Message() pulumi.StringPtrOutput {
	return o.ApplyT(func(v CertificateRequestStatusConditions) *string { return v.Message }).(pulumi.StringPtrOutput)
}

// Reason is a brief machine readable explanation for the condition's last transition.
func (o CertificateRequestStatusConditionsOutput) Reason() pulumi.StringPtrOutput {
	return o.ApplyT(func(v CertificateRequestStatusConditions) *string { return v.Reason }).(pulumi.StringPtrOutput)
}

// Status of the condition, one of (`True`, `False`, `Unknown`).
func (o CertificateRequestStatusConditionsOutput) Status() pulumi.StringOutput {
	return o.ApplyT(func(v CertificateRequestStatusConditions) string { return v.Status }).(pulumi.StringOutput)
}

// Type of the condition, known values are (`Ready`, `InvalidRequest`, `Approved`, `Denied`).
func (o CertificateRequestStatusConditionsOutput) Type() pulumi.StringOutput {
	return o.ApplyT(func(v CertificateRequestStatusConditions) string { return v.Type }).(pulumi.StringOutput)
}

type CertificateRequestStatusConditionsArrayOutput struct{ *pulumi.OutputState }

func (CertificateRequestStatusConditionsArrayOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*[]CertificateRequestStatusConditions)(nil)).Elem()
}

func (o CertificateRequestStatusConditionsArrayOutput) ToCertificateRequestStatusConditionsArrayOutput() CertificateRequestStatusConditionsArrayOutput {
	return o
}

func (o CertificateRequestStatusConditionsArrayOutput) ToCertificateRequestStatusConditionsArrayOutputWithContext(ctx context.Context) CertificateRequestStatusConditionsArrayOutput {
	return o
}

func (o CertificateRequestStatusConditionsArrayOutput) ToOutput(ctx context.Context) pulumix.Output[[]CertificateRequestStatusConditions] {
	return pulumix.Output[[]CertificateRequestStatusConditions]{
		OutputState: o.OutputState,
	}
}

func (o CertificateRequestStatusConditionsArrayOutput) Index(i pulumi.IntInput) CertificateRequestStatusConditionsOutput {
	return pulumi.All(o, i).ApplyT(func(vs []interface{}) CertificateRequestStatusConditions {
		return vs[0].([]CertificateRequestStatusConditions)[vs[1].(int)]
	}).(CertificateRequestStatusConditionsOutput)
}

// Desired state of the Certificate resource.
type CertificateSpec struct {
	// CommonName is a common name to be used on the Certificate. The CommonName should have a length of 64 characters or fewer to avoid generating invalid CSRs. This value is ignored by TLS clients when any subject alt name is set. This is x509 behaviour: https://tools.ietf.org/html/rfc6125#section-6.4.4
	CommonName *string `pulumi:"commonName"`
	// DNSNames is a list of DNS subjectAltNames to be set on the Certificate.
	DnsNames []string `pulumi:"dnsNames"`
	// The requested 'duration' (i.e. lifetime) of the Certificate. This option may be ignored/overridden by some issuer types. If unset this defaults to 90 days. Certificate will be renewed either 2/3 through its duration or `renewBefore` period before its expiry, whichever is later. Minimum accepted duration is 1 hour. Value must be in units accepted by Go time.ParseDuration https://golang.org/pkg/time/#ParseDuration
	Duration *string `pulumi:"duration"`
	// EmailSANs is a list of email subjectAltNames to be set on the Certificate.
	EmailSANs []string `pulumi:"emailSANs"`
	// EncodeUsagesInRequest controls whether key usages should be present in the CertificateRequest
	EncodeUsagesInRequest *bool `pulumi:"encodeUsagesInRequest"`
	// IPAddresses is a list of IP address subjectAltNames to be set on the Certificate.
	IpAddresses []string `pulumi:"ipAddresses"`
	// IsCA will mark this Certificate as valid for certificate signing. This will automatically add the `cert sign` usage to the list of `usages`.
	IsCA *bool `pulumi:"isCA"`
	// IssuerRef is a reference to the issuer for this certificate. If the `kind` field is not set, or set to `Issuer`, an Issuer resource with the given name in the same namespace as the Certificate will be used. If the `kind` field is set to `ClusterIssuer`, a ClusterIssuer with the provided name will be used. The `name` field in this stanza is required at all times.
	IssuerRef CertificateSpecIssuerRef `pulumi:"issuerRef"`
	// Keystores configures additional keystore output formats stored in the `secretName` Secret resource.
	Keystores *CertificateSpecKeystores `pulumi:"keystores"`
	// Options to control private keys used for the Certificate.
	PrivateKey *CertificateSpecPrivateKey `pulumi:"privateKey"`
	// How long before the currently issued certificate's expiry cert-manager should renew the certificate. The default is 2/3 of the issued certificate's duration. Minimum accepted value is 5 minutes. Value must be in units accepted by Go time.ParseDuration https://golang.org/pkg/time/#ParseDuration
	RenewBefore *string `pulumi:"renewBefore"`
	// revisionHistoryLimit is the maximum number of CertificateRequest revisions that are maintained in the Certificate's history. Each revision represents a single `CertificateRequest` created by this Certificate, either when it was created, renewed, or Spec was changed. Revisions will be removed by oldest first if the number of revisions exceeds this number. If set, revisionHistoryLimit must be a value of `1` or greater. If unset (`nil`), revisions will not be garbage collected. Default value is `nil`.
	RevisionHistoryLimit *int `pulumi:"revisionHistoryLimit"`
	// SecretName is the name of the secret resource that will be automatically created and managed by this Certificate resource. It will be populated with a private key and certificate, signed by the denoted issuer.
	SecretName string `pulumi:"secretName"`
	// SecretTemplate defines annotations and labels to be propagated to the Kubernetes Secret when it is created or updated. Once created, labels and annotations are not yet removed from the Secret when they are removed from the template. See https://github.com/jetstack/cert-manager/issues/4292
	SecretTemplate *CertificateSpecSecretTemplate `pulumi:"secretTemplate"`
	// Full X509 name specification (https://golang.org/pkg/crypto/x509/pkix/#Name).
	Subject *CertificateSpecSubject `pulumi:"subject"`
	// URISANs is a list of URI subjectAltNames to be set on the Certificate.
	UriSANs []string `pulumi:"uriSANs"`
	// Usages is the set of x509 usages that are requested for the certificate. Defaults to `digital signature` and `key encipherment` if not specified.
	Usages []string `pulumi:"usages"`
}

// CertificateSpecInput is an input type that accepts CertificateSpecArgs and CertificateSpecOutput values.
// You can construct a concrete instance of `CertificateSpecInput` via:
//
//	CertificateSpecArgs{...}
type CertificateSpecInput interface {
	pulumi.Input

	ToCertificateSpecOutput() CertificateSpecOutput
	ToCertificateSpecOutputWithContext(context.Context) CertificateSpecOutput
}

// Desired state of the Certificate resource.
type CertificateSpecArgs struct {
	// CommonName is a common name to be used on the Certificate. The CommonName should have a length of 64 characters or fewer to avoid generating invalid CSRs. This value is ignored by TLS clients when any subject alt name is set. This is x509 behaviour: https://tools.ietf.org/html/rfc6125#section-6.4.4
	CommonName pulumi.StringPtrInput `pulumi:"commonName"`
	// DNSNames is a list of DNS subjectAltNames to be set on the Certificate.
	DnsNames pulumi.StringArrayInput `pulumi:"dnsNames"`
	// The requested 'duration' (i.e. lifetime) of the Certificate. This option may be ignored/overridden by some issuer types. If unset this defaults to 90 days. Certificate will be renewed either 2/3 through its duration or `renewBefore` period before its expiry, whichever is later. Minimum accepted duration is 1 hour. Value must be in units accepted by Go time.ParseDuration https://golang.org/pkg/time/#ParseDuration
	Duration pulumi.StringPtrInput `pulumi:"duration"`
	// EmailSANs is a list of email subjectAltNames to be set on the Certificate.
	EmailSANs pulumi.StringArrayInput `pulumi:"emailSANs"`
	// EncodeUsagesInRequest controls whether key usages should be present in the CertificateRequest
	EncodeUsagesInRequest pulumi.BoolPtrInput `pulumi:"encodeUsagesInRequest"`
	// IPAddresses is a list of IP address subjectAltNames to be set on the Certificate.
	IpAddresses pulumi.StringArrayInput `pulumi:"ipAddresses"`
	// IsCA will mark this Certificate as valid for certificate signing. This will automatically add the `cert sign` usage to the list of `usages`.
	IsCA pulumi.BoolPtrInput `pulumi:"isCA"`
	// IssuerRef is a reference to the issuer for this certificate. If the `kind` field is not set, or set to `Issuer`, an Issuer resource with the given name in the same namespace as the Certificate will be used. If the `kind` field is set to `ClusterIssuer`, a ClusterIssuer with the provided name will be used. The `name` field in this stanza is required at all times.
	IssuerRef CertificateSpecIssuerRefInput `pulumi:"issuerRef"`
	// Keystores configures additional keystore output formats stored in the `secretName` Secret resource.
	Keystores CertificateSpecKeystoresPtrInput `pulumi:"keystores"`
	// Options to control private keys used for the Certificate.
	PrivateKey CertificateSpecPrivateKeyPtrInput `pulumi:"privateKey"`
	// How long before the currently issued certificate's expiry cert-manager should renew the certificate. The default is 2/3 of the issued certificate's duration. Minimum accepted value is 5 minutes. Value must be in units accepted by Go time.ParseDuration https://golang.org/pkg/time/#ParseDuration
	RenewBefore pulumi.StringPtrInput `pulumi:"renewBefore"`
	// revisionHistoryLimit is the maximum number of CertificateRequest revisions that are maintained in the Certificate's history. Each revision represents a single `CertificateRequest` created by this Certificate, either when it was created, renewed, or Spec was changed. Revisions will be removed by oldest first if the number of revisions exceeds this number. If set, revisionHistoryLimit must be a value of `1` or greater. If unset (`nil`), revisions will not be garbage collected. Default value is `nil`.
	RevisionHistoryLimit pulumi.IntPtrInput `pulumi:"revisionHistoryLimit"`
	// SecretName is the name of the secret resource that will be automatically created and managed by this Certificate resource. It will be populated with a private key and certificate, signed by the denoted issuer.
	SecretName pulumi.StringInput `pulumi:"secretName"`
	// SecretTemplate defines annotations and labels to be propagated to the Kubernetes Secret when it is created or updated. Once created, labels and annotations are not yet removed from the Secret when they are removed from the template. See https://github.com/jetstack/cert-manager/issues/4292
	SecretTemplate CertificateSpecSecretTemplatePtrInput `pulumi:"secretTemplate"`
	// Full X509 name specification (https://golang.org/pkg/crypto/x509/pkix/#Name).
	Subject CertificateSpecSubjectPtrInput `pulumi:"subject"`
	// URISANs is a list of URI subjectAltNames to be set on the Certificate.
	UriSANs pulumi.StringArrayInput `pulumi:"uriSANs"`
	// Usages is the set of x509 usages that are requested for the certificate. Defaults to `digital signature` and `key encipherment` if not specified.
	Usages pulumi.StringArrayInput `pulumi:"usages"`
}

func (CertificateSpecArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*CertificateSpec)(nil)).Elem()
}

func (i CertificateSpecArgs) ToCertificateSpecOutput() CertificateSpecOutput {
	return i.ToCertificateSpecOutputWithContext(context.Background())
}

func (i CertificateSpecArgs) ToCertificateSpecOutputWithContext(ctx context.Context) CertificateSpecOutput {
	return pulumi.ToOutputWithContext(ctx, i).(CertificateSpecOutput)
}

func (i CertificateSpecArgs) ToOutput(ctx context.Context) pulumix.Output[CertificateSpec] {
	return pulumix.Output[CertificateSpec]{
		OutputState: i.ToCertificateSpecOutputWithContext(ctx).OutputState,
	}
}

func (i CertificateSpecArgs) ToCertificateSpecPtrOutput() CertificateSpecPtrOutput {
	return i.ToCertificateSpecPtrOutputWithContext(context.Background())
}

func (i CertificateSpecArgs) ToCertificateSpecPtrOutputWithContext(ctx context.Context) CertificateSpecPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(CertificateSpecOutput).ToCertificateSpecPtrOutputWithContext(ctx)
}

// CertificateSpecPtrInput is an input type that accepts CertificateSpecArgs, CertificateSpecPtr and CertificateSpecPtrOutput values.
// You can construct a concrete instance of `CertificateSpecPtrInput` via:
//
//	        CertificateSpecArgs{...}
//
//	or:
//
//	        nil
type CertificateSpecPtrInput interface {
	pulumi.Input

	ToCertificateSpecPtrOutput() CertificateSpecPtrOutput
	ToCertificateSpecPtrOutputWithContext(context.Context) CertificateSpecPtrOutput
}

type certificateSpecPtrType CertificateSpecArgs

func CertificateSpecPtr(v *CertificateSpecArgs) CertificateSpecPtrInput {
	return (*certificateSpecPtrType)(v)
}

func (*certificateSpecPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**CertificateSpec)(nil)).Elem()
}

func (i *certificateSpecPtrType) ToCertificateSpecPtrOutput() CertificateSpecPtrOutput {
	return i.ToCertificateSpecPtrOutputWithContext(context.Background())
}

func (i *certificateSpecPtrType) ToCertificateSpecPtrOutputWithContext(ctx context.Context) CertificateSpecPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(CertificateSpecPtrOutput)
}

func (i *certificateSpecPtrType) ToOutput(ctx context.Context) pulumix.Output[*CertificateSpec] {
	return pulumix.Output[*CertificateSpec]{
		OutputState: i.ToCertificateSpecPtrOutputWithContext(ctx).OutputState,
	}
}

// Desired state of the Certificate resource.
type CertificateSpecOutput struct{ *pulumi.OutputState }

func (CertificateSpecOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*CertificateSpec)(nil)).Elem()
}

func (o CertificateSpecOutput) ToCertificateSpecOutput() CertificateSpecOutput {
	return o
}

func (o CertificateSpecOutput) ToCertificateSpecOutputWithContext(ctx context.Context) CertificateSpecOutput {
	return o
}

func (o CertificateSpecOutput) ToCertificateSpecPtrOutput() CertificateSpecPtrOutput {
	return o.ToCertificateSpecPtrOutputWithContext(context.Background())
}

func (o CertificateSpecOutput) ToCertificateSpecPtrOutputWithContext(ctx context.Context) CertificateSpecPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v CertificateSpec) *CertificateSpec {
		return &v
	}).(CertificateSpecPtrOutput)
}

func (o CertificateSpecOutput) ToOutput(ctx context.Context) pulumix.Output[CertificateSpec] {
	return pulumix.Output[CertificateSpec]{
		OutputState: o.OutputState,
	}
}

// CommonName is a common name to be used on the Certificate. The CommonName should have a length of 64 characters or fewer to avoid generating invalid CSRs. This value is ignored by TLS clients when any subject alt name is set. This is x509 behaviour: https://tools.ietf.org/html/rfc6125#section-6.4.4
func (o CertificateSpecOutput) CommonName() pulumi.StringPtrOutput {
	return o.ApplyT(func(v CertificateSpec) *string { return v.CommonName }).(pulumi.StringPtrOutput)
}

// DNSNames is a list of DNS subjectAltNames to be set on the Certificate.
func (o CertificateSpecOutput) DnsNames() pulumi.StringArrayOutput {
	return o.ApplyT(func(v CertificateSpec) []string { return v.DnsNames }).(pulumi.StringArrayOutput)
}

// The requested 'duration' (i.e. lifetime) of the Certificate. This option may be ignored/overridden by some issuer types. If unset this defaults to 90 days. Certificate will be renewed either 2/3 through its duration or `renewBefore` period before its expiry, whichever is later. Minimum accepted duration is 1 hour. Value must be in units accepted by Go time.ParseDuration https://golang.org/pkg/time/#ParseDuration
func (o CertificateSpecOutput) Duration() pulumi.StringPtrOutput {
	return o.ApplyT(func(v CertificateSpec) *string { return v.Duration }).(pulumi.StringPtrOutput)
}

// EmailSANs is a list of email subjectAltNames to be set on the Certificate.
func (o CertificateSpecOutput) EmailSANs() pulumi.StringArrayOutput {
	return o.ApplyT(func(v CertificateSpec) []string { return v.EmailSANs }).(pulumi.StringArrayOutput)
}

// EncodeUsagesInRequest controls whether key usages should be present in the CertificateRequest
func (o CertificateSpecOutput) EncodeUsagesInRequest() pulumi.BoolPtrOutput {
	return o.ApplyT(func(v CertificateSpec) *bool { return v.EncodeUsagesInRequest }).(pulumi.BoolPtrOutput)
}

// IPAddresses is a list of IP address subjectAltNames to be set on the Certificate.
func (o CertificateSpecOutput) IpAddresses() pulumi.StringArrayOutput {
	return o.ApplyT(func(v CertificateSpec) []string { return v.IpAddresses }).(pulumi.StringArrayOutput)
}

// IsCA will mark this Certificate as valid for certificate signing. This will automatically add the `cert sign` usage to the list of `usages`.
func (o CertificateSpecOutput) IsCA() pulumi.BoolPtrOutput {
	return o.ApplyT(func(v CertificateSpec) *bool { return v.IsCA }).(pulumi.BoolPtrOutput)
}

// IssuerRef is a reference to the issuer for this certificate. If the `kind` field is not set, or set to `Issuer`, an Issuer resource with the given name in the same namespace as the Certificate will be used. If the `kind` field is set to `ClusterIssuer`, a ClusterIssuer with the provided name will be used. The `name` field in this stanza is required at all times.
func (o CertificateSpecOutput) IssuerRef() CertificateSpecIssuerRefOutput {
	return o.ApplyT(func(v CertificateSpec) CertificateSpecIssuerRef { return v.IssuerRef }).(CertificateSpecIssuerRefOutput)
}

// Keystores configures additional keystore output formats stored in the `secretName` Secret resource.
func (o CertificateSpecOutput) Keystores() CertificateSpecKeystoresPtrOutput {
	return o.ApplyT(func(v CertificateSpec) *CertificateSpecKeystores { return v.Keystores }).(CertificateSpecKeystoresPtrOutput)
}

// Options to control private keys used for the Certificate.
func (o CertificateSpecOutput) PrivateKey() CertificateSpecPrivateKeyPtrOutput {
	return o.ApplyT(func(v CertificateSpec) *CertificateSpecPrivateKey { return v.PrivateKey }).(CertificateSpecPrivateKeyPtrOutput)
}

// How long before the currently issued certificate's expiry cert-manager should renew the certificate. The default is 2/3 of the issued certificate's duration. Minimum accepted value is 5 minutes. Value must be in units accepted by Go time.ParseDuration https://golang.org/pkg/time/#ParseDuration
func (o CertificateSpecOutput) RenewBefore() pulumi.StringPtrOutput {
	return o.ApplyT(func(v CertificateSpec) *string { return v.RenewBefore }).(pulumi.StringPtrOutput)
}

// revisionHistoryLimit is the maximum number of CertificateRequest revisions that are maintained in the Certificate's history. Each revision represents a single `CertificateRequest` created by this Certificate, either when it was created, renewed, or Spec was changed. Revisions will be removed by oldest first if the number of revisions exceeds this number. If set, revisionHistoryLimit must be a value of `1` or greater. If unset (`nil`), revisions will not be garbage collected. Default value is `nil`.
func (o CertificateSpecOutput) RevisionHistoryLimit() pulumi.IntPtrOutput {
	return o.ApplyT(func(v CertificateSpec) *int { return v.RevisionHistoryLimit }).(pulumi.IntPtrOutput)
}

// SecretName is the name of the secret resource that will be automatically created and managed by this Certificate resource. It will be populated with a private key and certificate, signed by the denoted issuer.
func (o CertificateSpecOutput) SecretName() pulumi.StringOutput {
	return o.ApplyT(func(v CertificateSpec) string { return v.SecretName }).(pulumi.StringOutput)
}

// SecretTemplate defines annotations and labels to be propagated to the Kubernetes Secret when it is created or updated. Once created, labels and annotations are not yet removed from the Secret when they are removed from the template. See https://github.com/jetstack/cert-manager/issues/4292
func (o CertificateSpecOutput) SecretTemplate() CertificateSpecSecretTemplatePtrOutput {
	return o.ApplyT(func(v CertificateSpec) *CertificateSpecSecretTemplate { return v.SecretTemplate }).(CertificateSpecSecretTemplatePtrOutput)
}

// Full X509 name specification (https://golang.org/pkg/crypto/x509/pkix/#Name).
func (o CertificateSpecOutput) Subject() CertificateSpecSubjectPtrOutput {
	return o.ApplyT(func(v CertificateSpec) *CertificateSpecSubject { return v.Subject }).(CertificateSpecSubjectPtrOutput)
}

// URISANs is a list of URI subjectAltNames to be set on the Certificate.
func (o CertificateSpecOutput) UriSANs() pulumi.StringArrayOutput {
	return o.ApplyT(func(v CertificateSpec) []string { return v.UriSANs }).(pulumi.StringArrayOutput)
}

// Usages is the set of x509 usages that are requested for the certificate. Defaults to `digital signature` and `key encipherment` if not specified.
func (o CertificateSpecOutput) Usages() pulumi.StringArrayOutput {
	return o.ApplyT(func(v CertificateSpec) []string { return v.Usages }).(pulumi.StringArrayOutput)
}

type CertificateSpecPtrOutput struct{ *pulumi.OutputState }

func (CertificateSpecPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**CertificateSpec)(nil)).Elem()
}

func (o CertificateSpecPtrOutput) ToCertificateSpecPtrOutput() CertificateSpecPtrOutput {
	return o
}

func (o CertificateSpecPtrOutput) ToCertificateSpecPtrOutputWithContext(ctx context.Context) CertificateSpecPtrOutput {
	return o
}

func (o CertificateSpecPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*CertificateSpec] {
	return pulumix.Output[*CertificateSpec]{
		OutputState: o.OutputState,
	}
}

func (o CertificateSpecPtrOutput) Elem() CertificateSpecOutput {
	return o.ApplyT(func(v *CertificateSpec) CertificateSpec {
		if v != nil {
			return *v
		}
		var ret CertificateSpec
		return ret
	}).(CertificateSpecOutput)
}

// CommonName is a common name to be used on the Certificate. The CommonName should have a length of 64 characters or fewer to avoid generating invalid CSRs. This value is ignored by TLS clients when any subject alt name is set. This is x509 behaviour: https://tools.ietf.org/html/rfc6125#section-6.4.4
func (o CertificateSpecPtrOutput) CommonName() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *CertificateSpec) *string {
		if v == nil {
			return nil
		}
		return v.CommonName
	}).(pulumi.StringPtrOutput)
}

// DNSNames is a list of DNS subjectAltNames to be set on the Certificate.
func (o CertificateSpecPtrOutput) DnsNames() pulumi.StringArrayOutput {
	return o.ApplyT(func(v *CertificateSpec) []string {
		if v == nil {
			return nil
		}
		return v.DnsNames
	}).(pulumi.StringArrayOutput)
}

// The requested 'duration' (i.e. lifetime) of the Certificate. This option may be ignored/overridden by some issuer types. If unset this defaults to 90 days. Certificate will be renewed either 2/3 through its duration or `renewBefore` period before its expiry, whichever is later. Minimum accepted duration is 1 hour. Value must be in units accepted by Go time.ParseDuration https://golang.org/pkg/time/#ParseDuration
func (o CertificateSpecPtrOutput) Duration() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *CertificateSpec) *string {
		if v == nil {
			return nil
		}
		return v.Duration
	}).(pulumi.StringPtrOutput)
}

// EmailSANs is a list of email subjectAltNames to be set on the Certificate.
func (o CertificateSpecPtrOutput) EmailSANs() pulumi.StringArrayOutput {
	return o.ApplyT(func(v *CertificateSpec) []string {
		if v == nil {
			return nil
		}
		return v.EmailSANs
	}).(pulumi.StringArrayOutput)
}

// EncodeUsagesInRequest controls whether key usages should be present in the CertificateRequest
func (o CertificateSpecPtrOutput) EncodeUsagesInRequest() pulumi.BoolPtrOutput {
	return o.ApplyT(func(v *CertificateSpec) *bool {
		if v == nil {
			return nil
		}
		return v.EncodeUsagesInRequest
	}).(pulumi.BoolPtrOutput)
}

// IPAddresses is a list of IP address subjectAltNames to be set on the Certificate.
func (o CertificateSpecPtrOutput) IpAddresses() pulumi.StringArrayOutput {
	return o.ApplyT(func(v *CertificateSpec) []string {
		if v == nil {
			return nil
		}
		return v.IpAddresses
	}).(pulumi.StringArrayOutput)
}

// IsCA will mark this Certificate as valid for certificate signing. This will automatically add the `cert sign` usage to the list of `usages`.
func (o CertificateSpecPtrOutput) IsCA() pulumi.BoolPtrOutput {
	return o.ApplyT(func(v *CertificateSpec) *bool {
		if v == nil {
			return nil
		}
		return v.IsCA
	}).(pulumi.BoolPtrOutput)
}

// IssuerRef is a reference to the issuer for this certificate. If the `kind` field is not set, or set to `Issuer`, an Issuer resource with the given name in the same namespace as the Certificate will be used. If the `kind` field is set to `ClusterIssuer`, a ClusterIssuer with the provided name will be used. The `name` field in this stanza is required at all times.
func (o CertificateSpecPtrOutput) IssuerRef() CertificateSpecIssuerRefPtrOutput {
	return o.ApplyT(func(v *CertificateSpec) *CertificateSpecIssuerRef {
		if v == nil {
			return nil
		}
		return &v.IssuerRef
	}).(CertificateSpecIssuerRefPtrOutput)
}

// Keystores configures additional keystore output formats stored in the `secretName` Secret resource.
func (o CertificateSpecPtrOutput) Keystores() CertificateSpecKeystoresPtrOutput {
	return o.ApplyT(func(v *CertificateSpec) *CertificateSpecKeystores {
		if v == nil {
			return nil
		}
		return v.Keystores
	}).(CertificateSpecKeystoresPtrOutput)
}

// Options to control private keys used for the Certificate.
func (o CertificateSpecPtrOutput) PrivateKey() CertificateSpecPrivateKeyPtrOutput {
	return o.ApplyT(func(v *CertificateSpec) *CertificateSpecPrivateKey {
		if v == nil {
			return nil
		}
		return v.PrivateKey
	}).(CertificateSpecPrivateKeyPtrOutput)
}

// How long before the currently issued certificate's expiry cert-manager should renew the certificate. The default is 2/3 of the issued certificate's duration. Minimum accepted value is 5 minutes. Value must be in units accepted by Go time.ParseDuration https://golang.org/pkg/time/#ParseDuration
func (o CertificateSpecPtrOutput) RenewBefore() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *CertificateSpec) *string {
		if v == nil {
			return nil
		}
		return v.RenewBefore
	}).(pulumi.StringPtrOutput)
}

// revisionHistoryLimit is the maximum number of CertificateRequest revisions that are maintained in the Certificate's history. Each revision represents a single `CertificateRequest` created by this Certificate, either when it was created, renewed, or Spec was changed. Revisions will be removed by oldest first if the number of revisions exceeds this number. If set, revisionHistoryLimit must be a value of `1` or greater. If unset (`nil`), revisions will not be garbage collected. Default value is `nil`.
func (o CertificateSpecPtrOutput) RevisionHistoryLimit() pulumi.IntPtrOutput {
	return o.ApplyT(func(v *CertificateSpec) *int {
		if v == nil {
			return nil
		}
		return v.RevisionHistoryLimit
	}).(pulumi.IntPtrOutput)
}

// SecretName is the name of the secret resource that will be automatically created and managed by this Certificate resource. It will be populated with a private key and certificate, signed by the denoted issuer.
func (o CertificateSpecPtrOutput) SecretName() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *CertificateSpec) *string {
		if v == nil {
			return nil
		}
		return &v.SecretName
	}).(pulumi.StringPtrOutput)
}

// SecretTemplate defines annotations and labels to be propagated to the Kubernetes Secret when it is created or updated. Once created, labels and annotations are not yet removed from the Secret when they are removed from the template. See https://github.com/jetstack/cert-manager/issues/4292
func (o CertificateSpecPtrOutput) SecretTemplate() CertificateSpecSecretTemplatePtrOutput {
	return o.ApplyT(func(v *CertificateSpec) *CertificateSpecSecretTemplate {
		if v == nil {
			return nil
		}
		return v.SecretTemplate
	}).(CertificateSpecSecretTemplatePtrOutput)
}

// Full X509 name specification (https://golang.org/pkg/crypto/x509/pkix/#Name).
func (o CertificateSpecPtrOutput) Subject() CertificateSpecSubjectPtrOutput {
	return o.ApplyT(func(v *CertificateSpec) *CertificateSpecSubject {
		if v == nil {
			return nil
		}
		return v.Subject
	}).(CertificateSpecSubjectPtrOutput)
}

// URISANs is a list of URI subjectAltNames to be set on the Certificate.
func (o CertificateSpecPtrOutput) UriSANs() pulumi.StringArrayOutput {
	return o.ApplyT(func(v *CertificateSpec) []string {
		if v == nil {
			return nil
		}
		return v.UriSANs
	}).(pulumi.StringArrayOutput)
}

// Usages is the set of x509 usages that are requested for the certificate. Defaults to `digital signature` and `key encipherment` if not specified.
func (o CertificateSpecPtrOutput) Usages() pulumi.StringArrayOutput {
	return o.ApplyT(func(v *CertificateSpec) []string {
		if v == nil {
			return nil
		}
		return v.Usages
	}).(pulumi.StringArrayOutput)
}

// IssuerRef is a reference to the issuer for this certificate. If the `kind` field is not set, or set to `Issuer`, an Issuer resource with the given name in the same namespace as the Certificate will be used. If the `kind` field is set to `ClusterIssuer`, a ClusterIssuer with the provided name will be used. The `name` field in this stanza is required at all times.
type CertificateSpecIssuerRef struct {
	// Group of the resource being referred to.
	Group *string `pulumi:"group"`
	// Kind of the resource being referred to.
	Kind *string `pulumi:"kind"`
	// Name of the resource being referred to.
	Name string `pulumi:"name"`
}

// CertificateSpecIssuerRefInput is an input type that accepts CertificateSpecIssuerRefArgs and CertificateSpecIssuerRefOutput values.
// You can construct a concrete instance of `CertificateSpecIssuerRefInput` via:
//
//	CertificateSpecIssuerRefArgs{...}
type CertificateSpecIssuerRefInput interface {
	pulumi.Input

	ToCertificateSpecIssuerRefOutput() CertificateSpecIssuerRefOutput
	ToCertificateSpecIssuerRefOutputWithContext(context.Context) CertificateSpecIssuerRefOutput
}

// IssuerRef is a reference to the issuer for this certificate. If the `kind` field is not set, or set to `Issuer`, an Issuer resource with the given name in the same namespace as the Certificate will be used. If the `kind` field is set to `ClusterIssuer`, a ClusterIssuer with the provided name will be used. The `name` field in this stanza is required at all times.
type CertificateSpecIssuerRefArgs struct {
	// Group of the resource being referred to.
	Group pulumi.StringPtrInput `pulumi:"group"`
	// Kind of the resource being referred to.
	Kind pulumi.StringPtrInput `pulumi:"kind"`
	// Name of the resource being referred to.
	Name pulumi.StringInput `pulumi:"name"`
}

func (CertificateSpecIssuerRefArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*CertificateSpecIssuerRef)(nil)).Elem()
}

func (i CertificateSpecIssuerRefArgs) ToCertificateSpecIssuerRefOutput() CertificateSpecIssuerRefOutput {
	return i.ToCertificateSpecIssuerRefOutputWithContext(context.Background())
}

func (i CertificateSpecIssuerRefArgs) ToCertificateSpecIssuerRefOutputWithContext(ctx context.Context) CertificateSpecIssuerRefOutput {
	return pulumi.ToOutputWithContext(ctx, i).(CertificateSpecIssuerRefOutput)
}

func (i CertificateSpecIssuerRefArgs) ToOutput(ctx context.Context) pulumix.Output[CertificateSpecIssuerRef] {
	return pulumix.Output[CertificateSpecIssuerRef]{
		OutputState: i.ToCertificateSpecIssuerRefOutputWithContext(ctx).OutputState,
	}
}

func (i CertificateSpecIssuerRefArgs) ToCertificateSpecIssuerRefPtrOutput() CertificateSpecIssuerRefPtrOutput {
	return i.ToCertificateSpecIssuerRefPtrOutputWithContext(context.Background())
}

func (i CertificateSpecIssuerRefArgs) ToCertificateSpecIssuerRefPtrOutputWithContext(ctx context.Context) CertificateSpecIssuerRefPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(CertificateSpecIssuerRefOutput).ToCertificateSpecIssuerRefPtrOutputWithContext(ctx)
}

// CertificateSpecIssuerRefPtrInput is an input type that accepts CertificateSpecIssuerRefArgs, CertificateSpecIssuerRefPtr and CertificateSpecIssuerRefPtrOutput values.
// You can construct a concrete instance of `CertificateSpecIssuerRefPtrInput` via:
//
//	        CertificateSpecIssuerRefArgs{...}
//
//	or:
//
//	        nil
type CertificateSpecIssuerRefPtrInput interface {
	pulumi.Input

	ToCertificateSpecIssuerRefPtrOutput() CertificateSpecIssuerRefPtrOutput
	ToCertificateSpecIssuerRefPtrOutputWithContext(context.Context) CertificateSpecIssuerRefPtrOutput
}

type certificateSpecIssuerRefPtrType CertificateSpecIssuerRefArgs

func CertificateSpecIssuerRefPtr(v *CertificateSpecIssuerRefArgs) CertificateSpecIssuerRefPtrInput {
	return (*certificateSpecIssuerRefPtrType)(v)
}

func (*certificateSpecIssuerRefPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**CertificateSpecIssuerRef)(nil)).Elem()
}

func (i *certificateSpecIssuerRefPtrType) ToCertificateSpecIssuerRefPtrOutput() CertificateSpecIssuerRefPtrOutput {
	return i.ToCertificateSpecIssuerRefPtrOutputWithContext(context.Background())
}

func (i *certificateSpecIssuerRefPtrType) ToCertificateSpecIssuerRefPtrOutputWithContext(ctx context.Context) CertificateSpecIssuerRefPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(CertificateSpecIssuerRefPtrOutput)
}

func (i *certificateSpecIssuerRefPtrType) ToOutput(ctx context.Context) pulumix.Output[*CertificateSpecIssuerRef] {
	return pulumix.Output[*CertificateSpecIssuerRef]{
		OutputState: i.ToCertificateSpecIssuerRefPtrOutputWithContext(ctx).OutputState,
	}
}

// IssuerRef is a reference to the issuer for this certificate. If the `kind` field is not set, or set to `Issuer`, an Issuer resource with the given name in the same namespace as the Certificate will be used. If the `kind` field is set to `ClusterIssuer`, a ClusterIssuer with the provided name will be used. The `name` field in this stanza is required at all times.
type CertificateSpecIssuerRefOutput struct{ *pulumi.OutputState }

func (CertificateSpecIssuerRefOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*CertificateSpecIssuerRef)(nil)).Elem()
}

func (o CertificateSpecIssuerRefOutput) ToCertificateSpecIssuerRefOutput() CertificateSpecIssuerRefOutput {
	return o
}

func (o CertificateSpecIssuerRefOutput) ToCertificateSpecIssuerRefOutputWithContext(ctx context.Context) CertificateSpecIssuerRefOutput {
	return o
}

func (o CertificateSpecIssuerRefOutput) ToCertificateSpecIssuerRefPtrOutput() CertificateSpecIssuerRefPtrOutput {
	return o.ToCertificateSpecIssuerRefPtrOutputWithContext(context.Background())
}

func (o CertificateSpecIssuerRefOutput) ToCertificateSpecIssuerRefPtrOutputWithContext(ctx context.Context) CertificateSpecIssuerRefPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v CertificateSpecIssuerRef) *CertificateSpecIssuerRef {
		return &v
	}).(CertificateSpecIssuerRefPtrOutput)
}

func (o CertificateSpecIssuerRefOutput) ToOutput(ctx context.Context) pulumix.Output[CertificateSpecIssuerRef] {
	return pulumix.Output[CertificateSpecIssuerRef]{
		OutputState: o.OutputState,
	}
}

// Group of the resource being referred to.
func (o CertificateSpecIssuerRefOutput) Group() pulumi.StringPtrOutput {
	return o.ApplyT(func(v CertificateSpecIssuerRef) *string { return v.Group }).(pulumi.StringPtrOutput)
}

// Kind of the resource being referred to.
func (o CertificateSpecIssuerRefOutput) Kind() pulumi.StringPtrOutput {
	return o.ApplyT(func(v CertificateSpecIssuerRef) *string { return v.Kind }).(pulumi.StringPtrOutput)
}

// Name of the resource being referred to.
func (o CertificateSpecIssuerRefOutput) Name() pulumi.StringOutput {
	return o.ApplyT(func(v CertificateSpecIssuerRef) string { return v.Name }).(pulumi.StringOutput)
}

type CertificateSpecIssuerRefPtrOutput struct{ *pulumi.OutputState }

func (CertificateSpecIssuerRefPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**CertificateSpecIssuerRef)(nil)).Elem()
}

func (o CertificateSpecIssuerRefPtrOutput) ToCertificateSpecIssuerRefPtrOutput() CertificateSpecIssuerRefPtrOutput {
	return o
}

func (o CertificateSpecIssuerRefPtrOutput) ToCertificateSpecIssuerRefPtrOutputWithContext(ctx context.Context) CertificateSpecIssuerRefPtrOutput {
	return o
}

func (o CertificateSpecIssuerRefPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*CertificateSpecIssuerRef] {
	return pulumix.Output[*CertificateSpecIssuerRef]{
		OutputState: o.OutputState,
	}
}

func (o CertificateSpecIssuerRefPtrOutput) Elem() CertificateSpecIssuerRefOutput {
	return o.ApplyT(func(v *CertificateSpecIssuerRef) CertificateSpecIssuerRef {
		if v != nil {
			return *v
		}
		var ret CertificateSpecIssuerRef
		return ret
	}).(CertificateSpecIssuerRefOutput)
}

// Group of the resource being referred to.
func (o CertificateSpecIssuerRefPtrOutput) Group() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *CertificateSpecIssuerRef) *string {
		if v == nil {
			return nil
		}
		return v.Group
	}).(pulumi.StringPtrOutput)
}

// Kind of the resource being referred to.
func (o CertificateSpecIssuerRefPtrOutput) Kind() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *CertificateSpecIssuerRef) *string {
		if v == nil {
			return nil
		}
		return v.Kind
	}).(pulumi.StringPtrOutput)
}

// Name of the resource being referred to.
func (o CertificateSpecIssuerRefPtrOutput) Name() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *CertificateSpecIssuerRef) *string {
		if v == nil {
			return nil
		}
		return &v.Name
	}).(pulumi.StringPtrOutput)
}

// Keystores configures additional keystore output formats stored in the `secretName` Secret resource.
type CertificateSpecKeystores struct {
	// JKS configures options for storing a JKS keystore in the `spec.secretName` Secret resource.
	Jks *CertificateSpecKeystoresJks `pulumi:"jks"`
	// PKCS12 configures options for storing a PKCS12 keystore in the `spec.secretName` Secret resource.
	Pkcs12 *CertificateSpecKeystoresPkcs12 `pulumi:"pkcs12"`
}

// CertificateSpecKeystoresInput is an input type that accepts CertificateSpecKeystoresArgs and CertificateSpecKeystoresOutput values.
// You can construct a concrete instance of `CertificateSpecKeystoresInput` via:
//
//	CertificateSpecKeystoresArgs{...}
type CertificateSpecKeystoresInput interface {
	pulumi.Input

	ToCertificateSpecKeystoresOutput() CertificateSpecKeystoresOutput
	ToCertificateSpecKeystoresOutputWithContext(context.Context) CertificateSpecKeystoresOutput
}

// Keystores configures additional keystore output formats stored in the `secretName` Secret resource.
type CertificateSpecKeystoresArgs struct {
	// JKS configures options for storing a JKS keystore in the `spec.secretName` Secret resource.
	Jks CertificateSpecKeystoresJksPtrInput `pulumi:"jks"`
	// PKCS12 configures options for storing a PKCS12 keystore in the `spec.secretName` Secret resource.
	Pkcs12 CertificateSpecKeystoresPkcs12PtrInput `pulumi:"pkcs12"`
}

func (CertificateSpecKeystoresArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*CertificateSpecKeystores)(nil)).Elem()
}

func (i CertificateSpecKeystoresArgs) ToCertificateSpecKeystoresOutput() CertificateSpecKeystoresOutput {
	return i.ToCertificateSpecKeystoresOutputWithContext(context.Background())
}

func (i CertificateSpecKeystoresArgs) ToCertificateSpecKeystoresOutputWithContext(ctx context.Context) CertificateSpecKeystoresOutput {
	return pulumi.ToOutputWithContext(ctx, i).(CertificateSpecKeystoresOutput)
}

func (i CertificateSpecKeystoresArgs) ToOutput(ctx context.Context) pulumix.Output[CertificateSpecKeystores] {
	return pulumix.Output[CertificateSpecKeystores]{
		OutputState: i.ToCertificateSpecKeystoresOutputWithContext(ctx).OutputState,
	}
}

func (i CertificateSpecKeystoresArgs) ToCertificateSpecKeystoresPtrOutput() CertificateSpecKeystoresPtrOutput {
	return i.ToCertificateSpecKeystoresPtrOutputWithContext(context.Background())
}

func (i CertificateSpecKeystoresArgs) ToCertificateSpecKeystoresPtrOutputWithContext(ctx context.Context) CertificateSpecKeystoresPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(CertificateSpecKeystoresOutput).ToCertificateSpecKeystoresPtrOutputWithContext(ctx)
}

// CertificateSpecKeystoresPtrInput is an input type that accepts CertificateSpecKeystoresArgs, CertificateSpecKeystoresPtr and CertificateSpecKeystoresPtrOutput values.
// You can construct a concrete instance of `CertificateSpecKeystoresPtrInput` via:
//
//	        CertificateSpecKeystoresArgs{...}
//
//	or:
//
//	        nil
type CertificateSpecKeystoresPtrInput interface {
	pulumi.Input

	ToCertificateSpecKeystoresPtrOutput() CertificateSpecKeystoresPtrOutput
	ToCertificateSpecKeystoresPtrOutputWithContext(context.Context) CertificateSpecKeystoresPtrOutput
}

type certificateSpecKeystoresPtrType CertificateSpecKeystoresArgs

func CertificateSpecKeystoresPtr(v *CertificateSpecKeystoresArgs) CertificateSpecKeystoresPtrInput {
	return (*certificateSpecKeystoresPtrType)(v)
}

func (*certificateSpecKeystoresPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**CertificateSpecKeystores)(nil)).Elem()
}

func (i *certificateSpecKeystoresPtrType) ToCertificateSpecKeystoresPtrOutput() CertificateSpecKeystoresPtrOutput {
	return i.ToCertificateSpecKeystoresPtrOutputWithContext(context.Background())
}

func (i *certificateSpecKeystoresPtrType) ToCertificateSpecKeystoresPtrOutputWithContext(ctx context.Context) CertificateSpecKeystoresPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(CertificateSpecKeystoresPtrOutput)
}

func (i *certificateSpecKeystoresPtrType) ToOutput(ctx context.Context) pulumix.Output[*CertificateSpecKeystores] {
	return pulumix.Output[*CertificateSpecKeystores]{
		OutputState: i.ToCertificateSpecKeystoresPtrOutputWithContext(ctx).OutputState,
	}
}

// Keystores configures additional keystore output formats stored in the `secretName` Secret resource.
type CertificateSpecKeystoresOutput struct{ *pulumi.OutputState }

func (CertificateSpecKeystoresOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*CertificateSpecKeystores)(nil)).Elem()
}

func (o CertificateSpecKeystoresOutput) ToCertificateSpecKeystoresOutput() CertificateSpecKeystoresOutput {
	return o
}

func (o CertificateSpecKeystoresOutput) ToCertificateSpecKeystoresOutputWithContext(ctx context.Context) CertificateSpecKeystoresOutput {
	return o
}

func (o CertificateSpecKeystoresOutput) ToCertificateSpecKeystoresPtrOutput() CertificateSpecKeystoresPtrOutput {
	return o.ToCertificateSpecKeystoresPtrOutputWithContext(context.Background())
}

func (o CertificateSpecKeystoresOutput) ToCertificateSpecKeystoresPtrOutputWithContext(ctx context.Context) CertificateSpecKeystoresPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v CertificateSpecKeystores) *CertificateSpecKeystores {
		return &v
	}).(CertificateSpecKeystoresPtrOutput)
}

func (o CertificateSpecKeystoresOutput) ToOutput(ctx context.Context) pulumix.Output[CertificateSpecKeystores] {
	return pulumix.Output[CertificateSpecKeystores]{
		OutputState: o.OutputState,
	}
}

// JKS configures options for storing a JKS keystore in the `spec.secretName` Secret resource.
func (o CertificateSpecKeystoresOutput) Jks() CertificateSpecKeystoresJksPtrOutput {
	return o.ApplyT(func(v CertificateSpecKeystores) *CertificateSpecKeystoresJks { return v.Jks }).(CertificateSpecKeystoresJksPtrOutput)
}

// PKCS12 configures options for storing a PKCS12 keystore in the `spec.secretName` Secret resource.
func (o CertificateSpecKeystoresOutput) Pkcs12() CertificateSpecKeystoresPkcs12PtrOutput {
	return o.ApplyT(func(v CertificateSpecKeystores) *CertificateSpecKeystoresPkcs12 { return v.Pkcs12 }).(CertificateSpecKeystoresPkcs12PtrOutput)
}

type CertificateSpecKeystoresPtrOutput struct{ *pulumi.OutputState }

func (CertificateSpecKeystoresPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**CertificateSpecKeystores)(nil)).Elem()
}

func (o CertificateSpecKeystoresPtrOutput) ToCertificateSpecKeystoresPtrOutput() CertificateSpecKeystoresPtrOutput {
	return o
}

func (o CertificateSpecKeystoresPtrOutput) ToCertificateSpecKeystoresPtrOutputWithContext(ctx context.Context) CertificateSpecKeystoresPtrOutput {
	return o
}

func (o CertificateSpecKeystoresPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*CertificateSpecKeystores] {
	return pulumix.Output[*CertificateSpecKeystores]{
		OutputState: o.OutputState,
	}
}

func (o CertificateSpecKeystoresPtrOutput) Elem() CertificateSpecKeystoresOutput {
	return o.ApplyT(func(v *CertificateSpecKeystores) CertificateSpecKeystores {
		if v != nil {
			return *v
		}
		var ret CertificateSpecKeystores
		return ret
	}).(CertificateSpecKeystoresOutput)
}

// JKS configures options for storing a JKS keystore in the `spec.secretName` Secret resource.
func (o CertificateSpecKeystoresPtrOutput) Jks() CertificateSpecKeystoresJksPtrOutput {
	return o.ApplyT(func(v *CertificateSpecKeystores) *CertificateSpecKeystoresJks {
		if v == nil {
			return nil
		}
		return v.Jks
	}).(CertificateSpecKeystoresJksPtrOutput)
}

// PKCS12 configures options for storing a PKCS12 keystore in the `spec.secretName` Secret resource.
func (o CertificateSpecKeystoresPtrOutput) Pkcs12() CertificateSpecKeystoresPkcs12PtrOutput {
	return o.ApplyT(func(v *CertificateSpecKeystores) *CertificateSpecKeystoresPkcs12 {
		if v == nil {
			return nil
		}
		return v.Pkcs12
	}).(CertificateSpecKeystoresPkcs12PtrOutput)
}

// JKS configures options for storing a JKS keystore in the `spec.secretName` Secret resource.
type CertificateSpecKeystoresJks struct {
	// Create enables JKS keystore creation for the Certificate. If true, a file named `keystore.jks` will be created in the target Secret resource, encrypted using the password stored in `passwordSecretRef`. The keystore file will only be updated upon re-issuance.
	Create bool `pulumi:"create"`
	// PasswordSecretRef is a reference to a key in a Secret resource containing the password used to encrypt the JKS keystore.
	PasswordSecretRef CertificateSpecKeystoresJksPasswordSecretRef `pulumi:"passwordSecretRef"`
}

// CertificateSpecKeystoresJksInput is an input type that accepts CertificateSpecKeystoresJksArgs and CertificateSpecKeystoresJksOutput values.
// You can construct a concrete instance of `CertificateSpecKeystoresJksInput` via:
//
//	CertificateSpecKeystoresJksArgs{...}
type CertificateSpecKeystoresJksInput interface {
	pulumi.Input

	ToCertificateSpecKeystoresJksOutput() CertificateSpecKeystoresJksOutput
	ToCertificateSpecKeystoresJksOutputWithContext(context.Context) CertificateSpecKeystoresJksOutput
}

// JKS configures options for storing a JKS keystore in the `spec.secretName` Secret resource.
type CertificateSpecKeystoresJksArgs struct {
	// Create enables JKS keystore creation for the Certificate. If true, a file named `keystore.jks` will be created in the target Secret resource, encrypted using the password stored in `passwordSecretRef`. The keystore file will only be updated upon re-issuance.
	Create pulumi.BoolInput `pulumi:"create"`
	// PasswordSecretRef is a reference to a key in a Secret resource containing the password used to encrypt the JKS keystore.
	PasswordSecretRef CertificateSpecKeystoresJksPasswordSecretRefInput `pulumi:"passwordSecretRef"`
}

func (CertificateSpecKeystoresJksArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*CertificateSpecKeystoresJks)(nil)).Elem()
}

func (i CertificateSpecKeystoresJksArgs) ToCertificateSpecKeystoresJksOutput() CertificateSpecKeystoresJksOutput {
	return i.ToCertificateSpecKeystoresJksOutputWithContext(context.Background())
}

func (i CertificateSpecKeystoresJksArgs) ToCertificateSpecKeystoresJksOutputWithContext(ctx context.Context) CertificateSpecKeystoresJksOutput {
	return pulumi.ToOutputWithContext(ctx, i).(CertificateSpecKeystoresJksOutput)
}

func (i CertificateSpecKeystoresJksArgs) ToOutput(ctx context.Context) pulumix.Output[CertificateSpecKeystoresJks] {
	return pulumix.Output[CertificateSpecKeystoresJks]{
		OutputState: i.ToCertificateSpecKeystoresJksOutputWithContext(ctx).OutputState,
	}
}

func (i CertificateSpecKeystoresJksArgs) ToCertificateSpecKeystoresJksPtrOutput() CertificateSpecKeystoresJksPtrOutput {
	return i.ToCertificateSpecKeystoresJksPtrOutputWithContext(context.Background())
}

func (i CertificateSpecKeystoresJksArgs) ToCertificateSpecKeystoresJksPtrOutputWithContext(ctx context.Context) CertificateSpecKeystoresJksPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(CertificateSpecKeystoresJksOutput).ToCertificateSpecKeystoresJksPtrOutputWithContext(ctx)
}

// CertificateSpecKeystoresJksPtrInput is an input type that accepts CertificateSpecKeystoresJksArgs, CertificateSpecKeystoresJksPtr and CertificateSpecKeystoresJksPtrOutput values.
// You can construct a concrete instance of `CertificateSpecKeystoresJksPtrInput` via:
//
//	        CertificateSpecKeystoresJksArgs{...}
//
//	or:
//
//	        nil
type CertificateSpecKeystoresJksPtrInput interface {
	pulumi.Input

	ToCertificateSpecKeystoresJksPtrOutput() CertificateSpecKeystoresJksPtrOutput
	ToCertificateSpecKeystoresJksPtrOutputWithContext(context.Context) CertificateSpecKeystoresJksPtrOutput
}

type certificateSpecKeystoresJksPtrType CertificateSpecKeystoresJksArgs

func CertificateSpecKeystoresJksPtr(v *CertificateSpecKeystoresJksArgs) CertificateSpecKeystoresJksPtrInput {
	return (*certificateSpecKeystoresJksPtrType)(v)
}

func (*certificateSpecKeystoresJksPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**CertificateSpecKeystoresJks)(nil)).Elem()
}

func (i *certificateSpecKeystoresJksPtrType) ToCertificateSpecKeystoresJksPtrOutput() CertificateSpecKeystoresJksPtrOutput {
	return i.ToCertificateSpecKeystoresJksPtrOutputWithContext(context.Background())
}

func (i *certificateSpecKeystoresJksPtrType) ToCertificateSpecKeystoresJksPtrOutputWithContext(ctx context.Context) CertificateSpecKeystoresJksPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(CertificateSpecKeystoresJksPtrOutput)
}

func (i *certificateSpecKeystoresJksPtrType) ToOutput(ctx context.Context) pulumix.Output[*CertificateSpecKeystoresJks] {
	return pulumix.Output[*CertificateSpecKeystoresJks]{
		OutputState: i.ToCertificateSpecKeystoresJksPtrOutputWithContext(ctx).OutputState,
	}
}

// JKS configures options for storing a JKS keystore in the `spec.secretName` Secret resource.
type CertificateSpecKeystoresJksOutput struct{ *pulumi.OutputState }

func (CertificateSpecKeystoresJksOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*CertificateSpecKeystoresJks)(nil)).Elem()
}

func (o CertificateSpecKeystoresJksOutput) ToCertificateSpecKeystoresJksOutput() CertificateSpecKeystoresJksOutput {
	return o
}

func (o CertificateSpecKeystoresJksOutput) ToCertificateSpecKeystoresJksOutputWithContext(ctx context.Context) CertificateSpecKeystoresJksOutput {
	return o
}

func (o CertificateSpecKeystoresJksOutput) ToCertificateSpecKeystoresJksPtrOutput() CertificateSpecKeystoresJksPtrOutput {
	return o.ToCertificateSpecKeystoresJksPtrOutputWithContext(context.Background())
}

func (o CertificateSpecKeystoresJksOutput) ToCertificateSpecKeystoresJksPtrOutputWithContext(ctx context.Context) CertificateSpecKeystoresJksPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v CertificateSpecKeystoresJks) *CertificateSpecKeystoresJks {
		return &v
	}).(CertificateSpecKeystoresJksPtrOutput)
}

func (o CertificateSpecKeystoresJksOutput) ToOutput(ctx context.Context) pulumix.Output[CertificateSpecKeystoresJks] {
	return pulumix.Output[CertificateSpecKeystoresJks]{
		OutputState: o.OutputState,
	}
}

// Create enables JKS keystore creation for the Certificate. If true, a file named `keystore.jks` will be created in the target Secret resource, encrypted using the password stored in `passwordSecretRef`. The keystore file will only be updated upon re-issuance.
func (o CertificateSpecKeystoresJksOutput) Create() pulumi.BoolOutput {
	return o.ApplyT(func(v CertificateSpecKeystoresJks) bool { return v.Create }).(pulumi.BoolOutput)
}

// PasswordSecretRef is a reference to a key in a Secret resource containing the password used to encrypt the JKS keystore.
func (o CertificateSpecKeystoresJksOutput) PasswordSecretRef() CertificateSpecKeystoresJksPasswordSecretRefOutput {
	return o.ApplyT(func(v CertificateSpecKeystoresJks) CertificateSpecKeystoresJksPasswordSecretRef {
		return v.PasswordSecretRef
	}).(CertificateSpecKeystoresJksPasswordSecretRefOutput)
}

type CertificateSpecKeystoresJksPtrOutput struct{ *pulumi.OutputState }

func (CertificateSpecKeystoresJksPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**CertificateSpecKeystoresJks)(nil)).Elem()
}

func (o CertificateSpecKeystoresJksPtrOutput) ToCertificateSpecKeystoresJksPtrOutput() CertificateSpecKeystoresJksPtrOutput {
	return o
}

func (o CertificateSpecKeystoresJksPtrOutput) ToCertificateSpecKeystoresJksPtrOutputWithContext(ctx context.Context) CertificateSpecKeystoresJksPtrOutput {
	return o
}

func (o CertificateSpecKeystoresJksPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*CertificateSpecKeystoresJks] {
	return pulumix.Output[*CertificateSpecKeystoresJks]{
		OutputState: o.OutputState,
	}
}

func (o CertificateSpecKeystoresJksPtrOutput) Elem() CertificateSpecKeystoresJksOutput {
	return o.ApplyT(func(v *CertificateSpecKeystoresJks) CertificateSpecKeystoresJks {
		if v != nil {
			return *v
		}
		var ret CertificateSpecKeystoresJks
		return ret
	}).(CertificateSpecKeystoresJksOutput)
}

// Create enables JKS keystore creation for the Certificate. If true, a file named `keystore.jks` will be created in the target Secret resource, encrypted using the password stored in `passwordSecretRef`. The keystore file will only be updated upon re-issuance.
func (o CertificateSpecKeystoresJksPtrOutput) Create() pulumi.BoolPtrOutput {
	return o.ApplyT(func(v *CertificateSpecKeystoresJks) *bool {
		if v == nil {
			return nil
		}
		return &v.Create
	}).(pulumi.BoolPtrOutput)
}

// PasswordSecretRef is a reference to a key in a Secret resource containing the password used to encrypt the JKS keystore.
func (o CertificateSpecKeystoresJksPtrOutput) PasswordSecretRef() CertificateSpecKeystoresJksPasswordSecretRefPtrOutput {
	return o.ApplyT(func(v *CertificateSpecKeystoresJks) *CertificateSpecKeystoresJksPasswordSecretRef {
		if v == nil {
			return nil
		}
		return &v.PasswordSecretRef
	}).(CertificateSpecKeystoresJksPasswordSecretRefPtrOutput)
}

// PasswordSecretRef is a reference to a key in a Secret resource containing the password used to encrypt the JKS keystore.
type CertificateSpecKeystoresJksPasswordSecretRef struct {
	// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
	Key *string `pulumi:"key"`
	// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
	Name string `pulumi:"name"`
}

// CertificateSpecKeystoresJksPasswordSecretRefInput is an input type that accepts CertificateSpecKeystoresJksPasswordSecretRefArgs and CertificateSpecKeystoresJksPasswordSecretRefOutput values.
// You can construct a concrete instance of `CertificateSpecKeystoresJksPasswordSecretRefInput` via:
//
//	CertificateSpecKeystoresJksPasswordSecretRefArgs{...}
type CertificateSpecKeystoresJksPasswordSecretRefInput interface {
	pulumi.Input

	ToCertificateSpecKeystoresJksPasswordSecretRefOutput() CertificateSpecKeystoresJksPasswordSecretRefOutput
	ToCertificateSpecKeystoresJksPasswordSecretRefOutputWithContext(context.Context) CertificateSpecKeystoresJksPasswordSecretRefOutput
}

// PasswordSecretRef is a reference to a key in a Secret resource containing the password used to encrypt the JKS keystore.
type CertificateSpecKeystoresJksPasswordSecretRefArgs struct {
	// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
	Key pulumi.StringPtrInput `pulumi:"key"`
	// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
	Name pulumi.StringInput `pulumi:"name"`
}

func (CertificateSpecKeystoresJksPasswordSecretRefArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*CertificateSpecKeystoresJksPasswordSecretRef)(nil)).Elem()
}

func (i CertificateSpecKeystoresJksPasswordSecretRefArgs) ToCertificateSpecKeystoresJksPasswordSecretRefOutput() CertificateSpecKeystoresJksPasswordSecretRefOutput {
	return i.ToCertificateSpecKeystoresJksPasswordSecretRefOutputWithContext(context.Background())
}

func (i CertificateSpecKeystoresJksPasswordSecretRefArgs) ToCertificateSpecKeystoresJksPasswordSecretRefOutputWithContext(ctx context.Context) CertificateSpecKeystoresJksPasswordSecretRefOutput {
	return pulumi.ToOutputWithContext(ctx, i).(CertificateSpecKeystoresJksPasswordSecretRefOutput)
}

func (i CertificateSpecKeystoresJksPasswordSecretRefArgs) ToOutput(ctx context.Context) pulumix.Output[CertificateSpecKeystoresJksPasswordSecretRef] {
	return pulumix.Output[CertificateSpecKeystoresJksPasswordSecretRef]{
		OutputState: i.ToCertificateSpecKeystoresJksPasswordSecretRefOutputWithContext(ctx).OutputState,
	}
}

func (i CertificateSpecKeystoresJksPasswordSecretRefArgs) ToCertificateSpecKeystoresJksPasswordSecretRefPtrOutput() CertificateSpecKeystoresJksPasswordSecretRefPtrOutput {
	return i.ToCertificateSpecKeystoresJksPasswordSecretRefPtrOutputWithContext(context.Background())
}

func (i CertificateSpecKeystoresJksPasswordSecretRefArgs) ToCertificateSpecKeystoresJksPasswordSecretRefPtrOutputWithContext(ctx context.Context) CertificateSpecKeystoresJksPasswordSecretRefPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(CertificateSpecKeystoresJksPasswordSecretRefOutput).ToCertificateSpecKeystoresJksPasswordSecretRefPtrOutputWithContext(ctx)
}

// CertificateSpecKeystoresJksPasswordSecretRefPtrInput is an input type that accepts CertificateSpecKeystoresJksPasswordSecretRefArgs, CertificateSpecKeystoresJksPasswordSecretRefPtr and CertificateSpecKeystoresJksPasswordSecretRefPtrOutput values.
// You can construct a concrete instance of `CertificateSpecKeystoresJksPasswordSecretRefPtrInput` via:
//
//	        CertificateSpecKeystoresJksPasswordSecretRefArgs{...}
//
//	or:
//
//	        nil
type CertificateSpecKeystoresJksPasswordSecretRefPtrInput interface {
	pulumi.Input

	ToCertificateSpecKeystoresJksPasswordSecretRefPtrOutput() CertificateSpecKeystoresJksPasswordSecretRefPtrOutput
	ToCertificateSpecKeystoresJksPasswordSecretRefPtrOutputWithContext(context.Context) CertificateSpecKeystoresJksPasswordSecretRefPtrOutput
}

type certificateSpecKeystoresJksPasswordSecretRefPtrType CertificateSpecKeystoresJksPasswordSecretRefArgs

func CertificateSpecKeystoresJksPasswordSecretRefPtr(v *CertificateSpecKeystoresJksPasswordSecretRefArgs) CertificateSpecKeystoresJksPasswordSecretRefPtrInput {
	return (*certificateSpecKeystoresJksPasswordSecretRefPtrType)(v)
}

func (*certificateSpecKeystoresJksPasswordSecretRefPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**CertificateSpecKeystoresJksPasswordSecretRef)(nil)).Elem()
}

func (i *certificateSpecKeystoresJksPasswordSecretRefPtrType) ToCertificateSpecKeystoresJksPasswordSecretRefPtrOutput() CertificateSpecKeystoresJksPasswordSecretRefPtrOutput {
	return i.ToCertificateSpecKeystoresJksPasswordSecretRefPtrOutputWithContext(context.Background())
}

func (i *certificateSpecKeystoresJksPasswordSecretRefPtrType) ToCertificateSpecKeystoresJksPasswordSecretRefPtrOutputWithContext(ctx context.Context) CertificateSpecKeystoresJksPasswordSecretRefPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(CertificateSpecKeystoresJksPasswordSecretRefPtrOutput)
}

func (i *certificateSpecKeystoresJksPasswordSecretRefPtrType) ToOutput(ctx context.Context) pulumix.Output[*CertificateSpecKeystoresJksPasswordSecretRef] {
	return pulumix.Output[*CertificateSpecKeystoresJksPasswordSecretRef]{
		OutputState: i.ToCertificateSpecKeystoresJksPasswordSecretRefPtrOutputWithContext(ctx).OutputState,
	}
}

// PasswordSecretRef is a reference to a key in a Secret resource containing the password used to encrypt the JKS keystore.
type CertificateSpecKeystoresJksPasswordSecretRefOutput struct{ *pulumi.OutputState }

func (CertificateSpecKeystoresJksPasswordSecretRefOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*CertificateSpecKeystoresJksPasswordSecretRef)(nil)).Elem()
}

func (o CertificateSpecKeystoresJksPasswordSecretRefOutput) ToCertificateSpecKeystoresJksPasswordSecretRefOutput() CertificateSpecKeystoresJksPasswordSecretRefOutput {
	return o
}

func (o CertificateSpecKeystoresJksPasswordSecretRefOutput) ToCertificateSpecKeystoresJksPasswordSecretRefOutputWithContext(ctx context.Context) CertificateSpecKeystoresJksPasswordSecretRefOutput {
	return o
}

func (o CertificateSpecKeystoresJksPasswordSecretRefOutput) ToCertificateSpecKeystoresJksPasswordSecretRefPtrOutput() CertificateSpecKeystoresJksPasswordSecretRefPtrOutput {
	return o.ToCertificateSpecKeystoresJksPasswordSecretRefPtrOutputWithContext(context.Background())
}

func (o CertificateSpecKeystoresJksPasswordSecretRefOutput) ToCertificateSpecKeystoresJksPasswordSecretRefPtrOutputWithContext(ctx context.Context) CertificateSpecKeystoresJksPasswordSecretRefPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v CertificateSpecKeystoresJksPasswordSecretRef) *CertificateSpecKeystoresJksPasswordSecretRef {
		return &v
	}).(CertificateSpecKeystoresJksPasswordSecretRefPtrOutput)
}

func (o CertificateSpecKeystoresJksPasswordSecretRefOutput) ToOutput(ctx context.Context) pulumix.Output[CertificateSpecKeystoresJksPasswordSecretRef] {
	return pulumix.Output[CertificateSpecKeystoresJksPasswordSecretRef]{
		OutputState: o.OutputState,
	}
}

// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
func (o CertificateSpecKeystoresJksPasswordSecretRefOutput) Key() pulumi.StringPtrOutput {
	return o.ApplyT(func(v CertificateSpecKeystoresJksPasswordSecretRef) *string { return v.Key }).(pulumi.StringPtrOutput)
}

// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
func (o CertificateSpecKeystoresJksPasswordSecretRefOutput) Name() pulumi.StringOutput {
	return o.ApplyT(func(v CertificateSpecKeystoresJksPasswordSecretRef) string { return v.Name }).(pulumi.StringOutput)
}

type CertificateSpecKeystoresJksPasswordSecretRefPtrOutput struct{ *pulumi.OutputState }

func (CertificateSpecKeystoresJksPasswordSecretRefPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**CertificateSpecKeystoresJksPasswordSecretRef)(nil)).Elem()
}

func (o CertificateSpecKeystoresJksPasswordSecretRefPtrOutput) ToCertificateSpecKeystoresJksPasswordSecretRefPtrOutput() CertificateSpecKeystoresJksPasswordSecretRefPtrOutput {
	return o
}

func (o CertificateSpecKeystoresJksPasswordSecretRefPtrOutput) ToCertificateSpecKeystoresJksPasswordSecretRefPtrOutputWithContext(ctx context.Context) CertificateSpecKeystoresJksPasswordSecretRefPtrOutput {
	return o
}

func (o CertificateSpecKeystoresJksPasswordSecretRefPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*CertificateSpecKeystoresJksPasswordSecretRef] {
	return pulumix.Output[*CertificateSpecKeystoresJksPasswordSecretRef]{
		OutputState: o.OutputState,
	}
}

func (o CertificateSpecKeystoresJksPasswordSecretRefPtrOutput) Elem() CertificateSpecKeystoresJksPasswordSecretRefOutput {
	return o.ApplyT(func(v *CertificateSpecKeystoresJksPasswordSecretRef) CertificateSpecKeystoresJksPasswordSecretRef {
		if v != nil {
			return *v
		}
		var ret CertificateSpecKeystoresJksPasswordSecretRef
		return ret
	}).(CertificateSpecKeystoresJksPasswordSecretRefOutput)
}

// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
func (o CertificateSpecKeystoresJksPasswordSecretRefPtrOutput) Key() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *CertificateSpecKeystoresJksPasswordSecretRef) *string {
		if v == nil {
			return nil
		}
		return v.Key
	}).(pulumi.StringPtrOutput)
}

// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
func (o CertificateSpecKeystoresJksPasswordSecretRefPtrOutput) Name() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *CertificateSpecKeystoresJksPasswordSecretRef) *string {
		if v == nil {
			return nil
		}
		return &v.Name
	}).(pulumi.StringPtrOutput)
}

// PKCS12 configures options for storing a PKCS12 keystore in the `spec.secretName` Secret resource.
type CertificateSpecKeystoresPkcs12 struct {
	// Create enables PKCS12 keystore creation for the Certificate. If true, a file named `keystore.p12` will be created in the target Secret resource, encrypted using the password stored in `passwordSecretRef`. The keystore file will only be updated upon re-issuance.
	Create bool `pulumi:"create"`
	// PasswordSecretRef is a reference to a key in a Secret resource containing the password used to encrypt the PKCS12 keystore.
	PasswordSecretRef CertificateSpecKeystoresPkcs12PasswordSecretRef `pulumi:"passwordSecretRef"`
}

// CertificateSpecKeystoresPkcs12Input is an input type that accepts CertificateSpecKeystoresPkcs12Args and CertificateSpecKeystoresPkcs12Output values.
// You can construct a concrete instance of `CertificateSpecKeystoresPkcs12Input` via:
//
//	CertificateSpecKeystoresPkcs12Args{...}
type CertificateSpecKeystoresPkcs12Input interface {
	pulumi.Input

	ToCertificateSpecKeystoresPkcs12Output() CertificateSpecKeystoresPkcs12Output
	ToCertificateSpecKeystoresPkcs12OutputWithContext(context.Context) CertificateSpecKeystoresPkcs12Output
}

// PKCS12 configures options for storing a PKCS12 keystore in the `spec.secretName` Secret resource.
type CertificateSpecKeystoresPkcs12Args struct {
	// Create enables PKCS12 keystore creation for the Certificate. If true, a file named `keystore.p12` will be created in the target Secret resource, encrypted using the password stored in `passwordSecretRef`. The keystore file will only be updated upon re-issuance.
	Create pulumi.BoolInput `pulumi:"create"`
	// PasswordSecretRef is a reference to a key in a Secret resource containing the password used to encrypt the PKCS12 keystore.
	PasswordSecretRef CertificateSpecKeystoresPkcs12PasswordSecretRefInput `pulumi:"passwordSecretRef"`
}

func (CertificateSpecKeystoresPkcs12Args) ElementType() reflect.Type {
	return reflect.TypeOf((*CertificateSpecKeystoresPkcs12)(nil)).Elem()
}

func (i CertificateSpecKeystoresPkcs12Args) ToCertificateSpecKeystoresPkcs12Output() CertificateSpecKeystoresPkcs12Output {
	return i.ToCertificateSpecKeystoresPkcs12OutputWithContext(context.Background())
}

func (i CertificateSpecKeystoresPkcs12Args) ToCertificateSpecKeystoresPkcs12OutputWithContext(ctx context.Context) CertificateSpecKeystoresPkcs12Output {
	return pulumi.ToOutputWithContext(ctx, i).(CertificateSpecKeystoresPkcs12Output)
}

func (i CertificateSpecKeystoresPkcs12Args) ToOutput(ctx context.Context) pulumix.Output[CertificateSpecKeystoresPkcs12] {
	return pulumix.Output[CertificateSpecKeystoresPkcs12]{
		OutputState: i.ToCertificateSpecKeystoresPkcs12OutputWithContext(ctx).OutputState,
	}
}

func (i CertificateSpecKeystoresPkcs12Args) ToCertificateSpecKeystoresPkcs12PtrOutput() CertificateSpecKeystoresPkcs12PtrOutput {
	return i.ToCertificateSpecKeystoresPkcs12PtrOutputWithContext(context.Background())
}

func (i CertificateSpecKeystoresPkcs12Args) ToCertificateSpecKeystoresPkcs12PtrOutputWithContext(ctx context.Context) CertificateSpecKeystoresPkcs12PtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(CertificateSpecKeystoresPkcs12Output).ToCertificateSpecKeystoresPkcs12PtrOutputWithContext(ctx)
}

// CertificateSpecKeystoresPkcs12PtrInput is an input type that accepts CertificateSpecKeystoresPkcs12Args, CertificateSpecKeystoresPkcs12Ptr and CertificateSpecKeystoresPkcs12PtrOutput values.
// You can construct a concrete instance of `CertificateSpecKeystoresPkcs12PtrInput` via:
//
//	        CertificateSpecKeystoresPkcs12Args{...}
//
//	or:
//
//	        nil
type CertificateSpecKeystoresPkcs12PtrInput interface {
	pulumi.Input

	ToCertificateSpecKeystoresPkcs12PtrOutput() CertificateSpecKeystoresPkcs12PtrOutput
	ToCertificateSpecKeystoresPkcs12PtrOutputWithContext(context.Context) CertificateSpecKeystoresPkcs12PtrOutput
}

type certificateSpecKeystoresPkcs12PtrType CertificateSpecKeystoresPkcs12Args

func CertificateSpecKeystoresPkcs12Ptr(v *CertificateSpecKeystoresPkcs12Args) CertificateSpecKeystoresPkcs12PtrInput {
	return (*certificateSpecKeystoresPkcs12PtrType)(v)
}

func (*certificateSpecKeystoresPkcs12PtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**CertificateSpecKeystoresPkcs12)(nil)).Elem()
}

func (i *certificateSpecKeystoresPkcs12PtrType) ToCertificateSpecKeystoresPkcs12PtrOutput() CertificateSpecKeystoresPkcs12PtrOutput {
	return i.ToCertificateSpecKeystoresPkcs12PtrOutputWithContext(context.Background())
}

func (i *certificateSpecKeystoresPkcs12PtrType) ToCertificateSpecKeystoresPkcs12PtrOutputWithContext(ctx context.Context) CertificateSpecKeystoresPkcs12PtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(CertificateSpecKeystoresPkcs12PtrOutput)
}

func (i *certificateSpecKeystoresPkcs12PtrType) ToOutput(ctx context.Context) pulumix.Output[*CertificateSpecKeystoresPkcs12] {
	return pulumix.Output[*CertificateSpecKeystoresPkcs12]{
		OutputState: i.ToCertificateSpecKeystoresPkcs12PtrOutputWithContext(ctx).OutputState,
	}
}

// PKCS12 configures options for storing a PKCS12 keystore in the `spec.secretName` Secret resource.
type CertificateSpecKeystoresPkcs12Output struct{ *pulumi.OutputState }

func (CertificateSpecKeystoresPkcs12Output) ElementType() reflect.Type {
	return reflect.TypeOf((*CertificateSpecKeystoresPkcs12)(nil)).Elem()
}

func (o CertificateSpecKeystoresPkcs12Output) ToCertificateSpecKeystoresPkcs12Output() CertificateSpecKeystoresPkcs12Output {
	return o
}

func (o CertificateSpecKeystoresPkcs12Output) ToCertificateSpecKeystoresPkcs12OutputWithContext(ctx context.Context) CertificateSpecKeystoresPkcs12Output {
	return o
}

func (o CertificateSpecKeystoresPkcs12Output) ToCertificateSpecKeystoresPkcs12PtrOutput() CertificateSpecKeystoresPkcs12PtrOutput {
	return o.ToCertificateSpecKeystoresPkcs12PtrOutputWithContext(context.Background())
}

func (o CertificateSpecKeystoresPkcs12Output) ToCertificateSpecKeystoresPkcs12PtrOutputWithContext(ctx context.Context) CertificateSpecKeystoresPkcs12PtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v CertificateSpecKeystoresPkcs12) *CertificateSpecKeystoresPkcs12 {
		return &v
	}).(CertificateSpecKeystoresPkcs12PtrOutput)
}

func (o CertificateSpecKeystoresPkcs12Output) ToOutput(ctx context.Context) pulumix.Output[CertificateSpecKeystoresPkcs12] {
	return pulumix.Output[CertificateSpecKeystoresPkcs12]{
		OutputState: o.OutputState,
	}
}

// Create enables PKCS12 keystore creation for the Certificate. If true, a file named `keystore.p12` will be created in the target Secret resource, encrypted using the password stored in `passwordSecretRef`. The keystore file will only be updated upon re-issuance.
func (o CertificateSpecKeystoresPkcs12Output) Create() pulumi.BoolOutput {
	return o.ApplyT(func(v CertificateSpecKeystoresPkcs12) bool { return v.Create }).(pulumi.BoolOutput)
}

// PasswordSecretRef is a reference to a key in a Secret resource containing the password used to encrypt the PKCS12 keystore.
func (o CertificateSpecKeystoresPkcs12Output) PasswordSecretRef() CertificateSpecKeystoresPkcs12PasswordSecretRefOutput {
	return o.ApplyT(func(v CertificateSpecKeystoresPkcs12) CertificateSpecKeystoresPkcs12PasswordSecretRef {
		return v.PasswordSecretRef
	}).(CertificateSpecKeystoresPkcs12PasswordSecretRefOutput)
}

type CertificateSpecKeystoresPkcs12PtrOutput struct{ *pulumi.OutputState }

func (CertificateSpecKeystoresPkcs12PtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**CertificateSpecKeystoresPkcs12)(nil)).Elem()
}

func (o CertificateSpecKeystoresPkcs12PtrOutput) ToCertificateSpecKeystoresPkcs12PtrOutput() CertificateSpecKeystoresPkcs12PtrOutput {
	return o
}

func (o CertificateSpecKeystoresPkcs12PtrOutput) ToCertificateSpecKeystoresPkcs12PtrOutputWithContext(ctx context.Context) CertificateSpecKeystoresPkcs12PtrOutput {
	return o
}

func (o CertificateSpecKeystoresPkcs12PtrOutput) ToOutput(ctx context.Context) pulumix.Output[*CertificateSpecKeystoresPkcs12] {
	return pulumix.Output[*CertificateSpecKeystoresPkcs12]{
		OutputState: o.OutputState,
	}
}

func (o CertificateSpecKeystoresPkcs12PtrOutput) Elem() CertificateSpecKeystoresPkcs12Output {
	return o.ApplyT(func(v *CertificateSpecKeystoresPkcs12) CertificateSpecKeystoresPkcs12 {
		if v != nil {
			return *v
		}
		var ret CertificateSpecKeystoresPkcs12
		return ret
	}).(CertificateSpecKeystoresPkcs12Output)
}

// Create enables PKCS12 keystore creation for the Certificate. If true, a file named `keystore.p12` will be created in the target Secret resource, encrypted using the password stored in `passwordSecretRef`. The keystore file will only be updated upon re-issuance.
func (o CertificateSpecKeystoresPkcs12PtrOutput) Create() pulumi.BoolPtrOutput {
	return o.ApplyT(func(v *CertificateSpecKeystoresPkcs12) *bool {
		if v == nil {
			return nil
		}
		return &v.Create
	}).(pulumi.BoolPtrOutput)
}

// PasswordSecretRef is a reference to a key in a Secret resource containing the password used to encrypt the PKCS12 keystore.
func (o CertificateSpecKeystoresPkcs12PtrOutput) PasswordSecretRef() CertificateSpecKeystoresPkcs12PasswordSecretRefPtrOutput {
	return o.ApplyT(func(v *CertificateSpecKeystoresPkcs12) *CertificateSpecKeystoresPkcs12PasswordSecretRef {
		if v == nil {
			return nil
		}
		return &v.PasswordSecretRef
	}).(CertificateSpecKeystoresPkcs12PasswordSecretRefPtrOutput)
}

// PasswordSecretRef is a reference to a key in a Secret resource containing the password used to encrypt the PKCS12 keystore.
type CertificateSpecKeystoresPkcs12PasswordSecretRef struct {
	// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
	Key *string `pulumi:"key"`
	// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
	Name string `pulumi:"name"`
}

// CertificateSpecKeystoresPkcs12PasswordSecretRefInput is an input type that accepts CertificateSpecKeystoresPkcs12PasswordSecretRefArgs and CertificateSpecKeystoresPkcs12PasswordSecretRefOutput values.
// You can construct a concrete instance of `CertificateSpecKeystoresPkcs12PasswordSecretRefInput` via:
//
//	CertificateSpecKeystoresPkcs12PasswordSecretRefArgs{...}
type CertificateSpecKeystoresPkcs12PasswordSecretRefInput interface {
	pulumi.Input

	ToCertificateSpecKeystoresPkcs12PasswordSecretRefOutput() CertificateSpecKeystoresPkcs12PasswordSecretRefOutput
	ToCertificateSpecKeystoresPkcs12PasswordSecretRefOutputWithContext(context.Context) CertificateSpecKeystoresPkcs12PasswordSecretRefOutput
}

// PasswordSecretRef is a reference to a key in a Secret resource containing the password used to encrypt the PKCS12 keystore.
type CertificateSpecKeystoresPkcs12PasswordSecretRefArgs struct {
	// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
	Key pulumi.StringPtrInput `pulumi:"key"`
	// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
	Name pulumi.StringInput `pulumi:"name"`
}

func (CertificateSpecKeystoresPkcs12PasswordSecretRefArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*CertificateSpecKeystoresPkcs12PasswordSecretRef)(nil)).Elem()
}

func (i CertificateSpecKeystoresPkcs12PasswordSecretRefArgs) ToCertificateSpecKeystoresPkcs12PasswordSecretRefOutput() CertificateSpecKeystoresPkcs12PasswordSecretRefOutput {
	return i.ToCertificateSpecKeystoresPkcs12PasswordSecretRefOutputWithContext(context.Background())
}

func (i CertificateSpecKeystoresPkcs12PasswordSecretRefArgs) ToCertificateSpecKeystoresPkcs12PasswordSecretRefOutputWithContext(ctx context.Context) CertificateSpecKeystoresPkcs12PasswordSecretRefOutput {
	return pulumi.ToOutputWithContext(ctx, i).(CertificateSpecKeystoresPkcs12PasswordSecretRefOutput)
}

func (i CertificateSpecKeystoresPkcs12PasswordSecretRefArgs) ToOutput(ctx context.Context) pulumix.Output[CertificateSpecKeystoresPkcs12PasswordSecretRef] {
	return pulumix.Output[CertificateSpecKeystoresPkcs12PasswordSecretRef]{
		OutputState: i.ToCertificateSpecKeystoresPkcs12PasswordSecretRefOutputWithContext(ctx).OutputState,
	}
}

func (i CertificateSpecKeystoresPkcs12PasswordSecretRefArgs) ToCertificateSpecKeystoresPkcs12PasswordSecretRefPtrOutput() CertificateSpecKeystoresPkcs12PasswordSecretRefPtrOutput {
	return i.ToCertificateSpecKeystoresPkcs12PasswordSecretRefPtrOutputWithContext(context.Background())
}

func (i CertificateSpecKeystoresPkcs12PasswordSecretRefArgs) ToCertificateSpecKeystoresPkcs12PasswordSecretRefPtrOutputWithContext(ctx context.Context) CertificateSpecKeystoresPkcs12PasswordSecretRefPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(CertificateSpecKeystoresPkcs12PasswordSecretRefOutput).ToCertificateSpecKeystoresPkcs12PasswordSecretRefPtrOutputWithContext(ctx)
}

// CertificateSpecKeystoresPkcs12PasswordSecretRefPtrInput is an input type that accepts CertificateSpecKeystoresPkcs12PasswordSecretRefArgs, CertificateSpecKeystoresPkcs12PasswordSecretRefPtr and CertificateSpecKeystoresPkcs12PasswordSecretRefPtrOutput values.
// You can construct a concrete instance of `CertificateSpecKeystoresPkcs12PasswordSecretRefPtrInput` via:
//
//	        CertificateSpecKeystoresPkcs12PasswordSecretRefArgs{...}
//
//	or:
//
//	        nil
type CertificateSpecKeystoresPkcs12PasswordSecretRefPtrInput interface {
	pulumi.Input

	ToCertificateSpecKeystoresPkcs12PasswordSecretRefPtrOutput() CertificateSpecKeystoresPkcs12PasswordSecretRefPtrOutput
	ToCertificateSpecKeystoresPkcs12PasswordSecretRefPtrOutputWithContext(context.Context) CertificateSpecKeystoresPkcs12PasswordSecretRefPtrOutput
}

type certificateSpecKeystoresPkcs12PasswordSecretRefPtrType CertificateSpecKeystoresPkcs12PasswordSecretRefArgs

func CertificateSpecKeystoresPkcs12PasswordSecretRefPtr(v *CertificateSpecKeystoresPkcs12PasswordSecretRefArgs) CertificateSpecKeystoresPkcs12PasswordSecretRefPtrInput {
	return (*certificateSpecKeystoresPkcs12PasswordSecretRefPtrType)(v)
}

func (*certificateSpecKeystoresPkcs12PasswordSecretRefPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**CertificateSpecKeystoresPkcs12PasswordSecretRef)(nil)).Elem()
}

func (i *certificateSpecKeystoresPkcs12PasswordSecretRefPtrType) ToCertificateSpecKeystoresPkcs12PasswordSecretRefPtrOutput() CertificateSpecKeystoresPkcs12PasswordSecretRefPtrOutput {
	return i.ToCertificateSpecKeystoresPkcs12PasswordSecretRefPtrOutputWithContext(context.Background())
}

func (i *certificateSpecKeystoresPkcs12PasswordSecretRefPtrType) ToCertificateSpecKeystoresPkcs12PasswordSecretRefPtrOutputWithContext(ctx context.Context) CertificateSpecKeystoresPkcs12PasswordSecretRefPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(CertificateSpecKeystoresPkcs12PasswordSecretRefPtrOutput)
}

func (i *certificateSpecKeystoresPkcs12PasswordSecretRefPtrType) ToOutput(ctx context.Context) pulumix.Output[*CertificateSpecKeystoresPkcs12PasswordSecretRef] {
	return pulumix.Output[*CertificateSpecKeystoresPkcs12PasswordSecretRef]{
		OutputState: i.ToCertificateSpecKeystoresPkcs12PasswordSecretRefPtrOutputWithContext(ctx).OutputState,
	}
}

// PasswordSecretRef is a reference to a key in a Secret resource containing the password used to encrypt the PKCS12 keystore.
type CertificateSpecKeystoresPkcs12PasswordSecretRefOutput struct{ *pulumi.OutputState }

func (CertificateSpecKeystoresPkcs12PasswordSecretRefOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*CertificateSpecKeystoresPkcs12PasswordSecretRef)(nil)).Elem()
}

func (o CertificateSpecKeystoresPkcs12PasswordSecretRefOutput) ToCertificateSpecKeystoresPkcs12PasswordSecretRefOutput() CertificateSpecKeystoresPkcs12PasswordSecretRefOutput {
	return o
}

func (o CertificateSpecKeystoresPkcs12PasswordSecretRefOutput) ToCertificateSpecKeystoresPkcs12PasswordSecretRefOutputWithContext(ctx context.Context) CertificateSpecKeystoresPkcs12PasswordSecretRefOutput {
	return o
}

func (o CertificateSpecKeystoresPkcs12PasswordSecretRefOutput) ToCertificateSpecKeystoresPkcs12PasswordSecretRefPtrOutput() CertificateSpecKeystoresPkcs12PasswordSecretRefPtrOutput {
	return o.ToCertificateSpecKeystoresPkcs12PasswordSecretRefPtrOutputWithContext(context.Background())
}

func (o CertificateSpecKeystoresPkcs12PasswordSecretRefOutput) ToCertificateSpecKeystoresPkcs12PasswordSecretRefPtrOutputWithContext(ctx context.Context) CertificateSpecKeystoresPkcs12PasswordSecretRefPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v CertificateSpecKeystoresPkcs12PasswordSecretRef) *CertificateSpecKeystoresPkcs12PasswordSecretRef {
		return &v
	}).(CertificateSpecKeystoresPkcs12PasswordSecretRefPtrOutput)
}

func (o CertificateSpecKeystoresPkcs12PasswordSecretRefOutput) ToOutput(ctx context.Context) pulumix.Output[CertificateSpecKeystoresPkcs12PasswordSecretRef] {
	return pulumix.Output[CertificateSpecKeystoresPkcs12PasswordSecretRef]{
		OutputState: o.OutputState,
	}
}

// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
func (o CertificateSpecKeystoresPkcs12PasswordSecretRefOutput) Key() pulumi.StringPtrOutput {
	return o.ApplyT(func(v CertificateSpecKeystoresPkcs12PasswordSecretRef) *string { return v.Key }).(pulumi.StringPtrOutput)
}

// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
func (o CertificateSpecKeystoresPkcs12PasswordSecretRefOutput) Name() pulumi.StringOutput {
	return o.ApplyT(func(v CertificateSpecKeystoresPkcs12PasswordSecretRef) string { return v.Name }).(pulumi.StringOutput)
}

type CertificateSpecKeystoresPkcs12PasswordSecretRefPtrOutput struct{ *pulumi.OutputState }

func (CertificateSpecKeystoresPkcs12PasswordSecretRefPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**CertificateSpecKeystoresPkcs12PasswordSecretRef)(nil)).Elem()
}

func (o CertificateSpecKeystoresPkcs12PasswordSecretRefPtrOutput) ToCertificateSpecKeystoresPkcs12PasswordSecretRefPtrOutput() CertificateSpecKeystoresPkcs12PasswordSecretRefPtrOutput {
	return o
}

func (o CertificateSpecKeystoresPkcs12PasswordSecretRefPtrOutput) ToCertificateSpecKeystoresPkcs12PasswordSecretRefPtrOutputWithContext(ctx context.Context) CertificateSpecKeystoresPkcs12PasswordSecretRefPtrOutput {
	return o
}

func (o CertificateSpecKeystoresPkcs12PasswordSecretRefPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*CertificateSpecKeystoresPkcs12PasswordSecretRef] {
	return pulumix.Output[*CertificateSpecKeystoresPkcs12PasswordSecretRef]{
		OutputState: o.OutputState,
	}
}

func (o CertificateSpecKeystoresPkcs12PasswordSecretRefPtrOutput) Elem() CertificateSpecKeystoresPkcs12PasswordSecretRefOutput {
	return o.ApplyT(func(v *CertificateSpecKeystoresPkcs12PasswordSecretRef) CertificateSpecKeystoresPkcs12PasswordSecretRef {
		if v != nil {
			return *v
		}
		var ret CertificateSpecKeystoresPkcs12PasswordSecretRef
		return ret
	}).(CertificateSpecKeystoresPkcs12PasswordSecretRefOutput)
}

// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
func (o CertificateSpecKeystoresPkcs12PasswordSecretRefPtrOutput) Key() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *CertificateSpecKeystoresPkcs12PasswordSecretRef) *string {
		if v == nil {
			return nil
		}
		return v.Key
	}).(pulumi.StringPtrOutput)
}

// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
func (o CertificateSpecKeystoresPkcs12PasswordSecretRefPtrOutput) Name() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *CertificateSpecKeystoresPkcs12PasswordSecretRef) *string {
		if v == nil {
			return nil
		}
		return &v.Name
	}).(pulumi.StringPtrOutput)
}

// Options to control private keys used for the Certificate.
type CertificateSpecPrivateKey struct {
	// Algorithm is the private key algorithm of the corresponding private key for this certificate. If provided, allowed values are either `RSA` or `ECDSA` If `algorithm` is specified and `size` is not provided, key size of 256 will be used for `ECDSA` key algorithm and key size of 2048 will be used for `RSA` key algorithm.
	Algorithm *string `pulumi:"algorithm"`
	// The private key cryptography standards (PKCS) encoding for this certificate's private key to be encoded in. If provided, allowed values are `PKCS1` and `PKCS8` standing for PKCS#1 and PKCS#8, respectively. Defaults to `PKCS1` if not specified.
	Encoding *string `pulumi:"encoding"`
	// RotationPolicy controls how private keys should be regenerated when a re-issuance is being processed. If set to Never, a private key will only be generated if one does not already exist in the target `spec.secretName`. If one does exists but it does not have the correct algorithm or size, a warning will be raised to await user intervention. If set to Always, a private key matching the specified requirements will be generated whenever a re-issuance occurs. Default is 'Never' for backward compatibility.
	RotationPolicy *string `pulumi:"rotationPolicy"`
	// Size is the key bit size of the corresponding private key for this certificate. If `algorithm` is set to `RSA`, valid values are `2048`, `4096` or `8192`, and will default to `2048` if not specified. If `algorithm` is set to `ECDSA`, valid values are `256`, `384` or `521`, and will default to `256` if not specified. No other values are allowed.
	Size *int `pulumi:"size"`
}

// CertificateSpecPrivateKeyInput is an input type that accepts CertificateSpecPrivateKeyArgs and CertificateSpecPrivateKeyOutput values.
// You can construct a concrete instance of `CertificateSpecPrivateKeyInput` via:
//
//	CertificateSpecPrivateKeyArgs{...}
type CertificateSpecPrivateKeyInput interface {
	pulumi.Input

	ToCertificateSpecPrivateKeyOutput() CertificateSpecPrivateKeyOutput
	ToCertificateSpecPrivateKeyOutputWithContext(context.Context) CertificateSpecPrivateKeyOutput
}

// Options to control private keys used for the Certificate.
type CertificateSpecPrivateKeyArgs struct {
	// Algorithm is the private key algorithm of the corresponding private key for this certificate. If provided, allowed values are either `RSA` or `ECDSA` If `algorithm` is specified and `size` is not provided, key size of 256 will be used for `ECDSA` key algorithm and key size of 2048 will be used for `RSA` key algorithm.
	Algorithm pulumi.StringPtrInput `pulumi:"algorithm"`
	// The private key cryptography standards (PKCS) encoding for this certificate's private key to be encoded in. If provided, allowed values are `PKCS1` and `PKCS8` standing for PKCS#1 and PKCS#8, respectively. Defaults to `PKCS1` if not specified.
	Encoding pulumi.StringPtrInput `pulumi:"encoding"`
	// RotationPolicy controls how private keys should be regenerated when a re-issuance is being processed. If set to Never, a private key will only be generated if one does not already exist in the target `spec.secretName`. If one does exists but it does not have the correct algorithm or size, a warning will be raised to await user intervention. If set to Always, a private key matching the specified requirements will be generated whenever a re-issuance occurs. Default is 'Never' for backward compatibility.
	RotationPolicy pulumi.StringPtrInput `pulumi:"rotationPolicy"`
	// Size is the key bit size of the corresponding private key for this certificate. If `algorithm` is set to `RSA`, valid values are `2048`, `4096` or `8192`, and will default to `2048` if not specified. If `algorithm` is set to `ECDSA`, valid values are `256`, `384` or `521`, and will default to `256` if not specified. No other values are allowed.
	Size pulumi.IntPtrInput `pulumi:"size"`
}

func (CertificateSpecPrivateKeyArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*CertificateSpecPrivateKey)(nil)).Elem()
}

func (i CertificateSpecPrivateKeyArgs) ToCertificateSpecPrivateKeyOutput() CertificateSpecPrivateKeyOutput {
	return i.ToCertificateSpecPrivateKeyOutputWithContext(context.Background())
}

func (i CertificateSpecPrivateKeyArgs) ToCertificateSpecPrivateKeyOutputWithContext(ctx context.Context) CertificateSpecPrivateKeyOutput {
	return pulumi.ToOutputWithContext(ctx, i).(CertificateSpecPrivateKeyOutput)
}

func (i CertificateSpecPrivateKeyArgs) ToOutput(ctx context.Context) pulumix.Output[CertificateSpecPrivateKey] {
	return pulumix.Output[CertificateSpecPrivateKey]{
		OutputState: i.ToCertificateSpecPrivateKeyOutputWithContext(ctx).OutputState,
	}
}

func (i CertificateSpecPrivateKeyArgs) ToCertificateSpecPrivateKeyPtrOutput() CertificateSpecPrivateKeyPtrOutput {
	return i.ToCertificateSpecPrivateKeyPtrOutputWithContext(context.Background())
}

func (i CertificateSpecPrivateKeyArgs) ToCertificateSpecPrivateKeyPtrOutputWithContext(ctx context.Context) CertificateSpecPrivateKeyPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(CertificateSpecPrivateKeyOutput).ToCertificateSpecPrivateKeyPtrOutputWithContext(ctx)
}

// CertificateSpecPrivateKeyPtrInput is an input type that accepts CertificateSpecPrivateKeyArgs, CertificateSpecPrivateKeyPtr and CertificateSpecPrivateKeyPtrOutput values.
// You can construct a concrete instance of `CertificateSpecPrivateKeyPtrInput` via:
//
//	        CertificateSpecPrivateKeyArgs{...}
//
//	or:
//
//	        nil
type CertificateSpecPrivateKeyPtrInput interface {
	pulumi.Input

	ToCertificateSpecPrivateKeyPtrOutput() CertificateSpecPrivateKeyPtrOutput
	ToCertificateSpecPrivateKeyPtrOutputWithContext(context.Context) CertificateSpecPrivateKeyPtrOutput
}

type certificateSpecPrivateKeyPtrType CertificateSpecPrivateKeyArgs

func CertificateSpecPrivateKeyPtr(v *CertificateSpecPrivateKeyArgs) CertificateSpecPrivateKeyPtrInput {
	return (*certificateSpecPrivateKeyPtrType)(v)
}

func (*certificateSpecPrivateKeyPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**CertificateSpecPrivateKey)(nil)).Elem()
}

func (i *certificateSpecPrivateKeyPtrType) ToCertificateSpecPrivateKeyPtrOutput() CertificateSpecPrivateKeyPtrOutput {
	return i.ToCertificateSpecPrivateKeyPtrOutputWithContext(context.Background())
}

func (i *certificateSpecPrivateKeyPtrType) ToCertificateSpecPrivateKeyPtrOutputWithContext(ctx context.Context) CertificateSpecPrivateKeyPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(CertificateSpecPrivateKeyPtrOutput)
}

func (i *certificateSpecPrivateKeyPtrType) ToOutput(ctx context.Context) pulumix.Output[*CertificateSpecPrivateKey] {
	return pulumix.Output[*CertificateSpecPrivateKey]{
		OutputState: i.ToCertificateSpecPrivateKeyPtrOutputWithContext(ctx).OutputState,
	}
}

// Options to control private keys used for the Certificate.
type CertificateSpecPrivateKeyOutput struct{ *pulumi.OutputState }

func (CertificateSpecPrivateKeyOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*CertificateSpecPrivateKey)(nil)).Elem()
}

func (o CertificateSpecPrivateKeyOutput) ToCertificateSpecPrivateKeyOutput() CertificateSpecPrivateKeyOutput {
	return o
}

func (o CertificateSpecPrivateKeyOutput) ToCertificateSpecPrivateKeyOutputWithContext(ctx context.Context) CertificateSpecPrivateKeyOutput {
	return o
}

func (o CertificateSpecPrivateKeyOutput) ToCertificateSpecPrivateKeyPtrOutput() CertificateSpecPrivateKeyPtrOutput {
	return o.ToCertificateSpecPrivateKeyPtrOutputWithContext(context.Background())
}

func (o CertificateSpecPrivateKeyOutput) ToCertificateSpecPrivateKeyPtrOutputWithContext(ctx context.Context) CertificateSpecPrivateKeyPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v CertificateSpecPrivateKey) *CertificateSpecPrivateKey {
		return &v
	}).(CertificateSpecPrivateKeyPtrOutput)
}

func (o CertificateSpecPrivateKeyOutput) ToOutput(ctx context.Context) pulumix.Output[CertificateSpecPrivateKey] {
	return pulumix.Output[CertificateSpecPrivateKey]{
		OutputState: o.OutputState,
	}
}

// Algorithm is the private key algorithm of the corresponding private key for this certificate. If provided, allowed values are either `RSA` or `ECDSA` If `algorithm` is specified and `size` is not provided, key size of 256 will be used for `ECDSA` key algorithm and key size of 2048 will be used for `RSA` key algorithm.
func (o CertificateSpecPrivateKeyOutput) Algorithm() pulumi.StringPtrOutput {
	return o.ApplyT(func(v CertificateSpecPrivateKey) *string { return v.Algorithm }).(pulumi.StringPtrOutput)
}

// The private key cryptography standards (PKCS) encoding for this certificate's private key to be encoded in. If provided, allowed values are `PKCS1` and `PKCS8` standing for PKCS#1 and PKCS#8, respectively. Defaults to `PKCS1` if not specified.
func (o CertificateSpecPrivateKeyOutput) Encoding() pulumi.StringPtrOutput {
	return o.ApplyT(func(v CertificateSpecPrivateKey) *string { return v.Encoding }).(pulumi.StringPtrOutput)
}

// RotationPolicy controls how private keys should be regenerated when a re-issuance is being processed. If set to Never, a private key will only be generated if one does not already exist in the target `spec.secretName`. If one does exists but it does not have the correct algorithm or size, a warning will be raised to await user intervention. If set to Always, a private key matching the specified requirements will be generated whenever a re-issuance occurs. Default is 'Never' for backward compatibility.
func (o CertificateSpecPrivateKeyOutput) RotationPolicy() pulumi.StringPtrOutput {
	return o.ApplyT(func(v CertificateSpecPrivateKey) *string { return v.RotationPolicy }).(pulumi.StringPtrOutput)
}

// Size is the key bit size of the corresponding private key for this certificate. If `algorithm` is set to `RSA`, valid values are `2048`, `4096` or `8192`, and will default to `2048` if not specified. If `algorithm` is set to `ECDSA`, valid values are `256`, `384` or `521`, and will default to `256` if not specified. No other values are allowed.
func (o CertificateSpecPrivateKeyOutput) Size() pulumi.IntPtrOutput {
	return o.ApplyT(func(v CertificateSpecPrivateKey) *int { return v.Size }).(pulumi.IntPtrOutput)
}

type CertificateSpecPrivateKeyPtrOutput struct{ *pulumi.OutputState }

func (CertificateSpecPrivateKeyPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**CertificateSpecPrivateKey)(nil)).Elem()
}

func (o CertificateSpecPrivateKeyPtrOutput) ToCertificateSpecPrivateKeyPtrOutput() CertificateSpecPrivateKeyPtrOutput {
	return o
}

func (o CertificateSpecPrivateKeyPtrOutput) ToCertificateSpecPrivateKeyPtrOutputWithContext(ctx context.Context) CertificateSpecPrivateKeyPtrOutput {
	return o
}

func (o CertificateSpecPrivateKeyPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*CertificateSpecPrivateKey] {
	return pulumix.Output[*CertificateSpecPrivateKey]{
		OutputState: o.OutputState,
	}
}

func (o CertificateSpecPrivateKeyPtrOutput) Elem() CertificateSpecPrivateKeyOutput {
	return o.ApplyT(func(v *CertificateSpecPrivateKey) CertificateSpecPrivateKey {
		if v != nil {
			return *v
		}
		var ret CertificateSpecPrivateKey
		return ret
	}).(CertificateSpecPrivateKeyOutput)
}

// Algorithm is the private key algorithm of the corresponding private key for this certificate. If provided, allowed values are either `RSA` or `ECDSA` If `algorithm` is specified and `size` is not provided, key size of 256 will be used for `ECDSA` key algorithm and key size of 2048 will be used for `RSA` key algorithm.
func (o CertificateSpecPrivateKeyPtrOutput) Algorithm() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *CertificateSpecPrivateKey) *string {
		if v == nil {
			return nil
		}
		return v.Algorithm
	}).(pulumi.StringPtrOutput)
}

// The private key cryptography standards (PKCS) encoding for this certificate's private key to be encoded in. If provided, allowed values are `PKCS1` and `PKCS8` standing for PKCS#1 and PKCS#8, respectively. Defaults to `PKCS1` if not specified.
func (o CertificateSpecPrivateKeyPtrOutput) Encoding() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *CertificateSpecPrivateKey) *string {
		if v == nil {
			return nil
		}
		return v.Encoding
	}).(pulumi.StringPtrOutput)
}

// RotationPolicy controls how private keys should be regenerated when a re-issuance is being processed. If set to Never, a private key will only be generated if one does not already exist in the target `spec.secretName`. If one does exists but it does not have the correct algorithm or size, a warning will be raised to await user intervention. If set to Always, a private key matching the specified requirements will be generated whenever a re-issuance occurs. Default is 'Never' for backward compatibility.
func (o CertificateSpecPrivateKeyPtrOutput) RotationPolicy() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *CertificateSpecPrivateKey) *string {
		if v == nil {
			return nil
		}
		return v.RotationPolicy
	}).(pulumi.StringPtrOutput)
}

// Size is the key bit size of the corresponding private key for this certificate. If `algorithm` is set to `RSA`, valid values are `2048`, `4096` or `8192`, and will default to `2048` if not specified. If `algorithm` is set to `ECDSA`, valid values are `256`, `384` or `521`, and will default to `256` if not specified. No other values are allowed.
func (o CertificateSpecPrivateKeyPtrOutput) Size() pulumi.IntPtrOutput {
	return o.ApplyT(func(v *CertificateSpecPrivateKey) *int {
		if v == nil {
			return nil
		}
		return v.Size
	}).(pulumi.IntPtrOutput)
}

// SecretTemplate defines annotations and labels to be propagated to the Kubernetes Secret when it is created or updated. Once created, labels and annotations are not yet removed from the Secret when they are removed from the template. See https://github.com/jetstack/cert-manager/issues/4292
type CertificateSpecSecretTemplate struct {
	// Annotations is a key value map to be copied to the target Kubernetes Secret.
	Annotations map[string]string `pulumi:"annotations"`
	// Labels is a key value map to be copied to the target Kubernetes Secret.
	Labels map[string]string `pulumi:"labels"`
}

// CertificateSpecSecretTemplateInput is an input type that accepts CertificateSpecSecretTemplateArgs and CertificateSpecSecretTemplateOutput values.
// You can construct a concrete instance of `CertificateSpecSecretTemplateInput` via:
//
//	CertificateSpecSecretTemplateArgs{...}
type CertificateSpecSecretTemplateInput interface {
	pulumi.Input

	ToCertificateSpecSecretTemplateOutput() CertificateSpecSecretTemplateOutput
	ToCertificateSpecSecretTemplateOutputWithContext(context.Context) CertificateSpecSecretTemplateOutput
}

// SecretTemplate defines annotations and labels to be propagated to the Kubernetes Secret when it is created or updated. Once created, labels and annotations are not yet removed from the Secret when they are removed from the template. See https://github.com/jetstack/cert-manager/issues/4292
type CertificateSpecSecretTemplateArgs struct {
	// Annotations is a key value map to be copied to the target Kubernetes Secret.
	Annotations pulumi.StringMapInput `pulumi:"annotations"`
	// Labels is a key value map to be copied to the target Kubernetes Secret.
	Labels pulumi.StringMapInput `pulumi:"labels"`
}

func (CertificateSpecSecretTemplateArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*CertificateSpecSecretTemplate)(nil)).Elem()
}

func (i CertificateSpecSecretTemplateArgs) ToCertificateSpecSecretTemplateOutput() CertificateSpecSecretTemplateOutput {
	return i.ToCertificateSpecSecretTemplateOutputWithContext(context.Background())
}

func (i CertificateSpecSecretTemplateArgs) ToCertificateSpecSecretTemplateOutputWithContext(ctx context.Context) CertificateSpecSecretTemplateOutput {
	return pulumi.ToOutputWithContext(ctx, i).(CertificateSpecSecretTemplateOutput)
}

func (i CertificateSpecSecretTemplateArgs) ToOutput(ctx context.Context) pulumix.Output[CertificateSpecSecretTemplate] {
	return pulumix.Output[CertificateSpecSecretTemplate]{
		OutputState: i.ToCertificateSpecSecretTemplateOutputWithContext(ctx).OutputState,
	}
}

func (i CertificateSpecSecretTemplateArgs) ToCertificateSpecSecretTemplatePtrOutput() CertificateSpecSecretTemplatePtrOutput {
	return i.ToCertificateSpecSecretTemplatePtrOutputWithContext(context.Background())
}

func (i CertificateSpecSecretTemplateArgs) ToCertificateSpecSecretTemplatePtrOutputWithContext(ctx context.Context) CertificateSpecSecretTemplatePtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(CertificateSpecSecretTemplateOutput).ToCertificateSpecSecretTemplatePtrOutputWithContext(ctx)
}

// CertificateSpecSecretTemplatePtrInput is an input type that accepts CertificateSpecSecretTemplateArgs, CertificateSpecSecretTemplatePtr and CertificateSpecSecretTemplatePtrOutput values.
// You can construct a concrete instance of `CertificateSpecSecretTemplatePtrInput` via:
//
//	        CertificateSpecSecretTemplateArgs{...}
//
//	or:
//
//	        nil
type CertificateSpecSecretTemplatePtrInput interface {
	pulumi.Input

	ToCertificateSpecSecretTemplatePtrOutput() CertificateSpecSecretTemplatePtrOutput
	ToCertificateSpecSecretTemplatePtrOutputWithContext(context.Context) CertificateSpecSecretTemplatePtrOutput
}

type certificateSpecSecretTemplatePtrType CertificateSpecSecretTemplateArgs

func CertificateSpecSecretTemplatePtr(v *CertificateSpecSecretTemplateArgs) CertificateSpecSecretTemplatePtrInput {
	return (*certificateSpecSecretTemplatePtrType)(v)
}

func (*certificateSpecSecretTemplatePtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**CertificateSpecSecretTemplate)(nil)).Elem()
}

func (i *certificateSpecSecretTemplatePtrType) ToCertificateSpecSecretTemplatePtrOutput() CertificateSpecSecretTemplatePtrOutput {
	return i.ToCertificateSpecSecretTemplatePtrOutputWithContext(context.Background())
}

func (i *certificateSpecSecretTemplatePtrType) ToCertificateSpecSecretTemplatePtrOutputWithContext(ctx context.Context) CertificateSpecSecretTemplatePtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(CertificateSpecSecretTemplatePtrOutput)
}

func (i *certificateSpecSecretTemplatePtrType) ToOutput(ctx context.Context) pulumix.Output[*CertificateSpecSecretTemplate] {
	return pulumix.Output[*CertificateSpecSecretTemplate]{
		OutputState: i.ToCertificateSpecSecretTemplatePtrOutputWithContext(ctx).OutputState,
	}
}

// SecretTemplate defines annotations and labels to be propagated to the Kubernetes Secret when it is created or updated. Once created, labels and annotations are not yet removed from the Secret when they are removed from the template. See https://github.com/jetstack/cert-manager/issues/4292
type CertificateSpecSecretTemplateOutput struct{ *pulumi.OutputState }

func (CertificateSpecSecretTemplateOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*CertificateSpecSecretTemplate)(nil)).Elem()
}

func (o CertificateSpecSecretTemplateOutput) ToCertificateSpecSecretTemplateOutput() CertificateSpecSecretTemplateOutput {
	return o
}

func (o CertificateSpecSecretTemplateOutput) ToCertificateSpecSecretTemplateOutputWithContext(ctx context.Context) CertificateSpecSecretTemplateOutput {
	return o
}

func (o CertificateSpecSecretTemplateOutput) ToCertificateSpecSecretTemplatePtrOutput() CertificateSpecSecretTemplatePtrOutput {
	return o.ToCertificateSpecSecretTemplatePtrOutputWithContext(context.Background())
}

func (o CertificateSpecSecretTemplateOutput) ToCertificateSpecSecretTemplatePtrOutputWithContext(ctx context.Context) CertificateSpecSecretTemplatePtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v CertificateSpecSecretTemplate) *CertificateSpecSecretTemplate {
		return &v
	}).(CertificateSpecSecretTemplatePtrOutput)
}

func (o CertificateSpecSecretTemplateOutput) ToOutput(ctx context.Context) pulumix.Output[CertificateSpecSecretTemplate] {
	return pulumix.Output[CertificateSpecSecretTemplate]{
		OutputState: o.OutputState,
	}
}

// Annotations is a key value map to be copied to the target Kubernetes Secret.
func (o CertificateSpecSecretTemplateOutput) Annotations() pulumi.StringMapOutput {
	return o.ApplyT(func(v CertificateSpecSecretTemplate) map[string]string { return v.Annotations }).(pulumi.StringMapOutput)
}

// Labels is a key value map to be copied to the target Kubernetes Secret.
func (o CertificateSpecSecretTemplateOutput) Labels() pulumi.StringMapOutput {
	return o.ApplyT(func(v CertificateSpecSecretTemplate) map[string]string { return v.Labels }).(pulumi.StringMapOutput)
}

type CertificateSpecSecretTemplatePtrOutput struct{ *pulumi.OutputState }

func (CertificateSpecSecretTemplatePtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**CertificateSpecSecretTemplate)(nil)).Elem()
}

func (o CertificateSpecSecretTemplatePtrOutput) ToCertificateSpecSecretTemplatePtrOutput() CertificateSpecSecretTemplatePtrOutput {
	return o
}

func (o CertificateSpecSecretTemplatePtrOutput) ToCertificateSpecSecretTemplatePtrOutputWithContext(ctx context.Context) CertificateSpecSecretTemplatePtrOutput {
	return o
}

func (o CertificateSpecSecretTemplatePtrOutput) ToOutput(ctx context.Context) pulumix.Output[*CertificateSpecSecretTemplate] {
	return pulumix.Output[*CertificateSpecSecretTemplate]{
		OutputState: o.OutputState,
	}
}

func (o CertificateSpecSecretTemplatePtrOutput) Elem() CertificateSpecSecretTemplateOutput {
	return o.ApplyT(func(v *CertificateSpecSecretTemplate) CertificateSpecSecretTemplate {
		if v != nil {
			return *v
		}
		var ret CertificateSpecSecretTemplate
		return ret
	}).(CertificateSpecSecretTemplateOutput)
}

// Annotations is a key value map to be copied to the target Kubernetes Secret.
func (o CertificateSpecSecretTemplatePtrOutput) Annotations() pulumi.StringMapOutput {
	return o.ApplyT(func(v *CertificateSpecSecretTemplate) map[string]string {
		if v == nil {
			return nil
		}
		return v.Annotations
	}).(pulumi.StringMapOutput)
}

// Labels is a key value map to be copied to the target Kubernetes Secret.
func (o CertificateSpecSecretTemplatePtrOutput) Labels() pulumi.StringMapOutput {
	return o.ApplyT(func(v *CertificateSpecSecretTemplate) map[string]string {
		if v == nil {
			return nil
		}
		return v.Labels
	}).(pulumi.StringMapOutput)
}

// Annotations is a key value map to be copied to the target Kubernetes Secret.
type CertificateSpecSecretTemplateAnnotations struct {
}

// Labels is a key value map to be copied to the target Kubernetes Secret.
type CertificateSpecSecretTemplateLabels struct {
}

// Full X509 name specification (https://golang.org/pkg/crypto/x509/pkix/#Name).
type CertificateSpecSubject struct {
	// Countries to be used on the Certificate.
	Countries []string `pulumi:"countries"`
	// Cities to be used on the Certificate.
	Localities []string `pulumi:"localities"`
	// Organizational Units to be used on the Certificate.
	OrganizationalUnits []string `pulumi:"organizationalUnits"`
	// Organizations to be used on the Certificate.
	Organizations []string `pulumi:"organizations"`
	// Postal codes to be used on the Certificate.
	PostalCodes []string `pulumi:"postalCodes"`
	// State/Provinces to be used on the Certificate.
	Provinces []string `pulumi:"provinces"`
	// Serial number to be used on the Certificate.
	SerialNumber *string `pulumi:"serialNumber"`
	// Street addresses to be used on the Certificate.
	StreetAddresses []string `pulumi:"streetAddresses"`
}

// CertificateSpecSubjectInput is an input type that accepts CertificateSpecSubjectArgs and CertificateSpecSubjectOutput values.
// You can construct a concrete instance of `CertificateSpecSubjectInput` via:
//
//	CertificateSpecSubjectArgs{...}
type CertificateSpecSubjectInput interface {
	pulumi.Input

	ToCertificateSpecSubjectOutput() CertificateSpecSubjectOutput
	ToCertificateSpecSubjectOutputWithContext(context.Context) CertificateSpecSubjectOutput
}

// Full X509 name specification (https://golang.org/pkg/crypto/x509/pkix/#Name).
type CertificateSpecSubjectArgs struct {
	// Countries to be used on the Certificate.
	Countries pulumi.StringArrayInput `pulumi:"countries"`
	// Cities to be used on the Certificate.
	Localities pulumi.StringArrayInput `pulumi:"localities"`
	// Organizational Units to be used on the Certificate.
	OrganizationalUnits pulumi.StringArrayInput `pulumi:"organizationalUnits"`
	// Organizations to be used on the Certificate.
	Organizations pulumi.StringArrayInput `pulumi:"organizations"`
	// Postal codes to be used on the Certificate.
	PostalCodes pulumi.StringArrayInput `pulumi:"postalCodes"`
	// State/Provinces to be used on the Certificate.
	Provinces pulumi.StringArrayInput `pulumi:"provinces"`
	// Serial number to be used on the Certificate.
	SerialNumber pulumi.StringPtrInput `pulumi:"serialNumber"`
	// Street addresses to be used on the Certificate.
	StreetAddresses pulumi.StringArrayInput `pulumi:"streetAddresses"`
}

func (CertificateSpecSubjectArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*CertificateSpecSubject)(nil)).Elem()
}

func (i CertificateSpecSubjectArgs) ToCertificateSpecSubjectOutput() CertificateSpecSubjectOutput {
	return i.ToCertificateSpecSubjectOutputWithContext(context.Background())
}

func (i CertificateSpecSubjectArgs) ToCertificateSpecSubjectOutputWithContext(ctx context.Context) CertificateSpecSubjectOutput {
	return pulumi.ToOutputWithContext(ctx, i).(CertificateSpecSubjectOutput)
}

func (i CertificateSpecSubjectArgs) ToOutput(ctx context.Context) pulumix.Output[CertificateSpecSubject] {
	return pulumix.Output[CertificateSpecSubject]{
		OutputState: i.ToCertificateSpecSubjectOutputWithContext(ctx).OutputState,
	}
}

func (i CertificateSpecSubjectArgs) ToCertificateSpecSubjectPtrOutput() CertificateSpecSubjectPtrOutput {
	return i.ToCertificateSpecSubjectPtrOutputWithContext(context.Background())
}

func (i CertificateSpecSubjectArgs) ToCertificateSpecSubjectPtrOutputWithContext(ctx context.Context) CertificateSpecSubjectPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(CertificateSpecSubjectOutput).ToCertificateSpecSubjectPtrOutputWithContext(ctx)
}

// CertificateSpecSubjectPtrInput is an input type that accepts CertificateSpecSubjectArgs, CertificateSpecSubjectPtr and CertificateSpecSubjectPtrOutput values.
// You can construct a concrete instance of `CertificateSpecSubjectPtrInput` via:
//
//	        CertificateSpecSubjectArgs{...}
//
//	or:
//
//	        nil
type CertificateSpecSubjectPtrInput interface {
	pulumi.Input

	ToCertificateSpecSubjectPtrOutput() CertificateSpecSubjectPtrOutput
	ToCertificateSpecSubjectPtrOutputWithContext(context.Context) CertificateSpecSubjectPtrOutput
}

type certificateSpecSubjectPtrType CertificateSpecSubjectArgs

func CertificateSpecSubjectPtr(v *CertificateSpecSubjectArgs) CertificateSpecSubjectPtrInput {
	return (*certificateSpecSubjectPtrType)(v)
}

func (*certificateSpecSubjectPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**CertificateSpecSubject)(nil)).Elem()
}

func (i *certificateSpecSubjectPtrType) ToCertificateSpecSubjectPtrOutput() CertificateSpecSubjectPtrOutput {
	return i.ToCertificateSpecSubjectPtrOutputWithContext(context.Background())
}

func (i *certificateSpecSubjectPtrType) ToCertificateSpecSubjectPtrOutputWithContext(ctx context.Context) CertificateSpecSubjectPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(CertificateSpecSubjectPtrOutput)
}

func (i *certificateSpecSubjectPtrType) ToOutput(ctx context.Context) pulumix.Output[*CertificateSpecSubject] {
	return pulumix.Output[*CertificateSpecSubject]{
		OutputState: i.ToCertificateSpecSubjectPtrOutputWithContext(ctx).OutputState,
	}
}

// Full X509 name specification (https://golang.org/pkg/crypto/x509/pkix/#Name).
type CertificateSpecSubjectOutput struct{ *pulumi.OutputState }

func (CertificateSpecSubjectOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*CertificateSpecSubject)(nil)).Elem()
}

func (o CertificateSpecSubjectOutput) ToCertificateSpecSubjectOutput() CertificateSpecSubjectOutput {
	return o
}

func (o CertificateSpecSubjectOutput) ToCertificateSpecSubjectOutputWithContext(ctx context.Context) CertificateSpecSubjectOutput {
	return o
}

func (o CertificateSpecSubjectOutput) ToCertificateSpecSubjectPtrOutput() CertificateSpecSubjectPtrOutput {
	return o.ToCertificateSpecSubjectPtrOutputWithContext(context.Background())
}

func (o CertificateSpecSubjectOutput) ToCertificateSpecSubjectPtrOutputWithContext(ctx context.Context) CertificateSpecSubjectPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v CertificateSpecSubject) *CertificateSpecSubject {
		return &v
	}).(CertificateSpecSubjectPtrOutput)
}

func (o CertificateSpecSubjectOutput) ToOutput(ctx context.Context) pulumix.Output[CertificateSpecSubject] {
	return pulumix.Output[CertificateSpecSubject]{
		OutputState: o.OutputState,
	}
}

// Countries to be used on the Certificate.
func (o CertificateSpecSubjectOutput) Countries() pulumi.StringArrayOutput {
	return o.ApplyT(func(v CertificateSpecSubject) []string { return v.Countries }).(pulumi.StringArrayOutput)
}

// Cities to be used on the Certificate.
func (o CertificateSpecSubjectOutput) Localities() pulumi.StringArrayOutput {
	return o.ApplyT(func(v CertificateSpecSubject) []string { return v.Localities }).(pulumi.StringArrayOutput)
}

// Organizational Units to be used on the Certificate.
func (o CertificateSpecSubjectOutput) OrganizationalUnits() pulumi.StringArrayOutput {
	return o.ApplyT(func(v CertificateSpecSubject) []string { return v.OrganizationalUnits }).(pulumi.StringArrayOutput)
}

// Organizations to be used on the Certificate.
func (o CertificateSpecSubjectOutput) Organizations() pulumi.StringArrayOutput {
	return o.ApplyT(func(v CertificateSpecSubject) []string { return v.Organizations }).(pulumi.StringArrayOutput)
}

// Postal codes to be used on the Certificate.
func (o CertificateSpecSubjectOutput) PostalCodes() pulumi.StringArrayOutput {
	return o.ApplyT(func(v CertificateSpecSubject) []string { return v.PostalCodes }).(pulumi.StringArrayOutput)
}

// State/Provinces to be used on the Certificate.
func (o CertificateSpecSubjectOutput) Provinces() pulumi.StringArrayOutput {
	return o.ApplyT(func(v CertificateSpecSubject) []string { return v.Provinces }).(pulumi.StringArrayOutput)
}

// Serial number to be used on the Certificate.
func (o CertificateSpecSubjectOutput) SerialNumber() pulumi.StringPtrOutput {
	return o.ApplyT(func(v CertificateSpecSubject) *string { return v.SerialNumber }).(pulumi.StringPtrOutput)
}

// Street addresses to be used on the Certificate.
func (o CertificateSpecSubjectOutput) StreetAddresses() pulumi.StringArrayOutput {
	return o.ApplyT(func(v CertificateSpecSubject) []string { return v.StreetAddresses }).(pulumi.StringArrayOutput)
}

type CertificateSpecSubjectPtrOutput struct{ *pulumi.OutputState }

func (CertificateSpecSubjectPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**CertificateSpecSubject)(nil)).Elem()
}

func (o CertificateSpecSubjectPtrOutput) ToCertificateSpecSubjectPtrOutput() CertificateSpecSubjectPtrOutput {
	return o
}

func (o CertificateSpecSubjectPtrOutput) ToCertificateSpecSubjectPtrOutputWithContext(ctx context.Context) CertificateSpecSubjectPtrOutput {
	return o
}

func (o CertificateSpecSubjectPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*CertificateSpecSubject] {
	return pulumix.Output[*CertificateSpecSubject]{
		OutputState: o.OutputState,
	}
}

func (o CertificateSpecSubjectPtrOutput) Elem() CertificateSpecSubjectOutput {
	return o.ApplyT(func(v *CertificateSpecSubject) CertificateSpecSubject {
		if v != nil {
			return *v
		}
		var ret CertificateSpecSubject
		return ret
	}).(CertificateSpecSubjectOutput)
}

// Countries to be used on the Certificate.
func (o CertificateSpecSubjectPtrOutput) Countries() pulumi.StringArrayOutput {
	return o.ApplyT(func(v *CertificateSpecSubject) []string {
		if v == nil {
			return nil
		}
		return v.Countries
	}).(pulumi.StringArrayOutput)
}

// Cities to be used on the Certificate.
func (o CertificateSpecSubjectPtrOutput) Localities() pulumi.StringArrayOutput {
	return o.ApplyT(func(v *CertificateSpecSubject) []string {
		if v == nil {
			return nil
		}
		return v.Localities
	}).(pulumi.StringArrayOutput)
}

// Organizational Units to be used on the Certificate.
func (o CertificateSpecSubjectPtrOutput) OrganizationalUnits() pulumi.StringArrayOutput {
	return o.ApplyT(func(v *CertificateSpecSubject) []string {
		if v == nil {
			return nil
		}
		return v.OrganizationalUnits
	}).(pulumi.StringArrayOutput)
}

// Organizations to be used on the Certificate.
func (o CertificateSpecSubjectPtrOutput) Organizations() pulumi.StringArrayOutput {
	return o.ApplyT(func(v *CertificateSpecSubject) []string {
		if v == nil {
			return nil
		}
		return v.Organizations
	}).(pulumi.StringArrayOutput)
}

// Postal codes to be used on the Certificate.
func (o CertificateSpecSubjectPtrOutput) PostalCodes() pulumi.StringArrayOutput {
	return o.ApplyT(func(v *CertificateSpecSubject) []string {
		if v == nil {
			return nil
		}
		return v.PostalCodes
	}).(pulumi.StringArrayOutput)
}

// State/Provinces to be used on the Certificate.
func (o CertificateSpecSubjectPtrOutput) Provinces() pulumi.StringArrayOutput {
	return o.ApplyT(func(v *CertificateSpecSubject) []string {
		if v == nil {
			return nil
		}
		return v.Provinces
	}).(pulumi.StringArrayOutput)
}

// Serial number to be used on the Certificate.
func (o CertificateSpecSubjectPtrOutput) SerialNumber() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *CertificateSpecSubject) *string {
		if v == nil {
			return nil
		}
		return v.SerialNumber
	}).(pulumi.StringPtrOutput)
}

// Street addresses to be used on the Certificate.
func (o CertificateSpecSubjectPtrOutput) StreetAddresses() pulumi.StringArrayOutput {
	return o.ApplyT(func(v *CertificateSpecSubject) []string {
		if v == nil {
			return nil
		}
		return v.StreetAddresses
	}).(pulumi.StringArrayOutput)
}

// Status of the Certificate. This is set and managed automatically.
type CertificateStatus struct {
	// List of status conditions to indicate the status of certificates. Known condition types are `Ready` and `Issuing`.
	Conditions []CertificateStatusConditions `pulumi:"conditions"`
	// LastFailureTime is the time as recorded by the Certificate controller of the most recent failure to complete a CertificateRequest for this Certificate resource. If set, cert-manager will not re-request another Certificate until 1 hour has elapsed from this time.
	LastFailureTime *string `pulumi:"lastFailureTime"`
	// The name of the Secret resource containing the private key to be used for the next certificate iteration. The keymanager controller will automatically set this field if the `Issuing` condition is set to `True`. It will automatically unset this field when the Issuing condition is not set or False.
	NextPrivateKeySecretName *string `pulumi:"nextPrivateKeySecretName"`
	// The expiration time of the certificate stored in the secret named by this resource in `spec.secretName`.
	NotAfter *string `pulumi:"notAfter"`
	// The time after which the certificate stored in the secret named by this resource in spec.secretName is valid.
	NotBefore *string `pulumi:"notBefore"`
	// RenewalTime is the time at which the certificate will be next renewed. If not set, no upcoming renewal is scheduled.
	RenewalTime *string `pulumi:"renewalTime"`
	// The current 'revision' of the certificate as issued.
	//  When a CertificateRequest resource is created, it will have the `cert-manager.io/certificate-revision` set to one greater than the current value of this field.
	//  Upon issuance, this field will be set to the value of the annotation on the CertificateRequest resource used to issue the certificate.
	//  Persisting the value on the CertificateRequest resource allows the certificates controller to know whether a request is part of an old issuance or if it is part of the ongoing revision's issuance by checking if the revision value in the annotation is greater than this field.
	Revision *int `pulumi:"revision"`
}

// CertificateStatusInput is an input type that accepts CertificateStatusArgs and CertificateStatusOutput values.
// You can construct a concrete instance of `CertificateStatusInput` via:
//
//	CertificateStatusArgs{...}
type CertificateStatusInput interface {
	pulumi.Input

	ToCertificateStatusOutput() CertificateStatusOutput
	ToCertificateStatusOutputWithContext(context.Context) CertificateStatusOutput
}

// Status of the Certificate. This is set and managed automatically.
type CertificateStatusArgs struct {
	// List of status conditions to indicate the status of certificates. Known condition types are `Ready` and `Issuing`.
	Conditions CertificateStatusConditionsArrayInput `pulumi:"conditions"`
	// LastFailureTime is the time as recorded by the Certificate controller of the most recent failure to complete a CertificateRequest for this Certificate resource. If set, cert-manager will not re-request another Certificate until 1 hour has elapsed from this time.
	LastFailureTime pulumi.StringPtrInput `pulumi:"lastFailureTime"`
	// The name of the Secret resource containing the private key to be used for the next certificate iteration. The keymanager controller will automatically set this field if the `Issuing` condition is set to `True`. It will automatically unset this field when the Issuing condition is not set or False.
	NextPrivateKeySecretName pulumi.StringPtrInput `pulumi:"nextPrivateKeySecretName"`
	// The expiration time of the certificate stored in the secret named by this resource in `spec.secretName`.
	NotAfter pulumi.StringPtrInput `pulumi:"notAfter"`
	// The time after which the certificate stored in the secret named by this resource in spec.secretName is valid.
	NotBefore pulumi.StringPtrInput `pulumi:"notBefore"`
	// RenewalTime is the time at which the certificate will be next renewed. If not set, no upcoming renewal is scheduled.
	RenewalTime pulumi.StringPtrInput `pulumi:"renewalTime"`
	// The current 'revision' of the certificate as issued.
	//  When a CertificateRequest resource is created, it will have the `cert-manager.io/certificate-revision` set to one greater than the current value of this field.
	//  Upon issuance, this field will be set to the value of the annotation on the CertificateRequest resource used to issue the certificate.
	//  Persisting the value on the CertificateRequest resource allows the certificates controller to know whether a request is part of an old issuance or if it is part of the ongoing revision's issuance by checking if the revision value in the annotation is greater than this field.
	Revision pulumi.IntPtrInput `pulumi:"revision"`
}

func (CertificateStatusArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*CertificateStatus)(nil)).Elem()
}

func (i CertificateStatusArgs) ToCertificateStatusOutput() CertificateStatusOutput {
	return i.ToCertificateStatusOutputWithContext(context.Background())
}

func (i CertificateStatusArgs) ToCertificateStatusOutputWithContext(ctx context.Context) CertificateStatusOutput {
	return pulumi.ToOutputWithContext(ctx, i).(CertificateStatusOutput)
}

func (i CertificateStatusArgs) ToOutput(ctx context.Context) pulumix.Output[CertificateStatus] {
	return pulumix.Output[CertificateStatus]{
		OutputState: i.ToCertificateStatusOutputWithContext(ctx).OutputState,
	}
}

func (i CertificateStatusArgs) ToCertificateStatusPtrOutput() CertificateStatusPtrOutput {
	return i.ToCertificateStatusPtrOutputWithContext(context.Background())
}

func (i CertificateStatusArgs) ToCertificateStatusPtrOutputWithContext(ctx context.Context) CertificateStatusPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(CertificateStatusOutput).ToCertificateStatusPtrOutputWithContext(ctx)
}

// CertificateStatusPtrInput is an input type that accepts CertificateStatusArgs, CertificateStatusPtr and CertificateStatusPtrOutput values.
// You can construct a concrete instance of `CertificateStatusPtrInput` via:
//
//	        CertificateStatusArgs{...}
//
//	or:
//
//	        nil
type CertificateStatusPtrInput interface {
	pulumi.Input

	ToCertificateStatusPtrOutput() CertificateStatusPtrOutput
	ToCertificateStatusPtrOutputWithContext(context.Context) CertificateStatusPtrOutput
}

type certificateStatusPtrType CertificateStatusArgs

func CertificateStatusPtr(v *CertificateStatusArgs) CertificateStatusPtrInput {
	return (*certificateStatusPtrType)(v)
}

func (*certificateStatusPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**CertificateStatus)(nil)).Elem()
}

func (i *certificateStatusPtrType) ToCertificateStatusPtrOutput() CertificateStatusPtrOutput {
	return i.ToCertificateStatusPtrOutputWithContext(context.Background())
}

func (i *certificateStatusPtrType) ToCertificateStatusPtrOutputWithContext(ctx context.Context) CertificateStatusPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(CertificateStatusPtrOutput)
}

func (i *certificateStatusPtrType) ToOutput(ctx context.Context) pulumix.Output[*CertificateStatus] {
	return pulumix.Output[*CertificateStatus]{
		OutputState: i.ToCertificateStatusPtrOutputWithContext(ctx).OutputState,
	}
}

// Status of the Certificate. This is set and managed automatically.
type CertificateStatusOutput struct{ *pulumi.OutputState }

func (CertificateStatusOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*CertificateStatus)(nil)).Elem()
}

func (o CertificateStatusOutput) ToCertificateStatusOutput() CertificateStatusOutput {
	return o
}

func (o CertificateStatusOutput) ToCertificateStatusOutputWithContext(ctx context.Context) CertificateStatusOutput {
	return o
}

func (o CertificateStatusOutput) ToCertificateStatusPtrOutput() CertificateStatusPtrOutput {
	return o.ToCertificateStatusPtrOutputWithContext(context.Background())
}

func (o CertificateStatusOutput) ToCertificateStatusPtrOutputWithContext(ctx context.Context) CertificateStatusPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v CertificateStatus) *CertificateStatus {
		return &v
	}).(CertificateStatusPtrOutput)
}

func (o CertificateStatusOutput) ToOutput(ctx context.Context) pulumix.Output[CertificateStatus] {
	return pulumix.Output[CertificateStatus]{
		OutputState: o.OutputState,
	}
}

// List of status conditions to indicate the status of certificates. Known condition types are `Ready` and `Issuing`.
func (o CertificateStatusOutput) Conditions() CertificateStatusConditionsArrayOutput {
	return o.ApplyT(func(v CertificateStatus) []CertificateStatusConditions { return v.Conditions }).(CertificateStatusConditionsArrayOutput)
}

// LastFailureTime is the time as recorded by the Certificate controller of the most recent failure to complete a CertificateRequest for this Certificate resource. If set, cert-manager will not re-request another Certificate until 1 hour has elapsed from this time.
func (o CertificateStatusOutput) LastFailureTime() pulumi.StringPtrOutput {
	return o.ApplyT(func(v CertificateStatus) *string { return v.LastFailureTime }).(pulumi.StringPtrOutput)
}

// The name of the Secret resource containing the private key to be used for the next certificate iteration. The keymanager controller will automatically set this field if the `Issuing` condition is set to `True`. It will automatically unset this field when the Issuing condition is not set or False.
func (o CertificateStatusOutput) NextPrivateKeySecretName() pulumi.StringPtrOutput {
	return o.ApplyT(func(v CertificateStatus) *string { return v.NextPrivateKeySecretName }).(pulumi.StringPtrOutput)
}

// The expiration time of the certificate stored in the secret named by this resource in `spec.secretName`.
func (o CertificateStatusOutput) NotAfter() pulumi.StringPtrOutput {
	return o.ApplyT(func(v CertificateStatus) *string { return v.NotAfter }).(pulumi.StringPtrOutput)
}

// The time after which the certificate stored in the secret named by this resource in spec.secretName is valid.
func (o CertificateStatusOutput) NotBefore() pulumi.StringPtrOutput {
	return o.ApplyT(func(v CertificateStatus) *string { return v.NotBefore }).(pulumi.StringPtrOutput)
}

// RenewalTime is the time at which the certificate will be next renewed. If not set, no upcoming renewal is scheduled.
func (o CertificateStatusOutput) RenewalTime() pulumi.StringPtrOutput {
	return o.ApplyT(func(v CertificateStatus) *string { return v.RenewalTime }).(pulumi.StringPtrOutput)
}

// The current 'revision' of the certificate as issued.
//
//	When a CertificateRequest resource is created, it will have the `cert-manager.io/certificate-revision` set to one greater than the current value of this field.
//	Upon issuance, this field will be set to the value of the annotation on the CertificateRequest resource used to issue the certificate.
//	Persisting the value on the CertificateRequest resource allows the certificates controller to know whether a request is part of an old issuance or if it is part of the ongoing revision's issuance by checking if the revision value in the annotation is greater than this field.
func (o CertificateStatusOutput) Revision() pulumi.IntPtrOutput {
	return o.ApplyT(func(v CertificateStatus) *int { return v.Revision }).(pulumi.IntPtrOutput)
}

type CertificateStatusPtrOutput struct{ *pulumi.OutputState }

func (CertificateStatusPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**CertificateStatus)(nil)).Elem()
}

func (o CertificateStatusPtrOutput) ToCertificateStatusPtrOutput() CertificateStatusPtrOutput {
	return o
}

func (o CertificateStatusPtrOutput) ToCertificateStatusPtrOutputWithContext(ctx context.Context) CertificateStatusPtrOutput {
	return o
}

func (o CertificateStatusPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*CertificateStatus] {
	return pulumix.Output[*CertificateStatus]{
		OutputState: o.OutputState,
	}
}

func (o CertificateStatusPtrOutput) Elem() CertificateStatusOutput {
	return o.ApplyT(func(v *CertificateStatus) CertificateStatus {
		if v != nil {
			return *v
		}
		var ret CertificateStatus
		return ret
	}).(CertificateStatusOutput)
}

// List of status conditions to indicate the status of certificates. Known condition types are `Ready` and `Issuing`.
func (o CertificateStatusPtrOutput) Conditions() CertificateStatusConditionsArrayOutput {
	return o.ApplyT(func(v *CertificateStatus) []CertificateStatusConditions {
		if v == nil {
			return nil
		}
		return v.Conditions
	}).(CertificateStatusConditionsArrayOutput)
}

// LastFailureTime is the time as recorded by the Certificate controller of the most recent failure to complete a CertificateRequest for this Certificate resource. If set, cert-manager will not re-request another Certificate until 1 hour has elapsed from this time.
func (o CertificateStatusPtrOutput) LastFailureTime() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *CertificateStatus) *string {
		if v == nil {
			return nil
		}
		return v.LastFailureTime
	}).(pulumi.StringPtrOutput)
}

// The name of the Secret resource containing the private key to be used for the next certificate iteration. The keymanager controller will automatically set this field if the `Issuing` condition is set to `True`. It will automatically unset this field when the Issuing condition is not set or False.
func (o CertificateStatusPtrOutput) NextPrivateKeySecretName() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *CertificateStatus) *string {
		if v == nil {
			return nil
		}
		return v.NextPrivateKeySecretName
	}).(pulumi.StringPtrOutput)
}

// The expiration time of the certificate stored in the secret named by this resource in `spec.secretName`.
func (o CertificateStatusPtrOutput) NotAfter() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *CertificateStatus) *string {
		if v == nil {
			return nil
		}
		return v.NotAfter
	}).(pulumi.StringPtrOutput)
}

// The time after which the certificate stored in the secret named by this resource in spec.secretName is valid.
func (o CertificateStatusPtrOutput) NotBefore() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *CertificateStatus) *string {
		if v == nil {
			return nil
		}
		return v.NotBefore
	}).(pulumi.StringPtrOutput)
}

// RenewalTime is the time at which the certificate will be next renewed. If not set, no upcoming renewal is scheduled.
func (o CertificateStatusPtrOutput) RenewalTime() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *CertificateStatus) *string {
		if v == nil {
			return nil
		}
		return v.RenewalTime
	}).(pulumi.StringPtrOutput)
}

// The current 'revision' of the certificate as issued.
//
//	When a CertificateRequest resource is created, it will have the `cert-manager.io/certificate-revision` set to one greater than the current value of this field.
//	Upon issuance, this field will be set to the value of the annotation on the CertificateRequest resource used to issue the certificate.
//	Persisting the value on the CertificateRequest resource allows the certificates controller to know whether a request is part of an old issuance or if it is part of the ongoing revision's issuance by checking if the revision value in the annotation is greater than this field.
func (o CertificateStatusPtrOutput) Revision() pulumi.IntPtrOutput {
	return o.ApplyT(func(v *CertificateStatus) *int {
		if v == nil {
			return nil
		}
		return v.Revision
	}).(pulumi.IntPtrOutput)
}

// CertificateCondition contains condition information for an Certificate.
type CertificateStatusConditions struct {
	// LastTransitionTime is the timestamp corresponding to the last status change of this condition.
	LastTransitionTime *string `pulumi:"lastTransitionTime"`
	// Message is a human readable description of the details of the last transition, complementing reason.
	Message *string `pulumi:"message"`
	// If set, this represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.condition[x].observedGeneration is 9, the condition is out of date with respect to the current state of the Certificate.
	ObservedGeneration *int `pulumi:"observedGeneration"`
	// Reason is a brief machine readable explanation for the condition's last transition.
	Reason *string `pulumi:"reason"`
	// Status of the condition, one of (`True`, `False`, `Unknown`).
	Status string `pulumi:"status"`
	// Type of the condition, known values are (`Ready`, `Issuing`).
	Type string `pulumi:"type"`
}

// CertificateStatusConditionsInput is an input type that accepts CertificateStatusConditionsArgs and CertificateStatusConditionsOutput values.
// You can construct a concrete instance of `CertificateStatusConditionsInput` via:
//
//	CertificateStatusConditionsArgs{...}
type CertificateStatusConditionsInput interface {
	pulumi.Input

	ToCertificateStatusConditionsOutput() CertificateStatusConditionsOutput
	ToCertificateStatusConditionsOutputWithContext(context.Context) CertificateStatusConditionsOutput
}

// CertificateCondition contains condition information for an Certificate.
type CertificateStatusConditionsArgs struct {
	// LastTransitionTime is the timestamp corresponding to the last status change of this condition.
	LastTransitionTime pulumi.StringPtrInput `pulumi:"lastTransitionTime"`
	// Message is a human readable description of the details of the last transition, complementing reason.
	Message pulumi.StringPtrInput `pulumi:"message"`
	// If set, this represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.condition[x].observedGeneration is 9, the condition is out of date with respect to the current state of the Certificate.
	ObservedGeneration pulumi.IntPtrInput `pulumi:"observedGeneration"`
	// Reason is a brief machine readable explanation for the condition's last transition.
	Reason pulumi.StringPtrInput `pulumi:"reason"`
	// Status of the condition, one of (`True`, `False`, `Unknown`).
	Status pulumi.StringInput `pulumi:"status"`
	// Type of the condition, known values are (`Ready`, `Issuing`).
	Type pulumi.StringInput `pulumi:"type"`
}

func (CertificateStatusConditionsArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*CertificateStatusConditions)(nil)).Elem()
}

func (i CertificateStatusConditionsArgs) ToCertificateStatusConditionsOutput() CertificateStatusConditionsOutput {
	return i.ToCertificateStatusConditionsOutputWithContext(context.Background())
}

func (i CertificateStatusConditionsArgs) ToCertificateStatusConditionsOutputWithContext(ctx context.Context) CertificateStatusConditionsOutput {
	return pulumi.ToOutputWithContext(ctx, i).(CertificateStatusConditionsOutput)
}

func (i CertificateStatusConditionsArgs) ToOutput(ctx context.Context) pulumix.Output[CertificateStatusConditions] {
	return pulumix.Output[CertificateStatusConditions]{
		OutputState: i.ToCertificateStatusConditionsOutputWithContext(ctx).OutputState,
	}
}

// CertificateStatusConditionsArrayInput is an input type that accepts CertificateStatusConditionsArray and CertificateStatusConditionsArrayOutput values.
// You can construct a concrete instance of `CertificateStatusConditionsArrayInput` via:
//
//	CertificateStatusConditionsArray{ CertificateStatusConditionsArgs{...} }
type CertificateStatusConditionsArrayInput interface {
	pulumi.Input

	ToCertificateStatusConditionsArrayOutput() CertificateStatusConditionsArrayOutput
	ToCertificateStatusConditionsArrayOutputWithContext(context.Context) CertificateStatusConditionsArrayOutput
}

type CertificateStatusConditionsArray []CertificateStatusConditionsInput

func (CertificateStatusConditionsArray) ElementType() reflect.Type {
	return reflect.TypeOf((*[]CertificateStatusConditions)(nil)).Elem()
}

func (i CertificateStatusConditionsArray) ToCertificateStatusConditionsArrayOutput() CertificateStatusConditionsArrayOutput {
	return i.ToCertificateStatusConditionsArrayOutputWithContext(context.Background())
}

func (i CertificateStatusConditionsArray) ToCertificateStatusConditionsArrayOutputWithContext(ctx context.Context) CertificateStatusConditionsArrayOutput {
	return pulumi.ToOutputWithContext(ctx, i).(CertificateStatusConditionsArrayOutput)
}

func (i CertificateStatusConditionsArray) ToOutput(ctx context.Context) pulumix.Output[[]CertificateStatusConditions] {
	return pulumix.Output[[]CertificateStatusConditions]{
		OutputState: i.ToCertificateStatusConditionsArrayOutputWithContext(ctx).OutputState,
	}
}

// CertificateCondition contains condition information for an Certificate.
type CertificateStatusConditionsOutput struct{ *pulumi.OutputState }

func (CertificateStatusConditionsOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*CertificateStatusConditions)(nil)).Elem()
}

func (o CertificateStatusConditionsOutput) ToCertificateStatusConditionsOutput() CertificateStatusConditionsOutput {
	return o
}

func (o CertificateStatusConditionsOutput) ToCertificateStatusConditionsOutputWithContext(ctx context.Context) CertificateStatusConditionsOutput {
	return o
}

func (o CertificateStatusConditionsOutput) ToOutput(ctx context.Context) pulumix.Output[CertificateStatusConditions] {
	return pulumix.Output[CertificateStatusConditions]{
		OutputState: o.OutputState,
	}
}

// LastTransitionTime is the timestamp corresponding to the last status change of this condition.
func (o CertificateStatusConditionsOutput) LastTransitionTime() pulumi.StringPtrOutput {
	return o.ApplyT(func(v CertificateStatusConditions) *string { return v.LastTransitionTime }).(pulumi.StringPtrOutput)
}

// Message is a human readable description of the details of the last transition, complementing reason.
func (o CertificateStatusConditionsOutput) Message() pulumi.StringPtrOutput {
	return o.ApplyT(func(v CertificateStatusConditions) *string { return v.Message }).(pulumi.StringPtrOutput)
}

// If set, this represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.condition[x].observedGeneration is 9, the condition is out of date with respect to the current state of the Certificate.
func (o CertificateStatusConditionsOutput) ObservedGeneration() pulumi.IntPtrOutput {
	return o.ApplyT(func(v CertificateStatusConditions) *int { return v.ObservedGeneration }).(pulumi.IntPtrOutput)
}

// Reason is a brief machine readable explanation for the condition's last transition.
func (o CertificateStatusConditionsOutput) Reason() pulumi.StringPtrOutput {
	return o.ApplyT(func(v CertificateStatusConditions) *string { return v.Reason }).(pulumi.StringPtrOutput)
}

// Status of the condition, one of (`True`, `False`, `Unknown`).
func (o CertificateStatusConditionsOutput) Status() pulumi.StringOutput {
	return o.ApplyT(func(v CertificateStatusConditions) string { return v.Status }).(pulumi.StringOutput)
}

// Type of the condition, known values are (`Ready`, `Issuing`).
func (o CertificateStatusConditionsOutput) Type() pulumi.StringOutput {
	return o.ApplyT(func(v CertificateStatusConditions) string { return v.Type }).(pulumi.StringOutput)
}

type CertificateStatusConditionsArrayOutput struct{ *pulumi.OutputState }

func (CertificateStatusConditionsArrayOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*[]CertificateStatusConditions)(nil)).Elem()
}

func (o CertificateStatusConditionsArrayOutput) ToCertificateStatusConditionsArrayOutput() CertificateStatusConditionsArrayOutput {
	return o
}

func (o CertificateStatusConditionsArrayOutput) ToCertificateStatusConditionsArrayOutputWithContext(ctx context.Context) CertificateStatusConditionsArrayOutput {
	return o
}

func (o CertificateStatusConditionsArrayOutput) ToOutput(ctx context.Context) pulumix.Output[[]CertificateStatusConditions] {
	return pulumix.Output[[]CertificateStatusConditions]{
		OutputState: o.OutputState,
	}
}

func (o CertificateStatusConditionsArrayOutput) Index(i pulumi.IntInput) CertificateStatusConditionsOutput {
	return pulumi.All(o, i).ApplyT(func(vs []interface{}) CertificateStatusConditions {
		return vs[0].([]CertificateStatusConditions)[vs[1].(int)]
	}).(CertificateStatusConditionsOutput)
}

// A ClusterIssuer represents a certificate issuing authority which can be referenced as part of `issuerRef` fields. It is similar to an Issuer, however it is cluster-scoped and therefore can be referenced by resources that exist in *any* namespace, not just the same namespace as the referent.
type ClusterIssuerType struct {
	ApiVersion *string        `pulumi:"apiVersion"`
	Kind       *string        `pulumi:"kind"`
	Metadata   *v1.ObjectMeta `pulumi:"metadata"`
	// Desired state of the ClusterIssuer resource.
	Spec ClusterIssuerSpec `pulumi:"spec"`
	// Status of the ClusterIssuer. This is set and managed automatically.
	Status *ClusterIssuerStatus `pulumi:"status"`
}

type ClusterIssuerMetadata struct {
}

// Desired state of the ClusterIssuer resource.
type ClusterIssuerSpec struct {
	// ACME configures this issuer to communicate with a RFC8555 (ACME) server to obtain signed x509 certificates.
	Acme *ClusterIssuerSpecAcme `pulumi:"acme"`
	// CA configures this issuer to sign certificates using a signing CA keypair stored in a Secret resource. This is used to build internal PKIs that are managed by cert-manager.
	Ca *ClusterIssuerSpecCa `pulumi:"ca"`
	// SelfSigned configures this issuer to 'self sign' certificates using the private key used to create the CertificateRequest object.
	SelfSigned *ClusterIssuerSpecSelfSigned `pulumi:"selfSigned"`
	// Vault configures this issuer to sign certificates using a HashiCorp Vault PKI backend.
	Vault *ClusterIssuerSpecVault `pulumi:"vault"`
	// Venafi configures this issuer to sign certificates using a Venafi TPP or Venafi Cloud policy zone.
	Venafi *ClusterIssuerSpecVenafi `pulumi:"venafi"`
}

// ClusterIssuerSpecInput is an input type that accepts ClusterIssuerSpecArgs and ClusterIssuerSpecOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecInput` via:
//
//	ClusterIssuerSpecArgs{...}
type ClusterIssuerSpecInput interface {
	pulumi.Input

	ToClusterIssuerSpecOutput() ClusterIssuerSpecOutput
	ToClusterIssuerSpecOutputWithContext(context.Context) ClusterIssuerSpecOutput
}

// Desired state of the ClusterIssuer resource.
type ClusterIssuerSpecArgs struct {
	// ACME configures this issuer to communicate with a RFC8555 (ACME) server to obtain signed x509 certificates.
	Acme ClusterIssuerSpecAcmePtrInput `pulumi:"acme"`
	// CA configures this issuer to sign certificates using a signing CA keypair stored in a Secret resource. This is used to build internal PKIs that are managed by cert-manager.
	Ca ClusterIssuerSpecCaPtrInput `pulumi:"ca"`
	// SelfSigned configures this issuer to 'self sign' certificates using the private key used to create the CertificateRequest object.
	SelfSigned ClusterIssuerSpecSelfSignedPtrInput `pulumi:"selfSigned"`
	// Vault configures this issuer to sign certificates using a HashiCorp Vault PKI backend.
	Vault ClusterIssuerSpecVaultPtrInput `pulumi:"vault"`
	// Venafi configures this issuer to sign certificates using a Venafi TPP or Venafi Cloud policy zone.
	Venafi ClusterIssuerSpecVenafiPtrInput `pulumi:"venafi"`
}

func (ClusterIssuerSpecArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpec)(nil)).Elem()
}

func (i ClusterIssuerSpecArgs) ToClusterIssuerSpecOutput() ClusterIssuerSpecOutput {
	return i.ToClusterIssuerSpecOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecArgs) ToClusterIssuerSpecOutputWithContext(ctx context.Context) ClusterIssuerSpecOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecOutput)
}

func (i ClusterIssuerSpecArgs) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpec] {
	return pulumix.Output[ClusterIssuerSpec]{
		OutputState: i.ToClusterIssuerSpecOutputWithContext(ctx).OutputState,
	}
}

func (i ClusterIssuerSpecArgs) ToClusterIssuerSpecPtrOutput() ClusterIssuerSpecPtrOutput {
	return i.ToClusterIssuerSpecPtrOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecArgs) ToClusterIssuerSpecPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecOutput).ToClusterIssuerSpecPtrOutputWithContext(ctx)
}

// ClusterIssuerSpecPtrInput is an input type that accepts ClusterIssuerSpecArgs, ClusterIssuerSpecPtr and ClusterIssuerSpecPtrOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecPtrInput` via:
//
//	        ClusterIssuerSpecArgs{...}
//
//	or:
//
//	        nil
type ClusterIssuerSpecPtrInput interface {
	pulumi.Input

	ToClusterIssuerSpecPtrOutput() ClusterIssuerSpecPtrOutput
	ToClusterIssuerSpecPtrOutputWithContext(context.Context) ClusterIssuerSpecPtrOutput
}

type clusterIssuerSpecPtrType ClusterIssuerSpecArgs

func ClusterIssuerSpecPtr(v *ClusterIssuerSpecArgs) ClusterIssuerSpecPtrInput {
	return (*clusterIssuerSpecPtrType)(v)
}

func (*clusterIssuerSpecPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpec)(nil)).Elem()
}

func (i *clusterIssuerSpecPtrType) ToClusterIssuerSpecPtrOutput() ClusterIssuerSpecPtrOutput {
	return i.ToClusterIssuerSpecPtrOutputWithContext(context.Background())
}

func (i *clusterIssuerSpecPtrType) ToClusterIssuerSpecPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecPtrOutput)
}

func (i *clusterIssuerSpecPtrType) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpec] {
	return pulumix.Output[*ClusterIssuerSpec]{
		OutputState: i.ToClusterIssuerSpecPtrOutputWithContext(ctx).OutputState,
	}
}

// Desired state of the ClusterIssuer resource.
type ClusterIssuerSpecOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpec)(nil)).Elem()
}

func (o ClusterIssuerSpecOutput) ToClusterIssuerSpecOutput() ClusterIssuerSpecOutput {
	return o
}

func (o ClusterIssuerSpecOutput) ToClusterIssuerSpecOutputWithContext(ctx context.Context) ClusterIssuerSpecOutput {
	return o
}

func (o ClusterIssuerSpecOutput) ToClusterIssuerSpecPtrOutput() ClusterIssuerSpecPtrOutput {
	return o.ToClusterIssuerSpecPtrOutputWithContext(context.Background())
}

func (o ClusterIssuerSpecOutput) ToClusterIssuerSpecPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v ClusterIssuerSpec) *ClusterIssuerSpec {
		return &v
	}).(ClusterIssuerSpecPtrOutput)
}

func (o ClusterIssuerSpecOutput) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpec] {
	return pulumix.Output[ClusterIssuerSpec]{
		OutputState: o.OutputState,
	}
}

// ACME configures this issuer to communicate with a RFC8555 (ACME) server to obtain signed x509 certificates.
func (o ClusterIssuerSpecOutput) Acme() ClusterIssuerSpecAcmePtrOutput {
	return o.ApplyT(func(v ClusterIssuerSpec) *ClusterIssuerSpecAcme { return v.Acme }).(ClusterIssuerSpecAcmePtrOutput)
}

// CA configures this issuer to sign certificates using a signing CA keypair stored in a Secret resource. This is used to build internal PKIs that are managed by cert-manager.
func (o ClusterIssuerSpecOutput) Ca() ClusterIssuerSpecCaPtrOutput {
	return o.ApplyT(func(v ClusterIssuerSpec) *ClusterIssuerSpecCa { return v.Ca }).(ClusterIssuerSpecCaPtrOutput)
}

// SelfSigned configures this issuer to 'self sign' certificates using the private key used to create the CertificateRequest object.
func (o ClusterIssuerSpecOutput) SelfSigned() ClusterIssuerSpecSelfSignedPtrOutput {
	return o.ApplyT(func(v ClusterIssuerSpec) *ClusterIssuerSpecSelfSigned { return v.SelfSigned }).(ClusterIssuerSpecSelfSignedPtrOutput)
}

// Vault configures this issuer to sign certificates using a HashiCorp Vault PKI backend.
func (o ClusterIssuerSpecOutput) Vault() ClusterIssuerSpecVaultPtrOutput {
	return o.ApplyT(func(v ClusterIssuerSpec) *ClusterIssuerSpecVault { return v.Vault }).(ClusterIssuerSpecVaultPtrOutput)
}

// Venafi configures this issuer to sign certificates using a Venafi TPP or Venafi Cloud policy zone.
func (o ClusterIssuerSpecOutput) Venafi() ClusterIssuerSpecVenafiPtrOutput {
	return o.ApplyT(func(v ClusterIssuerSpec) *ClusterIssuerSpecVenafi { return v.Venafi }).(ClusterIssuerSpecVenafiPtrOutput)
}

type ClusterIssuerSpecPtrOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpec)(nil)).Elem()
}

func (o ClusterIssuerSpecPtrOutput) ToClusterIssuerSpecPtrOutput() ClusterIssuerSpecPtrOutput {
	return o
}

func (o ClusterIssuerSpecPtrOutput) ToClusterIssuerSpecPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecPtrOutput {
	return o
}

func (o ClusterIssuerSpecPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpec] {
	return pulumix.Output[*ClusterIssuerSpec]{
		OutputState: o.OutputState,
	}
}

func (o ClusterIssuerSpecPtrOutput) Elem() ClusterIssuerSpecOutput {
	return o.ApplyT(func(v *ClusterIssuerSpec) ClusterIssuerSpec {
		if v != nil {
			return *v
		}
		var ret ClusterIssuerSpec
		return ret
	}).(ClusterIssuerSpecOutput)
}

// ACME configures this issuer to communicate with a RFC8555 (ACME) server to obtain signed x509 certificates.
func (o ClusterIssuerSpecPtrOutput) Acme() ClusterIssuerSpecAcmePtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpec) *ClusterIssuerSpecAcme {
		if v == nil {
			return nil
		}
		return v.Acme
	}).(ClusterIssuerSpecAcmePtrOutput)
}

// CA configures this issuer to sign certificates using a signing CA keypair stored in a Secret resource. This is used to build internal PKIs that are managed by cert-manager.
func (o ClusterIssuerSpecPtrOutput) Ca() ClusterIssuerSpecCaPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpec) *ClusterIssuerSpecCa {
		if v == nil {
			return nil
		}
		return v.Ca
	}).(ClusterIssuerSpecCaPtrOutput)
}

// SelfSigned configures this issuer to 'self sign' certificates using the private key used to create the CertificateRequest object.
func (o ClusterIssuerSpecPtrOutput) SelfSigned() ClusterIssuerSpecSelfSignedPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpec) *ClusterIssuerSpecSelfSigned {
		if v == nil {
			return nil
		}
		return v.SelfSigned
	}).(ClusterIssuerSpecSelfSignedPtrOutput)
}

// Vault configures this issuer to sign certificates using a HashiCorp Vault PKI backend.
func (o ClusterIssuerSpecPtrOutput) Vault() ClusterIssuerSpecVaultPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpec) *ClusterIssuerSpecVault {
		if v == nil {
			return nil
		}
		return v.Vault
	}).(ClusterIssuerSpecVaultPtrOutput)
}

// Venafi configures this issuer to sign certificates using a Venafi TPP or Venafi Cloud policy zone.
func (o ClusterIssuerSpecPtrOutput) Venafi() ClusterIssuerSpecVenafiPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpec) *ClusterIssuerSpecVenafi {
		if v == nil {
			return nil
		}
		return v.Venafi
	}).(ClusterIssuerSpecVenafiPtrOutput)
}

// ACME configures this issuer to communicate with a RFC8555 (ACME) server to obtain signed x509 certificates.
type ClusterIssuerSpecAcme struct {
	// Enables or disables generating a new ACME account key. If true, the Issuer resource will *not* request a new account but will expect the account key to be supplied via an existing secret. If false, the cert-manager system will generate a new ACME account key for the Issuer. Defaults to false.
	DisableAccountKeyGeneration *bool `pulumi:"disableAccountKeyGeneration"`
	// Email is the email address to be associated with the ACME account. This field is optional, but it is strongly recommended to be set. It will be used to contact you in case of issues with your account or certificates, including expiry notification emails. This field may be updated after the account is initially registered.
	Email *string `pulumi:"email"`
	// Enables requesting a Not After date on certificates that matches the duration of the certificate. This is not supported by all ACME servers like Let's Encrypt. If set to true when the ACME server does not support it it will create an error on the Order. Defaults to false.
	EnableDurationFeature *bool `pulumi:"enableDurationFeature"`
	// ExternalAccountBinding is a reference to a CA external account of the ACME server. If set, upon registration cert-manager will attempt to associate the given external account credentials with the registered ACME account.
	ExternalAccountBinding *ClusterIssuerSpecAcmeExternalAccountBinding `pulumi:"externalAccountBinding"`
	// PreferredChain is the chain to use if the ACME server outputs multiple. PreferredChain is no guarantee that this one gets delivered by the ACME endpoint. For example, for Let's Encrypt's DST crosssign you would use: "DST Root CA X3" or "ISRG Root X1" for the newer Let's Encrypt root CA. This value picks the first certificate bundle in the ACME alternative chains that has a certificate with this value as its issuer's CN
	PreferredChain *string `pulumi:"preferredChain"`
	// PrivateKey is the name of a Kubernetes Secret resource that will be used to store the automatically generated ACME account private key. Optionally, a `key` may be specified to select a specific entry within the named Secret resource. If `key` is not specified, a default of `tls.key` will be used.
	PrivateKeySecretRef ClusterIssuerSpecAcmePrivateKeySecretRef `pulumi:"privateKeySecretRef"`
	// Server is the URL used to access the ACME server's 'directory' endpoint. For example, for Let's Encrypt's staging endpoint, you would use: "https://acme-staging-v02.api.letsencrypt.org/directory". Only ACME v2 endpoints (i.e. RFC 8555) are supported.
	Server string `pulumi:"server"`
	// Enables or disables validation of the ACME server TLS certificate. If true, requests to the ACME server will not have their TLS certificate validated (i.e. insecure connections will be allowed). Only enable this option in development environments. The cert-manager system installed roots will be used to verify connections to the ACME server if this is false. Defaults to false.
	SkipTLSVerify *bool `pulumi:"skipTLSVerify"`
	// Solvers is a list of challenge solvers that will be used to solve ACME challenges for the matching domains. Solver configurations must be provided in order to obtain certificates from an ACME server. For more information, see: https://cert-manager.io/docs/configuration/acme/
	Solvers []ClusterIssuerSpecAcmeSolvers `pulumi:"solvers"`
}

// ClusterIssuerSpecAcmeInput is an input type that accepts ClusterIssuerSpecAcmeArgs and ClusterIssuerSpecAcmeOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeInput` via:
//
//	ClusterIssuerSpecAcmeArgs{...}
type ClusterIssuerSpecAcmeInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeOutput() ClusterIssuerSpecAcmeOutput
	ToClusterIssuerSpecAcmeOutputWithContext(context.Context) ClusterIssuerSpecAcmeOutput
}

// ACME configures this issuer to communicate with a RFC8555 (ACME) server to obtain signed x509 certificates.
type ClusterIssuerSpecAcmeArgs struct {
	// Enables or disables generating a new ACME account key. If true, the Issuer resource will *not* request a new account but will expect the account key to be supplied via an existing secret. If false, the cert-manager system will generate a new ACME account key for the Issuer. Defaults to false.
	DisableAccountKeyGeneration pulumi.BoolPtrInput `pulumi:"disableAccountKeyGeneration"`
	// Email is the email address to be associated with the ACME account. This field is optional, but it is strongly recommended to be set. It will be used to contact you in case of issues with your account or certificates, including expiry notification emails. This field may be updated after the account is initially registered.
	Email pulumi.StringPtrInput `pulumi:"email"`
	// Enables requesting a Not After date on certificates that matches the duration of the certificate. This is not supported by all ACME servers like Let's Encrypt. If set to true when the ACME server does not support it it will create an error on the Order. Defaults to false.
	EnableDurationFeature pulumi.BoolPtrInput `pulumi:"enableDurationFeature"`
	// ExternalAccountBinding is a reference to a CA external account of the ACME server. If set, upon registration cert-manager will attempt to associate the given external account credentials with the registered ACME account.
	ExternalAccountBinding ClusterIssuerSpecAcmeExternalAccountBindingPtrInput `pulumi:"externalAccountBinding"`
	// PreferredChain is the chain to use if the ACME server outputs multiple. PreferredChain is no guarantee that this one gets delivered by the ACME endpoint. For example, for Let's Encrypt's DST crosssign you would use: "DST Root CA X3" or "ISRG Root X1" for the newer Let's Encrypt root CA. This value picks the first certificate bundle in the ACME alternative chains that has a certificate with this value as its issuer's CN
	PreferredChain pulumi.StringPtrInput `pulumi:"preferredChain"`
	// PrivateKey is the name of a Kubernetes Secret resource that will be used to store the automatically generated ACME account private key. Optionally, a `key` may be specified to select a specific entry within the named Secret resource. If `key` is not specified, a default of `tls.key` will be used.
	PrivateKeySecretRef ClusterIssuerSpecAcmePrivateKeySecretRefInput `pulumi:"privateKeySecretRef"`
	// Server is the URL used to access the ACME server's 'directory' endpoint. For example, for Let's Encrypt's staging endpoint, you would use: "https://acme-staging-v02.api.letsencrypt.org/directory". Only ACME v2 endpoints (i.e. RFC 8555) are supported.
	Server pulumi.StringInput `pulumi:"server"`
	// Enables or disables validation of the ACME server TLS certificate. If true, requests to the ACME server will not have their TLS certificate validated (i.e. insecure connections will be allowed). Only enable this option in development environments. The cert-manager system installed roots will be used to verify connections to the ACME server if this is false. Defaults to false.
	SkipTLSVerify pulumi.BoolPtrInput `pulumi:"skipTLSVerify"`
	// Solvers is a list of challenge solvers that will be used to solve ACME challenges for the matching domains. Solver configurations must be provided in order to obtain certificates from an ACME server. For more information, see: https://cert-manager.io/docs/configuration/acme/
	Solvers ClusterIssuerSpecAcmeSolversArrayInput `pulumi:"solvers"`
}

func (ClusterIssuerSpecAcmeArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcme)(nil)).Elem()
}

func (i ClusterIssuerSpecAcmeArgs) ToClusterIssuerSpecAcmeOutput() ClusterIssuerSpecAcmeOutput {
	return i.ToClusterIssuerSpecAcmeOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeArgs) ToClusterIssuerSpecAcmeOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeOutput)
}

func (i ClusterIssuerSpecAcmeArgs) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcme] {
	return pulumix.Output[ClusterIssuerSpecAcme]{
		OutputState: i.ToClusterIssuerSpecAcmeOutputWithContext(ctx).OutputState,
	}
}

func (i ClusterIssuerSpecAcmeArgs) ToClusterIssuerSpecAcmePtrOutput() ClusterIssuerSpecAcmePtrOutput {
	return i.ToClusterIssuerSpecAcmePtrOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeArgs) ToClusterIssuerSpecAcmePtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmePtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeOutput).ToClusterIssuerSpecAcmePtrOutputWithContext(ctx)
}

// ClusterIssuerSpecAcmePtrInput is an input type that accepts ClusterIssuerSpecAcmeArgs, ClusterIssuerSpecAcmePtr and ClusterIssuerSpecAcmePtrOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmePtrInput` via:
//
//	        ClusterIssuerSpecAcmeArgs{...}
//
//	or:
//
//	        nil
type ClusterIssuerSpecAcmePtrInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmePtrOutput() ClusterIssuerSpecAcmePtrOutput
	ToClusterIssuerSpecAcmePtrOutputWithContext(context.Context) ClusterIssuerSpecAcmePtrOutput
}

type clusterIssuerSpecAcmePtrType ClusterIssuerSpecAcmeArgs

func ClusterIssuerSpecAcmePtr(v *ClusterIssuerSpecAcmeArgs) ClusterIssuerSpecAcmePtrInput {
	return (*clusterIssuerSpecAcmePtrType)(v)
}

func (*clusterIssuerSpecAcmePtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecAcme)(nil)).Elem()
}

func (i *clusterIssuerSpecAcmePtrType) ToClusterIssuerSpecAcmePtrOutput() ClusterIssuerSpecAcmePtrOutput {
	return i.ToClusterIssuerSpecAcmePtrOutputWithContext(context.Background())
}

func (i *clusterIssuerSpecAcmePtrType) ToClusterIssuerSpecAcmePtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmePtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmePtrOutput)
}

func (i *clusterIssuerSpecAcmePtrType) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecAcme] {
	return pulumix.Output[*ClusterIssuerSpecAcme]{
		OutputState: i.ToClusterIssuerSpecAcmePtrOutputWithContext(ctx).OutputState,
	}
}

// ACME configures this issuer to communicate with a RFC8555 (ACME) server to obtain signed x509 certificates.
type ClusterIssuerSpecAcmeOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcme)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeOutput) ToClusterIssuerSpecAcmeOutput() ClusterIssuerSpecAcmeOutput {
	return o
}

func (o ClusterIssuerSpecAcmeOutput) ToClusterIssuerSpecAcmeOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeOutput {
	return o
}

func (o ClusterIssuerSpecAcmeOutput) ToClusterIssuerSpecAcmePtrOutput() ClusterIssuerSpecAcmePtrOutput {
	return o.ToClusterIssuerSpecAcmePtrOutputWithContext(context.Background())
}

func (o ClusterIssuerSpecAcmeOutput) ToClusterIssuerSpecAcmePtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmePtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v ClusterIssuerSpecAcme) *ClusterIssuerSpecAcme {
		return &v
	}).(ClusterIssuerSpecAcmePtrOutput)
}

func (o ClusterIssuerSpecAcmeOutput) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcme] {
	return pulumix.Output[ClusterIssuerSpecAcme]{
		OutputState: o.OutputState,
	}
}

// Enables or disables generating a new ACME account key. If true, the Issuer resource will *not* request a new account but will expect the account key to be supplied via an existing secret. If false, the cert-manager system will generate a new ACME account key for the Issuer. Defaults to false.
func (o ClusterIssuerSpecAcmeOutput) DisableAccountKeyGeneration() pulumi.BoolPtrOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcme) *bool { return v.DisableAccountKeyGeneration }).(pulumi.BoolPtrOutput)
}

// Email is the email address to be associated with the ACME account. This field is optional, but it is strongly recommended to be set. It will be used to contact you in case of issues with your account or certificates, including expiry notification emails. This field may be updated after the account is initially registered.
func (o ClusterIssuerSpecAcmeOutput) Email() pulumi.StringPtrOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcme) *string { return v.Email }).(pulumi.StringPtrOutput)
}

// Enables requesting a Not After date on certificates that matches the duration of the certificate. This is not supported by all ACME servers like Let's Encrypt. If set to true when the ACME server does not support it it will create an error on the Order. Defaults to false.
func (o ClusterIssuerSpecAcmeOutput) EnableDurationFeature() pulumi.BoolPtrOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcme) *bool { return v.EnableDurationFeature }).(pulumi.BoolPtrOutput)
}

// ExternalAccountBinding is a reference to a CA external account of the ACME server. If set, upon registration cert-manager will attempt to associate the given external account credentials with the registered ACME account.
func (o ClusterIssuerSpecAcmeOutput) ExternalAccountBinding() ClusterIssuerSpecAcmeExternalAccountBindingPtrOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcme) *ClusterIssuerSpecAcmeExternalAccountBinding {
		return v.ExternalAccountBinding
	}).(ClusterIssuerSpecAcmeExternalAccountBindingPtrOutput)
}

// PreferredChain is the chain to use if the ACME server outputs multiple. PreferredChain is no guarantee that this one gets delivered by the ACME endpoint. For example, for Let's Encrypt's DST crosssign you would use: "DST Root CA X3" or "ISRG Root X1" for the newer Let's Encrypt root CA. This value picks the first certificate bundle in the ACME alternative chains that has a certificate with this value as its issuer's CN
func (o ClusterIssuerSpecAcmeOutput) PreferredChain() pulumi.StringPtrOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcme) *string { return v.PreferredChain }).(pulumi.StringPtrOutput)
}

// PrivateKey is the name of a Kubernetes Secret resource that will be used to store the automatically generated ACME account private key. Optionally, a `key` may be specified to select a specific entry within the named Secret resource. If `key` is not specified, a default of `tls.key` will be used.
func (o ClusterIssuerSpecAcmeOutput) PrivateKeySecretRef() ClusterIssuerSpecAcmePrivateKeySecretRefOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcme) ClusterIssuerSpecAcmePrivateKeySecretRef { return v.PrivateKeySecretRef }).(ClusterIssuerSpecAcmePrivateKeySecretRefOutput)
}

// Server is the URL used to access the ACME server's 'directory' endpoint. For example, for Let's Encrypt's staging endpoint, you would use: "https://acme-staging-v02.api.letsencrypt.org/directory". Only ACME v2 endpoints (i.e. RFC 8555) are supported.
func (o ClusterIssuerSpecAcmeOutput) Server() pulumi.StringOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcme) string { return v.Server }).(pulumi.StringOutput)
}

// Enables or disables validation of the ACME server TLS certificate. If true, requests to the ACME server will not have their TLS certificate validated (i.e. insecure connections will be allowed). Only enable this option in development environments. The cert-manager system installed roots will be used to verify connections to the ACME server if this is false. Defaults to false.
func (o ClusterIssuerSpecAcmeOutput) SkipTLSVerify() pulumi.BoolPtrOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcme) *bool { return v.SkipTLSVerify }).(pulumi.BoolPtrOutput)
}

// Solvers is a list of challenge solvers that will be used to solve ACME challenges for the matching domains. Solver configurations must be provided in order to obtain certificates from an ACME server. For more information, see: https://cert-manager.io/docs/configuration/acme/
func (o ClusterIssuerSpecAcmeOutput) Solvers() ClusterIssuerSpecAcmeSolversArrayOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcme) []ClusterIssuerSpecAcmeSolvers { return v.Solvers }).(ClusterIssuerSpecAcmeSolversArrayOutput)
}

type ClusterIssuerSpecAcmePtrOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmePtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecAcme)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmePtrOutput) ToClusterIssuerSpecAcmePtrOutput() ClusterIssuerSpecAcmePtrOutput {
	return o
}

func (o ClusterIssuerSpecAcmePtrOutput) ToClusterIssuerSpecAcmePtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmePtrOutput {
	return o
}

func (o ClusterIssuerSpecAcmePtrOutput) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecAcme] {
	return pulumix.Output[*ClusterIssuerSpecAcme]{
		OutputState: o.OutputState,
	}
}

func (o ClusterIssuerSpecAcmePtrOutput) Elem() ClusterIssuerSpecAcmeOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcme) ClusterIssuerSpecAcme {
		if v != nil {
			return *v
		}
		var ret ClusterIssuerSpecAcme
		return ret
	}).(ClusterIssuerSpecAcmeOutput)
}

// Enables or disables generating a new ACME account key. If true, the Issuer resource will *not* request a new account but will expect the account key to be supplied via an existing secret. If false, the cert-manager system will generate a new ACME account key for the Issuer. Defaults to false.
func (o ClusterIssuerSpecAcmePtrOutput) DisableAccountKeyGeneration() pulumi.BoolPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcme) *bool {
		if v == nil {
			return nil
		}
		return v.DisableAccountKeyGeneration
	}).(pulumi.BoolPtrOutput)
}

// Email is the email address to be associated with the ACME account. This field is optional, but it is strongly recommended to be set. It will be used to contact you in case of issues with your account or certificates, including expiry notification emails. This field may be updated after the account is initially registered.
func (o ClusterIssuerSpecAcmePtrOutput) Email() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcme) *string {
		if v == nil {
			return nil
		}
		return v.Email
	}).(pulumi.StringPtrOutput)
}

// Enables requesting a Not After date on certificates that matches the duration of the certificate. This is not supported by all ACME servers like Let's Encrypt. If set to true when the ACME server does not support it it will create an error on the Order. Defaults to false.
func (o ClusterIssuerSpecAcmePtrOutput) EnableDurationFeature() pulumi.BoolPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcme) *bool {
		if v == nil {
			return nil
		}
		return v.EnableDurationFeature
	}).(pulumi.BoolPtrOutput)
}

// ExternalAccountBinding is a reference to a CA external account of the ACME server. If set, upon registration cert-manager will attempt to associate the given external account credentials with the registered ACME account.
func (o ClusterIssuerSpecAcmePtrOutput) ExternalAccountBinding() ClusterIssuerSpecAcmeExternalAccountBindingPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcme) *ClusterIssuerSpecAcmeExternalAccountBinding {
		if v == nil {
			return nil
		}
		return v.ExternalAccountBinding
	}).(ClusterIssuerSpecAcmeExternalAccountBindingPtrOutput)
}

// PreferredChain is the chain to use if the ACME server outputs multiple. PreferredChain is no guarantee that this one gets delivered by the ACME endpoint. For example, for Let's Encrypt's DST crosssign you would use: "DST Root CA X3" or "ISRG Root X1" for the newer Let's Encrypt root CA. This value picks the first certificate bundle in the ACME alternative chains that has a certificate with this value as its issuer's CN
func (o ClusterIssuerSpecAcmePtrOutput) PreferredChain() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcme) *string {
		if v == nil {
			return nil
		}
		return v.PreferredChain
	}).(pulumi.StringPtrOutput)
}

// PrivateKey is the name of a Kubernetes Secret resource that will be used to store the automatically generated ACME account private key. Optionally, a `key` may be specified to select a specific entry within the named Secret resource. If `key` is not specified, a default of `tls.key` will be used.
func (o ClusterIssuerSpecAcmePtrOutput) PrivateKeySecretRef() ClusterIssuerSpecAcmePrivateKeySecretRefPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcme) *ClusterIssuerSpecAcmePrivateKeySecretRef {
		if v == nil {
			return nil
		}
		return &v.PrivateKeySecretRef
	}).(ClusterIssuerSpecAcmePrivateKeySecretRefPtrOutput)
}

// Server is the URL used to access the ACME server's 'directory' endpoint. For example, for Let's Encrypt's staging endpoint, you would use: "https://acme-staging-v02.api.letsencrypt.org/directory". Only ACME v2 endpoints (i.e. RFC 8555) are supported.
func (o ClusterIssuerSpecAcmePtrOutput) Server() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcme) *string {
		if v == nil {
			return nil
		}
		return &v.Server
	}).(pulumi.StringPtrOutput)
}

// Enables or disables validation of the ACME server TLS certificate. If true, requests to the ACME server will not have their TLS certificate validated (i.e. insecure connections will be allowed). Only enable this option in development environments. The cert-manager system installed roots will be used to verify connections to the ACME server if this is false. Defaults to false.
func (o ClusterIssuerSpecAcmePtrOutput) SkipTLSVerify() pulumi.BoolPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcme) *bool {
		if v == nil {
			return nil
		}
		return v.SkipTLSVerify
	}).(pulumi.BoolPtrOutput)
}

// Solvers is a list of challenge solvers that will be used to solve ACME challenges for the matching domains. Solver configurations must be provided in order to obtain certificates from an ACME server. For more information, see: https://cert-manager.io/docs/configuration/acme/
func (o ClusterIssuerSpecAcmePtrOutput) Solvers() ClusterIssuerSpecAcmeSolversArrayOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcme) []ClusterIssuerSpecAcmeSolvers {
		if v == nil {
			return nil
		}
		return v.Solvers
	}).(ClusterIssuerSpecAcmeSolversArrayOutput)
}

// ExternalAccountBinding is a reference to a CA external account of the ACME server. If set, upon registration cert-manager will attempt to associate the given external account credentials with the registered ACME account.
type ClusterIssuerSpecAcmeExternalAccountBinding struct {
	// Deprecated: keyAlgorithm field exists for historical compatibility reasons and should not be used. The algorithm is now hardcoded to HS256 in golang/x/crypto/acme.
	KeyAlgorithm *string `pulumi:"keyAlgorithm"`
	// keyID is the ID of the CA key that the External Account is bound to.
	KeyID string `pulumi:"keyID"`
	// keySecretRef is a Secret Key Selector referencing a data item in a Kubernetes Secret which holds the symmetric MAC key of the External Account Binding. The `key` is the index string that is paired with the key data in the Secret and should not be confused with the key data itself, or indeed with the External Account Binding keyID above. The secret key stored in the Secret **must** be un-padded, base64 URL encoded data.
	KeySecretRef ClusterIssuerSpecAcmeExternalAccountBindingKeySecretRef `pulumi:"keySecretRef"`
}

// ClusterIssuerSpecAcmeExternalAccountBindingInput is an input type that accepts ClusterIssuerSpecAcmeExternalAccountBindingArgs and ClusterIssuerSpecAcmeExternalAccountBindingOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeExternalAccountBindingInput` via:
//
//	ClusterIssuerSpecAcmeExternalAccountBindingArgs{...}
type ClusterIssuerSpecAcmeExternalAccountBindingInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeExternalAccountBindingOutput() ClusterIssuerSpecAcmeExternalAccountBindingOutput
	ToClusterIssuerSpecAcmeExternalAccountBindingOutputWithContext(context.Context) ClusterIssuerSpecAcmeExternalAccountBindingOutput
}

// ExternalAccountBinding is a reference to a CA external account of the ACME server. If set, upon registration cert-manager will attempt to associate the given external account credentials with the registered ACME account.
type ClusterIssuerSpecAcmeExternalAccountBindingArgs struct {
	// Deprecated: keyAlgorithm field exists for historical compatibility reasons and should not be used. The algorithm is now hardcoded to HS256 in golang/x/crypto/acme.
	KeyAlgorithm pulumi.StringPtrInput `pulumi:"keyAlgorithm"`
	// keyID is the ID of the CA key that the External Account is bound to.
	KeyID pulumi.StringInput `pulumi:"keyID"`
	// keySecretRef is a Secret Key Selector referencing a data item in a Kubernetes Secret which holds the symmetric MAC key of the External Account Binding. The `key` is the index string that is paired with the key data in the Secret and should not be confused with the key data itself, or indeed with the External Account Binding keyID above. The secret key stored in the Secret **must** be un-padded, base64 URL encoded data.
	KeySecretRef ClusterIssuerSpecAcmeExternalAccountBindingKeySecretRefInput `pulumi:"keySecretRef"`
}

func (ClusterIssuerSpecAcmeExternalAccountBindingArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeExternalAccountBinding)(nil)).Elem()
}

func (i ClusterIssuerSpecAcmeExternalAccountBindingArgs) ToClusterIssuerSpecAcmeExternalAccountBindingOutput() ClusterIssuerSpecAcmeExternalAccountBindingOutput {
	return i.ToClusterIssuerSpecAcmeExternalAccountBindingOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeExternalAccountBindingArgs) ToClusterIssuerSpecAcmeExternalAccountBindingOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeExternalAccountBindingOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeExternalAccountBindingOutput)
}

func (i ClusterIssuerSpecAcmeExternalAccountBindingArgs) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeExternalAccountBinding] {
	return pulumix.Output[ClusterIssuerSpecAcmeExternalAccountBinding]{
		OutputState: i.ToClusterIssuerSpecAcmeExternalAccountBindingOutputWithContext(ctx).OutputState,
	}
}

func (i ClusterIssuerSpecAcmeExternalAccountBindingArgs) ToClusterIssuerSpecAcmeExternalAccountBindingPtrOutput() ClusterIssuerSpecAcmeExternalAccountBindingPtrOutput {
	return i.ToClusterIssuerSpecAcmeExternalAccountBindingPtrOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeExternalAccountBindingArgs) ToClusterIssuerSpecAcmeExternalAccountBindingPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeExternalAccountBindingPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeExternalAccountBindingOutput).ToClusterIssuerSpecAcmeExternalAccountBindingPtrOutputWithContext(ctx)
}

// ClusterIssuerSpecAcmeExternalAccountBindingPtrInput is an input type that accepts ClusterIssuerSpecAcmeExternalAccountBindingArgs, ClusterIssuerSpecAcmeExternalAccountBindingPtr and ClusterIssuerSpecAcmeExternalAccountBindingPtrOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeExternalAccountBindingPtrInput` via:
//
//	        ClusterIssuerSpecAcmeExternalAccountBindingArgs{...}
//
//	or:
//
//	        nil
type ClusterIssuerSpecAcmeExternalAccountBindingPtrInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeExternalAccountBindingPtrOutput() ClusterIssuerSpecAcmeExternalAccountBindingPtrOutput
	ToClusterIssuerSpecAcmeExternalAccountBindingPtrOutputWithContext(context.Context) ClusterIssuerSpecAcmeExternalAccountBindingPtrOutput
}

type clusterIssuerSpecAcmeExternalAccountBindingPtrType ClusterIssuerSpecAcmeExternalAccountBindingArgs

func ClusterIssuerSpecAcmeExternalAccountBindingPtr(v *ClusterIssuerSpecAcmeExternalAccountBindingArgs) ClusterIssuerSpecAcmeExternalAccountBindingPtrInput {
	return (*clusterIssuerSpecAcmeExternalAccountBindingPtrType)(v)
}

func (*clusterIssuerSpecAcmeExternalAccountBindingPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecAcmeExternalAccountBinding)(nil)).Elem()
}

func (i *clusterIssuerSpecAcmeExternalAccountBindingPtrType) ToClusterIssuerSpecAcmeExternalAccountBindingPtrOutput() ClusterIssuerSpecAcmeExternalAccountBindingPtrOutput {
	return i.ToClusterIssuerSpecAcmeExternalAccountBindingPtrOutputWithContext(context.Background())
}

func (i *clusterIssuerSpecAcmeExternalAccountBindingPtrType) ToClusterIssuerSpecAcmeExternalAccountBindingPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeExternalAccountBindingPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeExternalAccountBindingPtrOutput)
}

func (i *clusterIssuerSpecAcmeExternalAccountBindingPtrType) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecAcmeExternalAccountBinding] {
	return pulumix.Output[*ClusterIssuerSpecAcmeExternalAccountBinding]{
		OutputState: i.ToClusterIssuerSpecAcmeExternalAccountBindingPtrOutputWithContext(ctx).OutputState,
	}
}

// ExternalAccountBinding is a reference to a CA external account of the ACME server. If set, upon registration cert-manager will attempt to associate the given external account credentials with the registered ACME account.
type ClusterIssuerSpecAcmeExternalAccountBindingOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeExternalAccountBindingOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeExternalAccountBinding)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeExternalAccountBindingOutput) ToClusterIssuerSpecAcmeExternalAccountBindingOutput() ClusterIssuerSpecAcmeExternalAccountBindingOutput {
	return o
}

func (o ClusterIssuerSpecAcmeExternalAccountBindingOutput) ToClusterIssuerSpecAcmeExternalAccountBindingOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeExternalAccountBindingOutput {
	return o
}

func (o ClusterIssuerSpecAcmeExternalAccountBindingOutput) ToClusterIssuerSpecAcmeExternalAccountBindingPtrOutput() ClusterIssuerSpecAcmeExternalAccountBindingPtrOutput {
	return o.ToClusterIssuerSpecAcmeExternalAccountBindingPtrOutputWithContext(context.Background())
}

func (o ClusterIssuerSpecAcmeExternalAccountBindingOutput) ToClusterIssuerSpecAcmeExternalAccountBindingPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeExternalAccountBindingPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v ClusterIssuerSpecAcmeExternalAccountBinding) *ClusterIssuerSpecAcmeExternalAccountBinding {
		return &v
	}).(ClusterIssuerSpecAcmeExternalAccountBindingPtrOutput)
}

func (o ClusterIssuerSpecAcmeExternalAccountBindingOutput) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeExternalAccountBinding] {
	return pulumix.Output[ClusterIssuerSpecAcmeExternalAccountBinding]{
		OutputState: o.OutputState,
	}
}

// Deprecated: keyAlgorithm field exists for historical compatibility reasons and should not be used. The algorithm is now hardcoded to HS256 in golang/x/crypto/acme.
func (o ClusterIssuerSpecAcmeExternalAccountBindingOutput) KeyAlgorithm() pulumi.StringPtrOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeExternalAccountBinding) *string { return v.KeyAlgorithm }).(pulumi.StringPtrOutput)
}

// keyID is the ID of the CA key that the External Account is bound to.
func (o ClusterIssuerSpecAcmeExternalAccountBindingOutput) KeyID() pulumi.StringOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeExternalAccountBinding) string { return v.KeyID }).(pulumi.StringOutput)
}

// keySecretRef is a Secret Key Selector referencing a data item in a Kubernetes Secret which holds the symmetric MAC key of the External Account Binding. The `key` is the index string that is paired with the key data in the Secret and should not be confused with the key data itself, or indeed with the External Account Binding keyID above. The secret key stored in the Secret **must** be un-padded, base64 URL encoded data.
func (o ClusterIssuerSpecAcmeExternalAccountBindingOutput) KeySecretRef() ClusterIssuerSpecAcmeExternalAccountBindingKeySecretRefOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeExternalAccountBinding) ClusterIssuerSpecAcmeExternalAccountBindingKeySecretRef {
		return v.KeySecretRef
	}).(ClusterIssuerSpecAcmeExternalAccountBindingKeySecretRefOutput)
}

type ClusterIssuerSpecAcmeExternalAccountBindingPtrOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeExternalAccountBindingPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecAcmeExternalAccountBinding)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeExternalAccountBindingPtrOutput) ToClusterIssuerSpecAcmeExternalAccountBindingPtrOutput() ClusterIssuerSpecAcmeExternalAccountBindingPtrOutput {
	return o
}

func (o ClusterIssuerSpecAcmeExternalAccountBindingPtrOutput) ToClusterIssuerSpecAcmeExternalAccountBindingPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeExternalAccountBindingPtrOutput {
	return o
}

func (o ClusterIssuerSpecAcmeExternalAccountBindingPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecAcmeExternalAccountBinding] {
	return pulumix.Output[*ClusterIssuerSpecAcmeExternalAccountBinding]{
		OutputState: o.OutputState,
	}
}

func (o ClusterIssuerSpecAcmeExternalAccountBindingPtrOutput) Elem() ClusterIssuerSpecAcmeExternalAccountBindingOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeExternalAccountBinding) ClusterIssuerSpecAcmeExternalAccountBinding {
		if v != nil {
			return *v
		}
		var ret ClusterIssuerSpecAcmeExternalAccountBinding
		return ret
	}).(ClusterIssuerSpecAcmeExternalAccountBindingOutput)
}

// Deprecated: keyAlgorithm field exists for historical compatibility reasons and should not be used. The algorithm is now hardcoded to HS256 in golang/x/crypto/acme.
func (o ClusterIssuerSpecAcmeExternalAccountBindingPtrOutput) KeyAlgorithm() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeExternalAccountBinding) *string {
		if v == nil {
			return nil
		}
		return v.KeyAlgorithm
	}).(pulumi.StringPtrOutput)
}

// keyID is the ID of the CA key that the External Account is bound to.
func (o ClusterIssuerSpecAcmeExternalAccountBindingPtrOutput) KeyID() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeExternalAccountBinding) *string {
		if v == nil {
			return nil
		}
		return &v.KeyID
	}).(pulumi.StringPtrOutput)
}

// keySecretRef is a Secret Key Selector referencing a data item in a Kubernetes Secret which holds the symmetric MAC key of the External Account Binding. The `key` is the index string that is paired with the key data in the Secret and should not be confused with the key data itself, or indeed with the External Account Binding keyID above. The secret key stored in the Secret **must** be un-padded, base64 URL encoded data.
func (o ClusterIssuerSpecAcmeExternalAccountBindingPtrOutput) KeySecretRef() ClusterIssuerSpecAcmeExternalAccountBindingKeySecretRefPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeExternalAccountBinding) *ClusterIssuerSpecAcmeExternalAccountBindingKeySecretRef {
		if v == nil {
			return nil
		}
		return &v.KeySecretRef
	}).(ClusterIssuerSpecAcmeExternalAccountBindingKeySecretRefPtrOutput)
}

// keySecretRef is a Secret Key Selector referencing a data item in a Kubernetes Secret which holds the symmetric MAC key of the External Account Binding. The `key` is the index string that is paired with the key data in the Secret and should not be confused with the key data itself, or indeed with the External Account Binding keyID above. The secret key stored in the Secret **must** be un-padded, base64 URL encoded data.
type ClusterIssuerSpecAcmeExternalAccountBindingKeySecretRef struct {
	// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
	Key *string `pulumi:"key"`
	// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
	Name string `pulumi:"name"`
}

// ClusterIssuerSpecAcmeExternalAccountBindingKeySecretRefInput is an input type that accepts ClusterIssuerSpecAcmeExternalAccountBindingKeySecretRefArgs and ClusterIssuerSpecAcmeExternalAccountBindingKeySecretRefOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeExternalAccountBindingKeySecretRefInput` via:
//
//	ClusterIssuerSpecAcmeExternalAccountBindingKeySecretRefArgs{...}
type ClusterIssuerSpecAcmeExternalAccountBindingKeySecretRefInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeExternalAccountBindingKeySecretRefOutput() ClusterIssuerSpecAcmeExternalAccountBindingKeySecretRefOutput
	ToClusterIssuerSpecAcmeExternalAccountBindingKeySecretRefOutputWithContext(context.Context) ClusterIssuerSpecAcmeExternalAccountBindingKeySecretRefOutput
}

// keySecretRef is a Secret Key Selector referencing a data item in a Kubernetes Secret which holds the symmetric MAC key of the External Account Binding. The `key` is the index string that is paired with the key data in the Secret and should not be confused with the key data itself, or indeed with the External Account Binding keyID above. The secret key stored in the Secret **must** be un-padded, base64 URL encoded data.
type ClusterIssuerSpecAcmeExternalAccountBindingKeySecretRefArgs struct {
	// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
	Key pulumi.StringPtrInput `pulumi:"key"`
	// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
	Name pulumi.StringInput `pulumi:"name"`
}

func (ClusterIssuerSpecAcmeExternalAccountBindingKeySecretRefArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeExternalAccountBindingKeySecretRef)(nil)).Elem()
}

func (i ClusterIssuerSpecAcmeExternalAccountBindingKeySecretRefArgs) ToClusterIssuerSpecAcmeExternalAccountBindingKeySecretRefOutput() ClusterIssuerSpecAcmeExternalAccountBindingKeySecretRefOutput {
	return i.ToClusterIssuerSpecAcmeExternalAccountBindingKeySecretRefOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeExternalAccountBindingKeySecretRefArgs) ToClusterIssuerSpecAcmeExternalAccountBindingKeySecretRefOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeExternalAccountBindingKeySecretRefOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeExternalAccountBindingKeySecretRefOutput)
}

func (i ClusterIssuerSpecAcmeExternalAccountBindingKeySecretRefArgs) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeExternalAccountBindingKeySecretRef] {
	return pulumix.Output[ClusterIssuerSpecAcmeExternalAccountBindingKeySecretRef]{
		OutputState: i.ToClusterIssuerSpecAcmeExternalAccountBindingKeySecretRefOutputWithContext(ctx).OutputState,
	}
}

func (i ClusterIssuerSpecAcmeExternalAccountBindingKeySecretRefArgs) ToClusterIssuerSpecAcmeExternalAccountBindingKeySecretRefPtrOutput() ClusterIssuerSpecAcmeExternalAccountBindingKeySecretRefPtrOutput {
	return i.ToClusterIssuerSpecAcmeExternalAccountBindingKeySecretRefPtrOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeExternalAccountBindingKeySecretRefArgs) ToClusterIssuerSpecAcmeExternalAccountBindingKeySecretRefPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeExternalAccountBindingKeySecretRefPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeExternalAccountBindingKeySecretRefOutput).ToClusterIssuerSpecAcmeExternalAccountBindingKeySecretRefPtrOutputWithContext(ctx)
}

// ClusterIssuerSpecAcmeExternalAccountBindingKeySecretRefPtrInput is an input type that accepts ClusterIssuerSpecAcmeExternalAccountBindingKeySecretRefArgs, ClusterIssuerSpecAcmeExternalAccountBindingKeySecretRefPtr and ClusterIssuerSpecAcmeExternalAccountBindingKeySecretRefPtrOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeExternalAccountBindingKeySecretRefPtrInput` via:
//
//	        ClusterIssuerSpecAcmeExternalAccountBindingKeySecretRefArgs{...}
//
//	or:
//
//	        nil
type ClusterIssuerSpecAcmeExternalAccountBindingKeySecretRefPtrInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeExternalAccountBindingKeySecretRefPtrOutput() ClusterIssuerSpecAcmeExternalAccountBindingKeySecretRefPtrOutput
	ToClusterIssuerSpecAcmeExternalAccountBindingKeySecretRefPtrOutputWithContext(context.Context) ClusterIssuerSpecAcmeExternalAccountBindingKeySecretRefPtrOutput
}

type clusterIssuerSpecAcmeExternalAccountBindingKeySecretRefPtrType ClusterIssuerSpecAcmeExternalAccountBindingKeySecretRefArgs

func ClusterIssuerSpecAcmeExternalAccountBindingKeySecretRefPtr(v *ClusterIssuerSpecAcmeExternalAccountBindingKeySecretRefArgs) ClusterIssuerSpecAcmeExternalAccountBindingKeySecretRefPtrInput {
	return (*clusterIssuerSpecAcmeExternalAccountBindingKeySecretRefPtrType)(v)
}

func (*clusterIssuerSpecAcmeExternalAccountBindingKeySecretRefPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecAcmeExternalAccountBindingKeySecretRef)(nil)).Elem()
}

func (i *clusterIssuerSpecAcmeExternalAccountBindingKeySecretRefPtrType) ToClusterIssuerSpecAcmeExternalAccountBindingKeySecretRefPtrOutput() ClusterIssuerSpecAcmeExternalAccountBindingKeySecretRefPtrOutput {
	return i.ToClusterIssuerSpecAcmeExternalAccountBindingKeySecretRefPtrOutputWithContext(context.Background())
}

func (i *clusterIssuerSpecAcmeExternalAccountBindingKeySecretRefPtrType) ToClusterIssuerSpecAcmeExternalAccountBindingKeySecretRefPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeExternalAccountBindingKeySecretRefPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeExternalAccountBindingKeySecretRefPtrOutput)
}

func (i *clusterIssuerSpecAcmeExternalAccountBindingKeySecretRefPtrType) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecAcmeExternalAccountBindingKeySecretRef] {
	return pulumix.Output[*ClusterIssuerSpecAcmeExternalAccountBindingKeySecretRef]{
		OutputState: i.ToClusterIssuerSpecAcmeExternalAccountBindingKeySecretRefPtrOutputWithContext(ctx).OutputState,
	}
}

// keySecretRef is a Secret Key Selector referencing a data item in a Kubernetes Secret which holds the symmetric MAC key of the External Account Binding. The `key` is the index string that is paired with the key data in the Secret and should not be confused with the key data itself, or indeed with the External Account Binding keyID above. The secret key stored in the Secret **must** be un-padded, base64 URL encoded data.
type ClusterIssuerSpecAcmeExternalAccountBindingKeySecretRefOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeExternalAccountBindingKeySecretRefOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeExternalAccountBindingKeySecretRef)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeExternalAccountBindingKeySecretRefOutput) ToClusterIssuerSpecAcmeExternalAccountBindingKeySecretRefOutput() ClusterIssuerSpecAcmeExternalAccountBindingKeySecretRefOutput {
	return o
}

func (o ClusterIssuerSpecAcmeExternalAccountBindingKeySecretRefOutput) ToClusterIssuerSpecAcmeExternalAccountBindingKeySecretRefOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeExternalAccountBindingKeySecretRefOutput {
	return o
}

func (o ClusterIssuerSpecAcmeExternalAccountBindingKeySecretRefOutput) ToClusterIssuerSpecAcmeExternalAccountBindingKeySecretRefPtrOutput() ClusterIssuerSpecAcmeExternalAccountBindingKeySecretRefPtrOutput {
	return o.ToClusterIssuerSpecAcmeExternalAccountBindingKeySecretRefPtrOutputWithContext(context.Background())
}

func (o ClusterIssuerSpecAcmeExternalAccountBindingKeySecretRefOutput) ToClusterIssuerSpecAcmeExternalAccountBindingKeySecretRefPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeExternalAccountBindingKeySecretRefPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v ClusterIssuerSpecAcmeExternalAccountBindingKeySecretRef) *ClusterIssuerSpecAcmeExternalAccountBindingKeySecretRef {
		return &v
	}).(ClusterIssuerSpecAcmeExternalAccountBindingKeySecretRefPtrOutput)
}

func (o ClusterIssuerSpecAcmeExternalAccountBindingKeySecretRefOutput) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeExternalAccountBindingKeySecretRef] {
	return pulumix.Output[ClusterIssuerSpecAcmeExternalAccountBindingKeySecretRef]{
		OutputState: o.OutputState,
	}
}

// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
func (o ClusterIssuerSpecAcmeExternalAccountBindingKeySecretRefOutput) Key() pulumi.StringPtrOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeExternalAccountBindingKeySecretRef) *string { return v.Key }).(pulumi.StringPtrOutput)
}

// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
func (o ClusterIssuerSpecAcmeExternalAccountBindingKeySecretRefOutput) Name() pulumi.StringOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeExternalAccountBindingKeySecretRef) string { return v.Name }).(pulumi.StringOutput)
}

type ClusterIssuerSpecAcmeExternalAccountBindingKeySecretRefPtrOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeExternalAccountBindingKeySecretRefPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecAcmeExternalAccountBindingKeySecretRef)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeExternalAccountBindingKeySecretRefPtrOutput) ToClusterIssuerSpecAcmeExternalAccountBindingKeySecretRefPtrOutput() ClusterIssuerSpecAcmeExternalAccountBindingKeySecretRefPtrOutput {
	return o
}

func (o ClusterIssuerSpecAcmeExternalAccountBindingKeySecretRefPtrOutput) ToClusterIssuerSpecAcmeExternalAccountBindingKeySecretRefPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeExternalAccountBindingKeySecretRefPtrOutput {
	return o
}

func (o ClusterIssuerSpecAcmeExternalAccountBindingKeySecretRefPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecAcmeExternalAccountBindingKeySecretRef] {
	return pulumix.Output[*ClusterIssuerSpecAcmeExternalAccountBindingKeySecretRef]{
		OutputState: o.OutputState,
	}
}

func (o ClusterIssuerSpecAcmeExternalAccountBindingKeySecretRefPtrOutput) Elem() ClusterIssuerSpecAcmeExternalAccountBindingKeySecretRefOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeExternalAccountBindingKeySecretRef) ClusterIssuerSpecAcmeExternalAccountBindingKeySecretRef {
		if v != nil {
			return *v
		}
		var ret ClusterIssuerSpecAcmeExternalAccountBindingKeySecretRef
		return ret
	}).(ClusterIssuerSpecAcmeExternalAccountBindingKeySecretRefOutput)
}

// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
func (o ClusterIssuerSpecAcmeExternalAccountBindingKeySecretRefPtrOutput) Key() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeExternalAccountBindingKeySecretRef) *string {
		if v == nil {
			return nil
		}
		return v.Key
	}).(pulumi.StringPtrOutput)
}

// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
func (o ClusterIssuerSpecAcmeExternalAccountBindingKeySecretRefPtrOutput) Name() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeExternalAccountBindingKeySecretRef) *string {
		if v == nil {
			return nil
		}
		return &v.Name
	}).(pulumi.StringPtrOutput)
}

// PrivateKey is the name of a Kubernetes Secret resource that will be used to store the automatically generated ACME account private key. Optionally, a `key` may be specified to select a specific entry within the named Secret resource. If `key` is not specified, a default of `tls.key` will be used.
type ClusterIssuerSpecAcmePrivateKeySecretRef struct {
	// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
	Key *string `pulumi:"key"`
	// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
	Name string `pulumi:"name"`
}

// ClusterIssuerSpecAcmePrivateKeySecretRefInput is an input type that accepts ClusterIssuerSpecAcmePrivateKeySecretRefArgs and ClusterIssuerSpecAcmePrivateKeySecretRefOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmePrivateKeySecretRefInput` via:
//
//	ClusterIssuerSpecAcmePrivateKeySecretRefArgs{...}
type ClusterIssuerSpecAcmePrivateKeySecretRefInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmePrivateKeySecretRefOutput() ClusterIssuerSpecAcmePrivateKeySecretRefOutput
	ToClusterIssuerSpecAcmePrivateKeySecretRefOutputWithContext(context.Context) ClusterIssuerSpecAcmePrivateKeySecretRefOutput
}

// PrivateKey is the name of a Kubernetes Secret resource that will be used to store the automatically generated ACME account private key. Optionally, a `key` may be specified to select a specific entry within the named Secret resource. If `key` is not specified, a default of `tls.key` will be used.
type ClusterIssuerSpecAcmePrivateKeySecretRefArgs struct {
	// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
	Key pulumi.StringPtrInput `pulumi:"key"`
	// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
	Name pulumi.StringInput `pulumi:"name"`
}

func (ClusterIssuerSpecAcmePrivateKeySecretRefArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmePrivateKeySecretRef)(nil)).Elem()
}

func (i ClusterIssuerSpecAcmePrivateKeySecretRefArgs) ToClusterIssuerSpecAcmePrivateKeySecretRefOutput() ClusterIssuerSpecAcmePrivateKeySecretRefOutput {
	return i.ToClusterIssuerSpecAcmePrivateKeySecretRefOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmePrivateKeySecretRefArgs) ToClusterIssuerSpecAcmePrivateKeySecretRefOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmePrivateKeySecretRefOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmePrivateKeySecretRefOutput)
}

func (i ClusterIssuerSpecAcmePrivateKeySecretRefArgs) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmePrivateKeySecretRef] {
	return pulumix.Output[ClusterIssuerSpecAcmePrivateKeySecretRef]{
		OutputState: i.ToClusterIssuerSpecAcmePrivateKeySecretRefOutputWithContext(ctx).OutputState,
	}
}

func (i ClusterIssuerSpecAcmePrivateKeySecretRefArgs) ToClusterIssuerSpecAcmePrivateKeySecretRefPtrOutput() ClusterIssuerSpecAcmePrivateKeySecretRefPtrOutput {
	return i.ToClusterIssuerSpecAcmePrivateKeySecretRefPtrOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmePrivateKeySecretRefArgs) ToClusterIssuerSpecAcmePrivateKeySecretRefPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmePrivateKeySecretRefPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmePrivateKeySecretRefOutput).ToClusterIssuerSpecAcmePrivateKeySecretRefPtrOutputWithContext(ctx)
}

// ClusterIssuerSpecAcmePrivateKeySecretRefPtrInput is an input type that accepts ClusterIssuerSpecAcmePrivateKeySecretRefArgs, ClusterIssuerSpecAcmePrivateKeySecretRefPtr and ClusterIssuerSpecAcmePrivateKeySecretRefPtrOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmePrivateKeySecretRefPtrInput` via:
//
//	        ClusterIssuerSpecAcmePrivateKeySecretRefArgs{...}
//
//	or:
//
//	        nil
type ClusterIssuerSpecAcmePrivateKeySecretRefPtrInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmePrivateKeySecretRefPtrOutput() ClusterIssuerSpecAcmePrivateKeySecretRefPtrOutput
	ToClusterIssuerSpecAcmePrivateKeySecretRefPtrOutputWithContext(context.Context) ClusterIssuerSpecAcmePrivateKeySecretRefPtrOutput
}

type clusterIssuerSpecAcmePrivateKeySecretRefPtrType ClusterIssuerSpecAcmePrivateKeySecretRefArgs

func ClusterIssuerSpecAcmePrivateKeySecretRefPtr(v *ClusterIssuerSpecAcmePrivateKeySecretRefArgs) ClusterIssuerSpecAcmePrivateKeySecretRefPtrInput {
	return (*clusterIssuerSpecAcmePrivateKeySecretRefPtrType)(v)
}

func (*clusterIssuerSpecAcmePrivateKeySecretRefPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecAcmePrivateKeySecretRef)(nil)).Elem()
}

func (i *clusterIssuerSpecAcmePrivateKeySecretRefPtrType) ToClusterIssuerSpecAcmePrivateKeySecretRefPtrOutput() ClusterIssuerSpecAcmePrivateKeySecretRefPtrOutput {
	return i.ToClusterIssuerSpecAcmePrivateKeySecretRefPtrOutputWithContext(context.Background())
}

func (i *clusterIssuerSpecAcmePrivateKeySecretRefPtrType) ToClusterIssuerSpecAcmePrivateKeySecretRefPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmePrivateKeySecretRefPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmePrivateKeySecretRefPtrOutput)
}

func (i *clusterIssuerSpecAcmePrivateKeySecretRefPtrType) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecAcmePrivateKeySecretRef] {
	return pulumix.Output[*ClusterIssuerSpecAcmePrivateKeySecretRef]{
		OutputState: i.ToClusterIssuerSpecAcmePrivateKeySecretRefPtrOutputWithContext(ctx).OutputState,
	}
}

// PrivateKey is the name of a Kubernetes Secret resource that will be used to store the automatically generated ACME account private key. Optionally, a `key` may be specified to select a specific entry within the named Secret resource. If `key` is not specified, a default of `tls.key` will be used.
type ClusterIssuerSpecAcmePrivateKeySecretRefOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmePrivateKeySecretRefOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmePrivateKeySecretRef)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmePrivateKeySecretRefOutput) ToClusterIssuerSpecAcmePrivateKeySecretRefOutput() ClusterIssuerSpecAcmePrivateKeySecretRefOutput {
	return o
}

func (o ClusterIssuerSpecAcmePrivateKeySecretRefOutput) ToClusterIssuerSpecAcmePrivateKeySecretRefOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmePrivateKeySecretRefOutput {
	return o
}

func (o ClusterIssuerSpecAcmePrivateKeySecretRefOutput) ToClusterIssuerSpecAcmePrivateKeySecretRefPtrOutput() ClusterIssuerSpecAcmePrivateKeySecretRefPtrOutput {
	return o.ToClusterIssuerSpecAcmePrivateKeySecretRefPtrOutputWithContext(context.Background())
}

func (o ClusterIssuerSpecAcmePrivateKeySecretRefOutput) ToClusterIssuerSpecAcmePrivateKeySecretRefPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmePrivateKeySecretRefPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v ClusterIssuerSpecAcmePrivateKeySecretRef) *ClusterIssuerSpecAcmePrivateKeySecretRef {
		return &v
	}).(ClusterIssuerSpecAcmePrivateKeySecretRefPtrOutput)
}

func (o ClusterIssuerSpecAcmePrivateKeySecretRefOutput) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmePrivateKeySecretRef] {
	return pulumix.Output[ClusterIssuerSpecAcmePrivateKeySecretRef]{
		OutputState: o.OutputState,
	}
}

// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
func (o ClusterIssuerSpecAcmePrivateKeySecretRefOutput) Key() pulumi.StringPtrOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmePrivateKeySecretRef) *string { return v.Key }).(pulumi.StringPtrOutput)
}

// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
func (o ClusterIssuerSpecAcmePrivateKeySecretRefOutput) Name() pulumi.StringOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmePrivateKeySecretRef) string { return v.Name }).(pulumi.StringOutput)
}

type ClusterIssuerSpecAcmePrivateKeySecretRefPtrOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmePrivateKeySecretRefPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecAcmePrivateKeySecretRef)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmePrivateKeySecretRefPtrOutput) ToClusterIssuerSpecAcmePrivateKeySecretRefPtrOutput() ClusterIssuerSpecAcmePrivateKeySecretRefPtrOutput {
	return o
}

func (o ClusterIssuerSpecAcmePrivateKeySecretRefPtrOutput) ToClusterIssuerSpecAcmePrivateKeySecretRefPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmePrivateKeySecretRefPtrOutput {
	return o
}

func (o ClusterIssuerSpecAcmePrivateKeySecretRefPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecAcmePrivateKeySecretRef] {
	return pulumix.Output[*ClusterIssuerSpecAcmePrivateKeySecretRef]{
		OutputState: o.OutputState,
	}
}

func (o ClusterIssuerSpecAcmePrivateKeySecretRefPtrOutput) Elem() ClusterIssuerSpecAcmePrivateKeySecretRefOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmePrivateKeySecretRef) ClusterIssuerSpecAcmePrivateKeySecretRef {
		if v != nil {
			return *v
		}
		var ret ClusterIssuerSpecAcmePrivateKeySecretRef
		return ret
	}).(ClusterIssuerSpecAcmePrivateKeySecretRefOutput)
}

// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
func (o ClusterIssuerSpecAcmePrivateKeySecretRefPtrOutput) Key() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmePrivateKeySecretRef) *string {
		if v == nil {
			return nil
		}
		return v.Key
	}).(pulumi.StringPtrOutput)
}

// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
func (o ClusterIssuerSpecAcmePrivateKeySecretRefPtrOutput) Name() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmePrivateKeySecretRef) *string {
		if v == nil {
			return nil
		}
		return &v.Name
	}).(pulumi.StringPtrOutput)
}

// Configures an issuer to solve challenges using the specified options. Only one of HTTP01 or DNS01 may be provided.
type ClusterIssuerSpecAcmeSolvers struct {
	// Configures cert-manager to attempt to complete authorizations by performing the DNS01 challenge flow.
	Dns01 *ClusterIssuerSpecAcmeSolversDns01 `pulumi:"dns01"`
	// Configures cert-manager to attempt to complete authorizations by performing the HTTP01 challenge flow. It is not possible to obtain certificates for wildcard domain names (e.g. `*.example.com`) using the HTTP01 challenge mechanism.
	Http01 *ClusterIssuerSpecAcmeSolversHttp01 `pulumi:"http01"`
	// Selector selects a set of DNSNames on the Certificate resource that should be solved using this challenge solver. If not specified, the solver will be treated as the 'default' solver with the lowest priority, i.e. if any other solver has a more specific match, it will be used instead.
	Selector *ClusterIssuerSpecAcmeSolversSelector `pulumi:"selector"`
}

// ClusterIssuerSpecAcmeSolversInput is an input type that accepts ClusterIssuerSpecAcmeSolversArgs and ClusterIssuerSpecAcmeSolversOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversInput` via:
//
//	ClusterIssuerSpecAcmeSolversArgs{...}
type ClusterIssuerSpecAcmeSolversInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversOutput() ClusterIssuerSpecAcmeSolversOutput
	ToClusterIssuerSpecAcmeSolversOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversOutput
}

// Configures an issuer to solve challenges using the specified options. Only one of HTTP01 or DNS01 may be provided.
type ClusterIssuerSpecAcmeSolversArgs struct {
	// Configures cert-manager to attempt to complete authorizations by performing the DNS01 challenge flow.
	Dns01 ClusterIssuerSpecAcmeSolversDns01PtrInput `pulumi:"dns01"`
	// Configures cert-manager to attempt to complete authorizations by performing the HTTP01 challenge flow. It is not possible to obtain certificates for wildcard domain names (e.g. `*.example.com`) using the HTTP01 challenge mechanism.
	Http01 ClusterIssuerSpecAcmeSolversHttp01PtrInput `pulumi:"http01"`
	// Selector selects a set of DNSNames on the Certificate resource that should be solved using this challenge solver. If not specified, the solver will be treated as the 'default' solver with the lowest priority, i.e. if any other solver has a more specific match, it will be used instead.
	Selector ClusterIssuerSpecAcmeSolversSelectorPtrInput `pulumi:"selector"`
}

func (ClusterIssuerSpecAcmeSolversArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolvers)(nil)).Elem()
}

func (i ClusterIssuerSpecAcmeSolversArgs) ToClusterIssuerSpecAcmeSolversOutput() ClusterIssuerSpecAcmeSolversOutput {
	return i.ToClusterIssuerSpecAcmeSolversOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversArgs) ToClusterIssuerSpecAcmeSolversOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversOutput)
}

func (i ClusterIssuerSpecAcmeSolversArgs) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolvers] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolvers]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversOutputWithContext(ctx).OutputState,
	}
}

// ClusterIssuerSpecAcmeSolversArrayInput is an input type that accepts ClusterIssuerSpecAcmeSolversArray and ClusterIssuerSpecAcmeSolversArrayOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversArrayInput` via:
//
//	ClusterIssuerSpecAcmeSolversArray{ ClusterIssuerSpecAcmeSolversArgs{...} }
type ClusterIssuerSpecAcmeSolversArrayInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversArrayOutput() ClusterIssuerSpecAcmeSolversArrayOutput
	ToClusterIssuerSpecAcmeSolversArrayOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversArrayOutput
}

type ClusterIssuerSpecAcmeSolversArray []ClusterIssuerSpecAcmeSolversInput

func (ClusterIssuerSpecAcmeSolversArray) ElementType() reflect.Type {
	return reflect.TypeOf((*[]ClusterIssuerSpecAcmeSolvers)(nil)).Elem()
}

func (i ClusterIssuerSpecAcmeSolversArray) ToClusterIssuerSpecAcmeSolversArrayOutput() ClusterIssuerSpecAcmeSolversArrayOutput {
	return i.ToClusterIssuerSpecAcmeSolversArrayOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversArray) ToClusterIssuerSpecAcmeSolversArrayOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversArrayOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversArrayOutput)
}

func (i ClusterIssuerSpecAcmeSolversArray) ToOutput(ctx context.Context) pulumix.Output[[]ClusterIssuerSpecAcmeSolvers] {
	return pulumix.Output[[]ClusterIssuerSpecAcmeSolvers]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversArrayOutputWithContext(ctx).OutputState,
	}
}

// Configures an issuer to solve challenges using the specified options. Only one of HTTP01 or DNS01 may be provided.
type ClusterIssuerSpecAcmeSolversOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolvers)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversOutput) ToClusterIssuerSpecAcmeSolversOutput() ClusterIssuerSpecAcmeSolversOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversOutput) ToClusterIssuerSpecAcmeSolversOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversOutput) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolvers] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolvers]{
		OutputState: o.OutputState,
	}
}

// Configures cert-manager to attempt to complete authorizations by performing the DNS01 challenge flow.
func (o ClusterIssuerSpecAcmeSolversOutput) Dns01() ClusterIssuerSpecAcmeSolversDns01PtrOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolvers) *ClusterIssuerSpecAcmeSolversDns01 { return v.Dns01 }).(ClusterIssuerSpecAcmeSolversDns01PtrOutput)
}

// Configures cert-manager to attempt to complete authorizations by performing the HTTP01 challenge flow. It is not possible to obtain certificates for wildcard domain names (e.g. `*.example.com`) using the HTTP01 challenge mechanism.
func (o ClusterIssuerSpecAcmeSolversOutput) Http01() ClusterIssuerSpecAcmeSolversHttp01PtrOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolvers) *ClusterIssuerSpecAcmeSolversHttp01 { return v.Http01 }).(ClusterIssuerSpecAcmeSolversHttp01PtrOutput)
}

// Selector selects a set of DNSNames on the Certificate resource that should be solved using this challenge solver. If not specified, the solver will be treated as the 'default' solver with the lowest priority, i.e. if any other solver has a more specific match, it will be used instead.
func (o ClusterIssuerSpecAcmeSolversOutput) Selector() ClusterIssuerSpecAcmeSolversSelectorPtrOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolvers) *ClusterIssuerSpecAcmeSolversSelector { return v.Selector }).(ClusterIssuerSpecAcmeSolversSelectorPtrOutput)
}

type ClusterIssuerSpecAcmeSolversArrayOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversArrayOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*[]ClusterIssuerSpecAcmeSolvers)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversArrayOutput) ToClusterIssuerSpecAcmeSolversArrayOutput() ClusterIssuerSpecAcmeSolversArrayOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversArrayOutput) ToClusterIssuerSpecAcmeSolversArrayOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversArrayOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversArrayOutput) ToOutput(ctx context.Context) pulumix.Output[[]ClusterIssuerSpecAcmeSolvers] {
	return pulumix.Output[[]ClusterIssuerSpecAcmeSolvers]{
		OutputState: o.OutputState,
	}
}

func (o ClusterIssuerSpecAcmeSolversArrayOutput) Index(i pulumi.IntInput) ClusterIssuerSpecAcmeSolversOutput {
	return pulumi.All(o, i).ApplyT(func(vs []interface{}) ClusterIssuerSpecAcmeSolvers {
		return vs[0].([]ClusterIssuerSpecAcmeSolvers)[vs[1].(int)]
	}).(ClusterIssuerSpecAcmeSolversOutput)
}

// Configures cert-manager to attempt to complete authorizations by performing the DNS01 challenge flow.
type ClusterIssuerSpecAcmeSolversDns01 struct {
	// Use the 'ACME DNS' (https://github.com/joohoi/acme-dns) API to manage DNS01 challenge records.
	AcmeDNS *ClusterIssuerSpecAcmeSolversDns01AcmeDNS `pulumi:"acmeDNS"`
	// Use the Akamai DNS zone management API to manage DNS01 challenge records.
	Akamai *ClusterIssuerSpecAcmeSolversDns01Akamai `pulumi:"akamai"`
	// Use the Microsoft Azure DNS API to manage DNS01 challenge records.
	AzureDNS *ClusterIssuerSpecAcmeSolversDns01AzureDNS `pulumi:"azureDNS"`
	// Use the Google Cloud DNS API to manage DNS01 challenge records.
	CloudDNS *ClusterIssuerSpecAcmeSolversDns01CloudDNS `pulumi:"cloudDNS"`
	// Use the Cloudflare API to manage DNS01 challenge records.
	Cloudflare *ClusterIssuerSpecAcmeSolversDns01Cloudflare `pulumi:"cloudflare"`
	// CNAMEStrategy configures how the DNS01 provider should handle CNAME records when found in DNS zones.
	CnameStrategy *string `pulumi:"cnameStrategy"`
	// Use the DigitalOcean DNS API to manage DNS01 challenge records.
	Digitalocean *ClusterIssuerSpecAcmeSolversDns01Digitalocean `pulumi:"digitalocean"`
	// Use RFC2136 ("Dynamic Updates in the Domain Name System") (https://datatracker.ietf.org/doc/rfc2136/) to manage DNS01 challenge records.
	Rfc2136 *ClusterIssuerSpecAcmeSolversDns01Rfc2136 `pulumi:"rfc2136"`
	// Use the AWS Route53 API to manage DNS01 challenge records.
	Route53 *ClusterIssuerSpecAcmeSolversDns01Route53 `pulumi:"route53"`
	// Configure an external webhook based DNS01 challenge solver to manage DNS01 challenge records.
	Webhook *ClusterIssuerSpecAcmeSolversDns01Webhook `pulumi:"webhook"`
}

// ClusterIssuerSpecAcmeSolversDns01Input is an input type that accepts ClusterIssuerSpecAcmeSolversDns01Args and ClusterIssuerSpecAcmeSolversDns01Output values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversDns01Input` via:
//
//	ClusterIssuerSpecAcmeSolversDns01Args{...}
type ClusterIssuerSpecAcmeSolversDns01Input interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversDns01Output() ClusterIssuerSpecAcmeSolversDns01Output
	ToClusterIssuerSpecAcmeSolversDns01OutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversDns01Output
}

// Configures cert-manager to attempt to complete authorizations by performing the DNS01 challenge flow.
type ClusterIssuerSpecAcmeSolversDns01Args struct {
	// Use the 'ACME DNS' (https://github.com/joohoi/acme-dns) API to manage DNS01 challenge records.
	AcmeDNS ClusterIssuerSpecAcmeSolversDns01AcmeDNSPtrInput `pulumi:"acmeDNS"`
	// Use the Akamai DNS zone management API to manage DNS01 challenge records.
	Akamai ClusterIssuerSpecAcmeSolversDns01AkamaiPtrInput `pulumi:"akamai"`
	// Use the Microsoft Azure DNS API to manage DNS01 challenge records.
	AzureDNS ClusterIssuerSpecAcmeSolversDns01AzureDNSPtrInput `pulumi:"azureDNS"`
	// Use the Google Cloud DNS API to manage DNS01 challenge records.
	CloudDNS ClusterIssuerSpecAcmeSolversDns01CloudDNSPtrInput `pulumi:"cloudDNS"`
	// Use the Cloudflare API to manage DNS01 challenge records.
	Cloudflare ClusterIssuerSpecAcmeSolversDns01CloudflarePtrInput `pulumi:"cloudflare"`
	// CNAMEStrategy configures how the DNS01 provider should handle CNAME records when found in DNS zones.
	CnameStrategy pulumi.StringPtrInput `pulumi:"cnameStrategy"`
	// Use the DigitalOcean DNS API to manage DNS01 challenge records.
	Digitalocean ClusterIssuerSpecAcmeSolversDns01DigitaloceanPtrInput `pulumi:"digitalocean"`
	// Use RFC2136 ("Dynamic Updates in the Domain Name System") (https://datatracker.ietf.org/doc/rfc2136/) to manage DNS01 challenge records.
	Rfc2136 ClusterIssuerSpecAcmeSolversDns01Rfc2136PtrInput `pulumi:"rfc2136"`
	// Use the AWS Route53 API to manage DNS01 challenge records.
	Route53 ClusterIssuerSpecAcmeSolversDns01Route53PtrInput `pulumi:"route53"`
	// Configure an external webhook based DNS01 challenge solver to manage DNS01 challenge records.
	Webhook ClusterIssuerSpecAcmeSolversDns01WebhookPtrInput `pulumi:"webhook"`
}

func (ClusterIssuerSpecAcmeSolversDns01Args) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversDns01)(nil)).Elem()
}

func (i ClusterIssuerSpecAcmeSolversDns01Args) ToClusterIssuerSpecAcmeSolversDns01Output() ClusterIssuerSpecAcmeSolversDns01Output {
	return i.ToClusterIssuerSpecAcmeSolversDns01OutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversDns01Args) ToClusterIssuerSpecAcmeSolversDns01OutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01Output {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversDns01Output)
}

func (i ClusterIssuerSpecAcmeSolversDns01Args) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversDns01] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversDns01]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversDns01OutputWithContext(ctx).OutputState,
	}
}

func (i ClusterIssuerSpecAcmeSolversDns01Args) ToClusterIssuerSpecAcmeSolversDns01PtrOutput() ClusterIssuerSpecAcmeSolversDns01PtrOutput {
	return i.ToClusterIssuerSpecAcmeSolversDns01PtrOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversDns01Args) ToClusterIssuerSpecAcmeSolversDns01PtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01PtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversDns01Output).ToClusterIssuerSpecAcmeSolversDns01PtrOutputWithContext(ctx)
}

// ClusterIssuerSpecAcmeSolversDns01PtrInput is an input type that accepts ClusterIssuerSpecAcmeSolversDns01Args, ClusterIssuerSpecAcmeSolversDns01Ptr and ClusterIssuerSpecAcmeSolversDns01PtrOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversDns01PtrInput` via:
//
//	        ClusterIssuerSpecAcmeSolversDns01Args{...}
//
//	or:
//
//	        nil
type ClusterIssuerSpecAcmeSolversDns01PtrInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversDns01PtrOutput() ClusterIssuerSpecAcmeSolversDns01PtrOutput
	ToClusterIssuerSpecAcmeSolversDns01PtrOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversDns01PtrOutput
}

type clusterIssuerSpecAcmeSolversDns01PtrType ClusterIssuerSpecAcmeSolversDns01Args

func ClusterIssuerSpecAcmeSolversDns01Ptr(v *ClusterIssuerSpecAcmeSolversDns01Args) ClusterIssuerSpecAcmeSolversDns01PtrInput {
	return (*clusterIssuerSpecAcmeSolversDns01PtrType)(v)
}

func (*clusterIssuerSpecAcmeSolversDns01PtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecAcmeSolversDns01)(nil)).Elem()
}

func (i *clusterIssuerSpecAcmeSolversDns01PtrType) ToClusterIssuerSpecAcmeSolversDns01PtrOutput() ClusterIssuerSpecAcmeSolversDns01PtrOutput {
	return i.ToClusterIssuerSpecAcmeSolversDns01PtrOutputWithContext(context.Background())
}

func (i *clusterIssuerSpecAcmeSolversDns01PtrType) ToClusterIssuerSpecAcmeSolversDns01PtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01PtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversDns01PtrOutput)
}

func (i *clusterIssuerSpecAcmeSolversDns01PtrType) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecAcmeSolversDns01] {
	return pulumix.Output[*ClusterIssuerSpecAcmeSolversDns01]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversDns01PtrOutputWithContext(ctx).OutputState,
	}
}

// Configures cert-manager to attempt to complete authorizations by performing the DNS01 challenge flow.
type ClusterIssuerSpecAcmeSolversDns01Output struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversDns01Output) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversDns01)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversDns01Output) ToClusterIssuerSpecAcmeSolversDns01Output() ClusterIssuerSpecAcmeSolversDns01Output {
	return o
}

func (o ClusterIssuerSpecAcmeSolversDns01Output) ToClusterIssuerSpecAcmeSolversDns01OutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01Output {
	return o
}

func (o ClusterIssuerSpecAcmeSolversDns01Output) ToClusterIssuerSpecAcmeSolversDns01PtrOutput() ClusterIssuerSpecAcmeSolversDns01PtrOutput {
	return o.ToClusterIssuerSpecAcmeSolversDns01PtrOutputWithContext(context.Background())
}

func (o ClusterIssuerSpecAcmeSolversDns01Output) ToClusterIssuerSpecAcmeSolversDns01PtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01PtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v ClusterIssuerSpecAcmeSolversDns01) *ClusterIssuerSpecAcmeSolversDns01 {
		return &v
	}).(ClusterIssuerSpecAcmeSolversDns01PtrOutput)
}

func (o ClusterIssuerSpecAcmeSolversDns01Output) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversDns01] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversDns01]{
		OutputState: o.OutputState,
	}
}

// Use the 'ACME DNS' (https://github.com/joohoi/acme-dns) API to manage DNS01 challenge records.
func (o ClusterIssuerSpecAcmeSolversDns01Output) AcmeDNS() ClusterIssuerSpecAcmeSolversDns01AcmeDNSPtrOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversDns01) *ClusterIssuerSpecAcmeSolversDns01AcmeDNS { return v.AcmeDNS }).(ClusterIssuerSpecAcmeSolversDns01AcmeDNSPtrOutput)
}

// Use the Akamai DNS zone management API to manage DNS01 challenge records.
func (o ClusterIssuerSpecAcmeSolversDns01Output) Akamai() ClusterIssuerSpecAcmeSolversDns01AkamaiPtrOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversDns01) *ClusterIssuerSpecAcmeSolversDns01Akamai { return v.Akamai }).(ClusterIssuerSpecAcmeSolversDns01AkamaiPtrOutput)
}

// Use the Microsoft Azure DNS API to manage DNS01 challenge records.
func (o ClusterIssuerSpecAcmeSolversDns01Output) AzureDNS() ClusterIssuerSpecAcmeSolversDns01AzureDNSPtrOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversDns01) *ClusterIssuerSpecAcmeSolversDns01AzureDNS {
		return v.AzureDNS
	}).(ClusterIssuerSpecAcmeSolversDns01AzureDNSPtrOutput)
}

// Use the Google Cloud DNS API to manage DNS01 challenge records.
func (o ClusterIssuerSpecAcmeSolversDns01Output) CloudDNS() ClusterIssuerSpecAcmeSolversDns01CloudDNSPtrOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversDns01) *ClusterIssuerSpecAcmeSolversDns01CloudDNS {
		return v.CloudDNS
	}).(ClusterIssuerSpecAcmeSolversDns01CloudDNSPtrOutput)
}

// Use the Cloudflare API to manage DNS01 challenge records.
func (o ClusterIssuerSpecAcmeSolversDns01Output) Cloudflare() ClusterIssuerSpecAcmeSolversDns01CloudflarePtrOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversDns01) *ClusterIssuerSpecAcmeSolversDns01Cloudflare {
		return v.Cloudflare
	}).(ClusterIssuerSpecAcmeSolversDns01CloudflarePtrOutput)
}

// CNAMEStrategy configures how the DNS01 provider should handle CNAME records when found in DNS zones.
func (o ClusterIssuerSpecAcmeSolversDns01Output) CnameStrategy() pulumi.StringPtrOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversDns01) *string { return v.CnameStrategy }).(pulumi.StringPtrOutput)
}

// Use the DigitalOcean DNS API to manage DNS01 challenge records.
func (o ClusterIssuerSpecAcmeSolversDns01Output) Digitalocean() ClusterIssuerSpecAcmeSolversDns01DigitaloceanPtrOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversDns01) *ClusterIssuerSpecAcmeSolversDns01Digitalocean {
		return v.Digitalocean
	}).(ClusterIssuerSpecAcmeSolversDns01DigitaloceanPtrOutput)
}

// Use RFC2136 ("Dynamic Updates in the Domain Name System") (https://datatracker.ietf.org/doc/rfc2136/) to manage DNS01 challenge records.
func (o ClusterIssuerSpecAcmeSolversDns01Output) Rfc2136() ClusterIssuerSpecAcmeSolversDns01Rfc2136PtrOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversDns01) *ClusterIssuerSpecAcmeSolversDns01Rfc2136 { return v.Rfc2136 }).(ClusterIssuerSpecAcmeSolversDns01Rfc2136PtrOutput)
}

// Use the AWS Route53 API to manage DNS01 challenge records.
func (o ClusterIssuerSpecAcmeSolversDns01Output) Route53() ClusterIssuerSpecAcmeSolversDns01Route53PtrOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversDns01) *ClusterIssuerSpecAcmeSolversDns01Route53 { return v.Route53 }).(ClusterIssuerSpecAcmeSolversDns01Route53PtrOutput)
}

// Configure an external webhook based DNS01 challenge solver to manage DNS01 challenge records.
func (o ClusterIssuerSpecAcmeSolversDns01Output) Webhook() ClusterIssuerSpecAcmeSolversDns01WebhookPtrOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversDns01) *ClusterIssuerSpecAcmeSolversDns01Webhook { return v.Webhook }).(ClusterIssuerSpecAcmeSolversDns01WebhookPtrOutput)
}

type ClusterIssuerSpecAcmeSolversDns01PtrOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversDns01PtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecAcmeSolversDns01)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversDns01PtrOutput) ToClusterIssuerSpecAcmeSolversDns01PtrOutput() ClusterIssuerSpecAcmeSolversDns01PtrOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversDns01PtrOutput) ToClusterIssuerSpecAcmeSolversDns01PtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01PtrOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversDns01PtrOutput) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecAcmeSolversDns01] {
	return pulumix.Output[*ClusterIssuerSpecAcmeSolversDns01]{
		OutputState: o.OutputState,
	}
}

func (o ClusterIssuerSpecAcmeSolversDns01PtrOutput) Elem() ClusterIssuerSpecAcmeSolversDns01Output {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversDns01) ClusterIssuerSpecAcmeSolversDns01 {
		if v != nil {
			return *v
		}
		var ret ClusterIssuerSpecAcmeSolversDns01
		return ret
	}).(ClusterIssuerSpecAcmeSolversDns01Output)
}

// Use the 'ACME DNS' (https://github.com/joohoi/acme-dns) API to manage DNS01 challenge records.
func (o ClusterIssuerSpecAcmeSolversDns01PtrOutput) AcmeDNS() ClusterIssuerSpecAcmeSolversDns01AcmeDNSPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversDns01) *ClusterIssuerSpecAcmeSolversDns01AcmeDNS {
		if v == nil {
			return nil
		}
		return v.AcmeDNS
	}).(ClusterIssuerSpecAcmeSolversDns01AcmeDNSPtrOutput)
}

// Use the Akamai DNS zone management API to manage DNS01 challenge records.
func (o ClusterIssuerSpecAcmeSolversDns01PtrOutput) Akamai() ClusterIssuerSpecAcmeSolversDns01AkamaiPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversDns01) *ClusterIssuerSpecAcmeSolversDns01Akamai {
		if v == nil {
			return nil
		}
		return v.Akamai
	}).(ClusterIssuerSpecAcmeSolversDns01AkamaiPtrOutput)
}

// Use the Microsoft Azure DNS API to manage DNS01 challenge records.
func (o ClusterIssuerSpecAcmeSolversDns01PtrOutput) AzureDNS() ClusterIssuerSpecAcmeSolversDns01AzureDNSPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversDns01) *ClusterIssuerSpecAcmeSolversDns01AzureDNS {
		if v == nil {
			return nil
		}
		return v.AzureDNS
	}).(ClusterIssuerSpecAcmeSolversDns01AzureDNSPtrOutput)
}

// Use the Google Cloud DNS API to manage DNS01 challenge records.
func (o ClusterIssuerSpecAcmeSolversDns01PtrOutput) CloudDNS() ClusterIssuerSpecAcmeSolversDns01CloudDNSPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversDns01) *ClusterIssuerSpecAcmeSolversDns01CloudDNS {
		if v == nil {
			return nil
		}
		return v.CloudDNS
	}).(ClusterIssuerSpecAcmeSolversDns01CloudDNSPtrOutput)
}

// Use the Cloudflare API to manage DNS01 challenge records.
func (o ClusterIssuerSpecAcmeSolversDns01PtrOutput) Cloudflare() ClusterIssuerSpecAcmeSolversDns01CloudflarePtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversDns01) *ClusterIssuerSpecAcmeSolversDns01Cloudflare {
		if v == nil {
			return nil
		}
		return v.Cloudflare
	}).(ClusterIssuerSpecAcmeSolversDns01CloudflarePtrOutput)
}

// CNAMEStrategy configures how the DNS01 provider should handle CNAME records when found in DNS zones.
func (o ClusterIssuerSpecAcmeSolversDns01PtrOutput) CnameStrategy() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversDns01) *string {
		if v == nil {
			return nil
		}
		return v.CnameStrategy
	}).(pulumi.StringPtrOutput)
}

// Use the DigitalOcean DNS API to manage DNS01 challenge records.
func (o ClusterIssuerSpecAcmeSolversDns01PtrOutput) Digitalocean() ClusterIssuerSpecAcmeSolversDns01DigitaloceanPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversDns01) *ClusterIssuerSpecAcmeSolversDns01Digitalocean {
		if v == nil {
			return nil
		}
		return v.Digitalocean
	}).(ClusterIssuerSpecAcmeSolversDns01DigitaloceanPtrOutput)
}

// Use RFC2136 ("Dynamic Updates in the Domain Name System") (https://datatracker.ietf.org/doc/rfc2136/) to manage DNS01 challenge records.
func (o ClusterIssuerSpecAcmeSolversDns01PtrOutput) Rfc2136() ClusterIssuerSpecAcmeSolversDns01Rfc2136PtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversDns01) *ClusterIssuerSpecAcmeSolversDns01Rfc2136 {
		if v == nil {
			return nil
		}
		return v.Rfc2136
	}).(ClusterIssuerSpecAcmeSolversDns01Rfc2136PtrOutput)
}

// Use the AWS Route53 API to manage DNS01 challenge records.
func (o ClusterIssuerSpecAcmeSolversDns01PtrOutput) Route53() ClusterIssuerSpecAcmeSolversDns01Route53PtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversDns01) *ClusterIssuerSpecAcmeSolversDns01Route53 {
		if v == nil {
			return nil
		}
		return v.Route53
	}).(ClusterIssuerSpecAcmeSolversDns01Route53PtrOutput)
}

// Configure an external webhook based DNS01 challenge solver to manage DNS01 challenge records.
func (o ClusterIssuerSpecAcmeSolversDns01PtrOutput) Webhook() ClusterIssuerSpecAcmeSolversDns01WebhookPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversDns01) *ClusterIssuerSpecAcmeSolversDns01Webhook {
		if v == nil {
			return nil
		}
		return v.Webhook
	}).(ClusterIssuerSpecAcmeSolversDns01WebhookPtrOutput)
}

// Use the 'ACME DNS' (https://github.com/joohoi/acme-dns) API to manage DNS01 challenge records.
type ClusterIssuerSpecAcmeSolversDns01AcmeDNS struct {
	// A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.
	AccountSecretRef ClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRef `pulumi:"accountSecretRef"`
	Host             string                                                   `pulumi:"host"`
}

// ClusterIssuerSpecAcmeSolversDns01AcmeDNSInput is an input type that accepts ClusterIssuerSpecAcmeSolversDns01AcmeDNSArgs and ClusterIssuerSpecAcmeSolversDns01AcmeDNSOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversDns01AcmeDNSInput` via:
//
//	ClusterIssuerSpecAcmeSolversDns01AcmeDNSArgs{...}
type ClusterIssuerSpecAcmeSolversDns01AcmeDNSInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversDns01AcmeDNSOutput() ClusterIssuerSpecAcmeSolversDns01AcmeDNSOutput
	ToClusterIssuerSpecAcmeSolversDns01AcmeDNSOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversDns01AcmeDNSOutput
}

// Use the 'ACME DNS' (https://github.com/joohoi/acme-dns) API to manage DNS01 challenge records.
type ClusterIssuerSpecAcmeSolversDns01AcmeDNSArgs struct {
	// A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.
	AccountSecretRef ClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefInput `pulumi:"accountSecretRef"`
	Host             pulumi.StringInput                                            `pulumi:"host"`
}

func (ClusterIssuerSpecAcmeSolversDns01AcmeDNSArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversDns01AcmeDNS)(nil)).Elem()
}

func (i ClusterIssuerSpecAcmeSolversDns01AcmeDNSArgs) ToClusterIssuerSpecAcmeSolversDns01AcmeDNSOutput() ClusterIssuerSpecAcmeSolversDns01AcmeDNSOutput {
	return i.ToClusterIssuerSpecAcmeSolversDns01AcmeDNSOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversDns01AcmeDNSArgs) ToClusterIssuerSpecAcmeSolversDns01AcmeDNSOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01AcmeDNSOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversDns01AcmeDNSOutput)
}

func (i ClusterIssuerSpecAcmeSolversDns01AcmeDNSArgs) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversDns01AcmeDNS] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversDns01AcmeDNS]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversDns01AcmeDNSOutputWithContext(ctx).OutputState,
	}
}

func (i ClusterIssuerSpecAcmeSolversDns01AcmeDNSArgs) ToClusterIssuerSpecAcmeSolversDns01AcmeDNSPtrOutput() ClusterIssuerSpecAcmeSolversDns01AcmeDNSPtrOutput {
	return i.ToClusterIssuerSpecAcmeSolversDns01AcmeDNSPtrOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversDns01AcmeDNSArgs) ToClusterIssuerSpecAcmeSolversDns01AcmeDNSPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01AcmeDNSPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversDns01AcmeDNSOutput).ToClusterIssuerSpecAcmeSolversDns01AcmeDNSPtrOutputWithContext(ctx)
}

// ClusterIssuerSpecAcmeSolversDns01AcmeDNSPtrInput is an input type that accepts ClusterIssuerSpecAcmeSolversDns01AcmeDNSArgs, ClusterIssuerSpecAcmeSolversDns01AcmeDNSPtr and ClusterIssuerSpecAcmeSolversDns01AcmeDNSPtrOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversDns01AcmeDNSPtrInput` via:
//
//	        ClusterIssuerSpecAcmeSolversDns01AcmeDNSArgs{...}
//
//	or:
//
//	        nil
type ClusterIssuerSpecAcmeSolversDns01AcmeDNSPtrInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversDns01AcmeDNSPtrOutput() ClusterIssuerSpecAcmeSolversDns01AcmeDNSPtrOutput
	ToClusterIssuerSpecAcmeSolversDns01AcmeDNSPtrOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversDns01AcmeDNSPtrOutput
}

type clusterIssuerSpecAcmeSolversDns01AcmeDNSPtrType ClusterIssuerSpecAcmeSolversDns01AcmeDNSArgs

func ClusterIssuerSpecAcmeSolversDns01AcmeDNSPtr(v *ClusterIssuerSpecAcmeSolversDns01AcmeDNSArgs) ClusterIssuerSpecAcmeSolversDns01AcmeDNSPtrInput {
	return (*clusterIssuerSpecAcmeSolversDns01AcmeDNSPtrType)(v)
}

func (*clusterIssuerSpecAcmeSolversDns01AcmeDNSPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecAcmeSolversDns01AcmeDNS)(nil)).Elem()
}

func (i *clusterIssuerSpecAcmeSolversDns01AcmeDNSPtrType) ToClusterIssuerSpecAcmeSolversDns01AcmeDNSPtrOutput() ClusterIssuerSpecAcmeSolversDns01AcmeDNSPtrOutput {
	return i.ToClusterIssuerSpecAcmeSolversDns01AcmeDNSPtrOutputWithContext(context.Background())
}

func (i *clusterIssuerSpecAcmeSolversDns01AcmeDNSPtrType) ToClusterIssuerSpecAcmeSolversDns01AcmeDNSPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01AcmeDNSPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversDns01AcmeDNSPtrOutput)
}

func (i *clusterIssuerSpecAcmeSolversDns01AcmeDNSPtrType) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecAcmeSolversDns01AcmeDNS] {
	return pulumix.Output[*ClusterIssuerSpecAcmeSolversDns01AcmeDNS]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversDns01AcmeDNSPtrOutputWithContext(ctx).OutputState,
	}
}

// Use the 'ACME DNS' (https://github.com/joohoi/acme-dns) API to manage DNS01 challenge records.
type ClusterIssuerSpecAcmeSolversDns01AcmeDNSOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversDns01AcmeDNSOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversDns01AcmeDNS)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversDns01AcmeDNSOutput) ToClusterIssuerSpecAcmeSolversDns01AcmeDNSOutput() ClusterIssuerSpecAcmeSolversDns01AcmeDNSOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversDns01AcmeDNSOutput) ToClusterIssuerSpecAcmeSolversDns01AcmeDNSOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01AcmeDNSOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversDns01AcmeDNSOutput) ToClusterIssuerSpecAcmeSolversDns01AcmeDNSPtrOutput() ClusterIssuerSpecAcmeSolversDns01AcmeDNSPtrOutput {
	return o.ToClusterIssuerSpecAcmeSolversDns01AcmeDNSPtrOutputWithContext(context.Background())
}

func (o ClusterIssuerSpecAcmeSolversDns01AcmeDNSOutput) ToClusterIssuerSpecAcmeSolversDns01AcmeDNSPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01AcmeDNSPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v ClusterIssuerSpecAcmeSolversDns01AcmeDNS) *ClusterIssuerSpecAcmeSolversDns01AcmeDNS {
		return &v
	}).(ClusterIssuerSpecAcmeSolversDns01AcmeDNSPtrOutput)
}

func (o ClusterIssuerSpecAcmeSolversDns01AcmeDNSOutput) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversDns01AcmeDNS] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversDns01AcmeDNS]{
		OutputState: o.OutputState,
	}
}

// A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.
func (o ClusterIssuerSpecAcmeSolversDns01AcmeDNSOutput) AccountSecretRef() ClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversDns01AcmeDNS) ClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRef {
		return v.AccountSecretRef
	}).(ClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefOutput)
}

func (o ClusterIssuerSpecAcmeSolversDns01AcmeDNSOutput) Host() pulumi.StringOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversDns01AcmeDNS) string { return v.Host }).(pulumi.StringOutput)
}

type ClusterIssuerSpecAcmeSolversDns01AcmeDNSPtrOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversDns01AcmeDNSPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecAcmeSolversDns01AcmeDNS)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversDns01AcmeDNSPtrOutput) ToClusterIssuerSpecAcmeSolversDns01AcmeDNSPtrOutput() ClusterIssuerSpecAcmeSolversDns01AcmeDNSPtrOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversDns01AcmeDNSPtrOutput) ToClusterIssuerSpecAcmeSolversDns01AcmeDNSPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01AcmeDNSPtrOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversDns01AcmeDNSPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecAcmeSolversDns01AcmeDNS] {
	return pulumix.Output[*ClusterIssuerSpecAcmeSolversDns01AcmeDNS]{
		OutputState: o.OutputState,
	}
}

func (o ClusterIssuerSpecAcmeSolversDns01AcmeDNSPtrOutput) Elem() ClusterIssuerSpecAcmeSolversDns01AcmeDNSOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversDns01AcmeDNS) ClusterIssuerSpecAcmeSolversDns01AcmeDNS {
		if v != nil {
			return *v
		}
		var ret ClusterIssuerSpecAcmeSolversDns01AcmeDNS
		return ret
	}).(ClusterIssuerSpecAcmeSolversDns01AcmeDNSOutput)
}

// A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.
func (o ClusterIssuerSpecAcmeSolversDns01AcmeDNSPtrOutput) AccountSecretRef() ClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversDns01AcmeDNS) *ClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRef {
		if v == nil {
			return nil
		}
		return &v.AccountSecretRef
	}).(ClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefPtrOutput)
}

func (o ClusterIssuerSpecAcmeSolversDns01AcmeDNSPtrOutput) Host() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversDns01AcmeDNS) *string {
		if v == nil {
			return nil
		}
		return &v.Host
	}).(pulumi.StringPtrOutput)
}

// A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.
type ClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRef struct {
	// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
	Key *string `pulumi:"key"`
	// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
	Name string `pulumi:"name"`
}

// ClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefInput is an input type that accepts ClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefArgs and ClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefInput` via:
//
//	ClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefArgs{...}
type ClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefOutput() ClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefOutput
	ToClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefOutput
}

// A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.
type ClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefArgs struct {
	// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
	Key pulumi.StringPtrInput `pulumi:"key"`
	// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
	Name pulumi.StringInput `pulumi:"name"`
}

func (ClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRef)(nil)).Elem()
}

func (i ClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefArgs) ToClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefOutput() ClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefOutput {
	return i.ToClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefArgs) ToClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefOutput)
}

func (i ClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefArgs) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRef] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRef]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefOutputWithContext(ctx).OutputState,
	}
}

func (i ClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefArgs) ToClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefPtrOutput() ClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefPtrOutput {
	return i.ToClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefPtrOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefArgs) ToClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefOutput).ToClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefPtrOutputWithContext(ctx)
}

// ClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefPtrInput is an input type that accepts ClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefArgs, ClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefPtr and ClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefPtrOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefPtrInput` via:
//
//	        ClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefArgs{...}
//
//	or:
//
//	        nil
type ClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefPtrInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefPtrOutput() ClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefPtrOutput
	ToClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefPtrOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefPtrOutput
}

type clusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefPtrType ClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefArgs

func ClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefPtr(v *ClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefArgs) ClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefPtrInput {
	return (*clusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefPtrType)(v)
}

func (*clusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRef)(nil)).Elem()
}

func (i *clusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefPtrType) ToClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefPtrOutput() ClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefPtrOutput {
	return i.ToClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefPtrOutputWithContext(context.Background())
}

func (i *clusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefPtrType) ToClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefPtrOutput)
}

func (i *clusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefPtrType) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRef] {
	return pulumix.Output[*ClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRef]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefPtrOutputWithContext(ctx).OutputState,
	}
}

// A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.
type ClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRef)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefOutput) ToClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefOutput() ClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefOutput) ToClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefOutput) ToClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefPtrOutput() ClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefPtrOutput {
	return o.ToClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefPtrOutputWithContext(context.Background())
}

func (o ClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefOutput) ToClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v ClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRef) *ClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRef {
		return &v
	}).(ClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefPtrOutput)
}

func (o ClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefOutput) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRef] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRef]{
		OutputState: o.OutputState,
	}
}

// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
func (o ClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefOutput) Key() pulumi.StringPtrOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRef) *string { return v.Key }).(pulumi.StringPtrOutput)
}

// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
func (o ClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefOutput) Name() pulumi.StringOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRef) string { return v.Name }).(pulumi.StringOutput)
}

type ClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefPtrOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRef)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefPtrOutput) ToClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefPtrOutput() ClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefPtrOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefPtrOutput) ToClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefPtrOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRef] {
	return pulumix.Output[*ClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRef]{
		OutputState: o.OutputState,
	}
}

func (o ClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefPtrOutput) Elem() ClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRef) ClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRef {
		if v != nil {
			return *v
		}
		var ret ClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRef
		return ret
	}).(ClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefOutput)
}

// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
func (o ClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefPtrOutput) Key() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRef) *string {
		if v == nil {
			return nil
		}
		return v.Key
	}).(pulumi.StringPtrOutput)
}

// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
func (o ClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefPtrOutput) Name() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRef) *string {
		if v == nil {
			return nil
		}
		return &v.Name
	}).(pulumi.StringPtrOutput)
}

// Use the Akamai DNS zone management API to manage DNS01 challenge records.
type ClusterIssuerSpecAcmeSolversDns01Akamai struct {
	// A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.
	AccessTokenSecretRef ClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRef `pulumi:"accessTokenSecretRef"`
	// A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.
	ClientSecretSecretRef ClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRef `pulumi:"clientSecretSecretRef"`
	// A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.
	ClientTokenSecretRef  ClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRef `pulumi:"clientTokenSecretRef"`
	ServiceConsumerDomain string                                                      `pulumi:"serviceConsumerDomain"`
}

// ClusterIssuerSpecAcmeSolversDns01AkamaiInput is an input type that accepts ClusterIssuerSpecAcmeSolversDns01AkamaiArgs and ClusterIssuerSpecAcmeSolversDns01AkamaiOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversDns01AkamaiInput` via:
//
//	ClusterIssuerSpecAcmeSolversDns01AkamaiArgs{...}
type ClusterIssuerSpecAcmeSolversDns01AkamaiInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversDns01AkamaiOutput() ClusterIssuerSpecAcmeSolversDns01AkamaiOutput
	ToClusterIssuerSpecAcmeSolversDns01AkamaiOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversDns01AkamaiOutput
}

// Use the Akamai DNS zone management API to manage DNS01 challenge records.
type ClusterIssuerSpecAcmeSolversDns01AkamaiArgs struct {
	// A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.
	AccessTokenSecretRef ClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefInput `pulumi:"accessTokenSecretRef"`
	// A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.
	ClientSecretSecretRef ClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefInput `pulumi:"clientSecretSecretRef"`
	// A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.
	ClientTokenSecretRef  ClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefInput `pulumi:"clientTokenSecretRef"`
	ServiceConsumerDomain pulumi.StringInput                                               `pulumi:"serviceConsumerDomain"`
}

func (ClusterIssuerSpecAcmeSolversDns01AkamaiArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversDns01Akamai)(nil)).Elem()
}

func (i ClusterIssuerSpecAcmeSolversDns01AkamaiArgs) ToClusterIssuerSpecAcmeSolversDns01AkamaiOutput() ClusterIssuerSpecAcmeSolversDns01AkamaiOutput {
	return i.ToClusterIssuerSpecAcmeSolversDns01AkamaiOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversDns01AkamaiArgs) ToClusterIssuerSpecAcmeSolversDns01AkamaiOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01AkamaiOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversDns01AkamaiOutput)
}

func (i ClusterIssuerSpecAcmeSolversDns01AkamaiArgs) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversDns01Akamai] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversDns01Akamai]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversDns01AkamaiOutputWithContext(ctx).OutputState,
	}
}

func (i ClusterIssuerSpecAcmeSolversDns01AkamaiArgs) ToClusterIssuerSpecAcmeSolversDns01AkamaiPtrOutput() ClusterIssuerSpecAcmeSolversDns01AkamaiPtrOutput {
	return i.ToClusterIssuerSpecAcmeSolversDns01AkamaiPtrOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversDns01AkamaiArgs) ToClusterIssuerSpecAcmeSolversDns01AkamaiPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01AkamaiPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversDns01AkamaiOutput).ToClusterIssuerSpecAcmeSolversDns01AkamaiPtrOutputWithContext(ctx)
}

// ClusterIssuerSpecAcmeSolversDns01AkamaiPtrInput is an input type that accepts ClusterIssuerSpecAcmeSolversDns01AkamaiArgs, ClusterIssuerSpecAcmeSolversDns01AkamaiPtr and ClusterIssuerSpecAcmeSolversDns01AkamaiPtrOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversDns01AkamaiPtrInput` via:
//
//	        ClusterIssuerSpecAcmeSolversDns01AkamaiArgs{...}
//
//	or:
//
//	        nil
type ClusterIssuerSpecAcmeSolversDns01AkamaiPtrInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversDns01AkamaiPtrOutput() ClusterIssuerSpecAcmeSolversDns01AkamaiPtrOutput
	ToClusterIssuerSpecAcmeSolversDns01AkamaiPtrOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversDns01AkamaiPtrOutput
}

type clusterIssuerSpecAcmeSolversDns01AkamaiPtrType ClusterIssuerSpecAcmeSolversDns01AkamaiArgs

func ClusterIssuerSpecAcmeSolversDns01AkamaiPtr(v *ClusterIssuerSpecAcmeSolversDns01AkamaiArgs) ClusterIssuerSpecAcmeSolversDns01AkamaiPtrInput {
	return (*clusterIssuerSpecAcmeSolversDns01AkamaiPtrType)(v)
}

func (*clusterIssuerSpecAcmeSolversDns01AkamaiPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecAcmeSolversDns01Akamai)(nil)).Elem()
}

func (i *clusterIssuerSpecAcmeSolversDns01AkamaiPtrType) ToClusterIssuerSpecAcmeSolversDns01AkamaiPtrOutput() ClusterIssuerSpecAcmeSolversDns01AkamaiPtrOutput {
	return i.ToClusterIssuerSpecAcmeSolversDns01AkamaiPtrOutputWithContext(context.Background())
}

func (i *clusterIssuerSpecAcmeSolversDns01AkamaiPtrType) ToClusterIssuerSpecAcmeSolversDns01AkamaiPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01AkamaiPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversDns01AkamaiPtrOutput)
}

func (i *clusterIssuerSpecAcmeSolversDns01AkamaiPtrType) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecAcmeSolversDns01Akamai] {
	return pulumix.Output[*ClusterIssuerSpecAcmeSolversDns01Akamai]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversDns01AkamaiPtrOutputWithContext(ctx).OutputState,
	}
}

// Use the Akamai DNS zone management API to manage DNS01 challenge records.
type ClusterIssuerSpecAcmeSolversDns01AkamaiOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversDns01AkamaiOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversDns01Akamai)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversDns01AkamaiOutput) ToClusterIssuerSpecAcmeSolversDns01AkamaiOutput() ClusterIssuerSpecAcmeSolversDns01AkamaiOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversDns01AkamaiOutput) ToClusterIssuerSpecAcmeSolversDns01AkamaiOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01AkamaiOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversDns01AkamaiOutput) ToClusterIssuerSpecAcmeSolversDns01AkamaiPtrOutput() ClusterIssuerSpecAcmeSolversDns01AkamaiPtrOutput {
	return o.ToClusterIssuerSpecAcmeSolversDns01AkamaiPtrOutputWithContext(context.Background())
}

func (o ClusterIssuerSpecAcmeSolversDns01AkamaiOutput) ToClusterIssuerSpecAcmeSolversDns01AkamaiPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01AkamaiPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v ClusterIssuerSpecAcmeSolversDns01Akamai) *ClusterIssuerSpecAcmeSolversDns01Akamai {
		return &v
	}).(ClusterIssuerSpecAcmeSolversDns01AkamaiPtrOutput)
}

func (o ClusterIssuerSpecAcmeSolversDns01AkamaiOutput) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversDns01Akamai] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversDns01Akamai]{
		OutputState: o.OutputState,
	}
}

// A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.
func (o ClusterIssuerSpecAcmeSolversDns01AkamaiOutput) AccessTokenSecretRef() ClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversDns01Akamai) ClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRef {
		return v.AccessTokenSecretRef
	}).(ClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefOutput)
}

// A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.
func (o ClusterIssuerSpecAcmeSolversDns01AkamaiOutput) ClientSecretSecretRef() ClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversDns01Akamai) ClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRef {
		return v.ClientSecretSecretRef
	}).(ClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefOutput)
}

// A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.
func (o ClusterIssuerSpecAcmeSolversDns01AkamaiOutput) ClientTokenSecretRef() ClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversDns01Akamai) ClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRef {
		return v.ClientTokenSecretRef
	}).(ClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefOutput)
}

func (o ClusterIssuerSpecAcmeSolversDns01AkamaiOutput) ServiceConsumerDomain() pulumi.StringOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversDns01Akamai) string { return v.ServiceConsumerDomain }).(pulumi.StringOutput)
}

type ClusterIssuerSpecAcmeSolversDns01AkamaiPtrOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversDns01AkamaiPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecAcmeSolversDns01Akamai)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversDns01AkamaiPtrOutput) ToClusterIssuerSpecAcmeSolversDns01AkamaiPtrOutput() ClusterIssuerSpecAcmeSolversDns01AkamaiPtrOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversDns01AkamaiPtrOutput) ToClusterIssuerSpecAcmeSolversDns01AkamaiPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01AkamaiPtrOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversDns01AkamaiPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecAcmeSolversDns01Akamai] {
	return pulumix.Output[*ClusterIssuerSpecAcmeSolversDns01Akamai]{
		OutputState: o.OutputState,
	}
}

func (o ClusterIssuerSpecAcmeSolversDns01AkamaiPtrOutput) Elem() ClusterIssuerSpecAcmeSolversDns01AkamaiOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversDns01Akamai) ClusterIssuerSpecAcmeSolversDns01Akamai {
		if v != nil {
			return *v
		}
		var ret ClusterIssuerSpecAcmeSolversDns01Akamai
		return ret
	}).(ClusterIssuerSpecAcmeSolversDns01AkamaiOutput)
}

// A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.
func (o ClusterIssuerSpecAcmeSolversDns01AkamaiPtrOutput) AccessTokenSecretRef() ClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversDns01Akamai) *ClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRef {
		if v == nil {
			return nil
		}
		return &v.AccessTokenSecretRef
	}).(ClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefPtrOutput)
}

// A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.
func (o ClusterIssuerSpecAcmeSolversDns01AkamaiPtrOutput) ClientSecretSecretRef() ClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversDns01Akamai) *ClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRef {
		if v == nil {
			return nil
		}
		return &v.ClientSecretSecretRef
	}).(ClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefPtrOutput)
}

// A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.
func (o ClusterIssuerSpecAcmeSolversDns01AkamaiPtrOutput) ClientTokenSecretRef() ClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversDns01Akamai) *ClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRef {
		if v == nil {
			return nil
		}
		return &v.ClientTokenSecretRef
	}).(ClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefPtrOutput)
}

func (o ClusterIssuerSpecAcmeSolversDns01AkamaiPtrOutput) ServiceConsumerDomain() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversDns01Akamai) *string {
		if v == nil {
			return nil
		}
		return &v.ServiceConsumerDomain
	}).(pulumi.StringPtrOutput)
}

// A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.
type ClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRef struct {
	// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
	Key *string `pulumi:"key"`
	// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
	Name string `pulumi:"name"`
}

// ClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefInput is an input type that accepts ClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefArgs and ClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefInput` via:
//
//	ClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefArgs{...}
type ClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefOutput() ClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefOutput
	ToClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefOutput
}

// A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.
type ClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefArgs struct {
	// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
	Key pulumi.StringPtrInput `pulumi:"key"`
	// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
	Name pulumi.StringInput `pulumi:"name"`
}

func (ClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRef)(nil)).Elem()
}

func (i ClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefArgs) ToClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefOutput() ClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefOutput {
	return i.ToClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefArgs) ToClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefOutput)
}

func (i ClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefArgs) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRef] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRef]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefOutputWithContext(ctx).OutputState,
	}
}

func (i ClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefArgs) ToClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefPtrOutput() ClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefPtrOutput {
	return i.ToClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefPtrOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefArgs) ToClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefOutput).ToClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefPtrOutputWithContext(ctx)
}

// ClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefPtrInput is an input type that accepts ClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefArgs, ClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefPtr and ClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefPtrOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefPtrInput` via:
//
//	        ClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefArgs{...}
//
//	or:
//
//	        nil
type ClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefPtrInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefPtrOutput() ClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefPtrOutput
	ToClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefPtrOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefPtrOutput
}

type clusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefPtrType ClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefArgs

func ClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefPtr(v *ClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefArgs) ClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefPtrInput {
	return (*clusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefPtrType)(v)
}

func (*clusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRef)(nil)).Elem()
}

func (i *clusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefPtrType) ToClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefPtrOutput() ClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefPtrOutput {
	return i.ToClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefPtrOutputWithContext(context.Background())
}

func (i *clusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefPtrType) ToClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefPtrOutput)
}

func (i *clusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefPtrType) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRef] {
	return pulumix.Output[*ClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRef]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefPtrOutputWithContext(ctx).OutputState,
	}
}

// A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.
type ClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRef)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefOutput) ToClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefOutput() ClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefOutput) ToClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefOutput) ToClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefPtrOutput() ClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefPtrOutput {
	return o.ToClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefPtrOutputWithContext(context.Background())
}

func (o ClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefOutput) ToClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v ClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRef) *ClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRef {
		return &v
	}).(ClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefPtrOutput)
}

func (o ClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefOutput) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRef] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRef]{
		OutputState: o.OutputState,
	}
}

// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
func (o ClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefOutput) Key() pulumi.StringPtrOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRef) *string { return v.Key }).(pulumi.StringPtrOutput)
}

// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
func (o ClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefOutput) Name() pulumi.StringOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRef) string { return v.Name }).(pulumi.StringOutput)
}

type ClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefPtrOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRef)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefPtrOutput) ToClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefPtrOutput() ClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefPtrOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefPtrOutput) ToClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefPtrOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRef] {
	return pulumix.Output[*ClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRef]{
		OutputState: o.OutputState,
	}
}

func (o ClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefPtrOutput) Elem() ClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRef) ClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRef {
		if v != nil {
			return *v
		}
		var ret ClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRef
		return ret
	}).(ClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefOutput)
}

// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
func (o ClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefPtrOutput) Key() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRef) *string {
		if v == nil {
			return nil
		}
		return v.Key
	}).(pulumi.StringPtrOutput)
}

// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
func (o ClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefPtrOutput) Name() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRef) *string {
		if v == nil {
			return nil
		}
		return &v.Name
	}).(pulumi.StringPtrOutput)
}

// A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.
type ClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRef struct {
	// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
	Key *string `pulumi:"key"`
	// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
	Name string `pulumi:"name"`
}

// ClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefInput is an input type that accepts ClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefArgs and ClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefInput` via:
//
//	ClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefArgs{...}
type ClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefOutput() ClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefOutput
	ToClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefOutput
}

// A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.
type ClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefArgs struct {
	// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
	Key pulumi.StringPtrInput `pulumi:"key"`
	// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
	Name pulumi.StringInput `pulumi:"name"`
}

func (ClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRef)(nil)).Elem()
}

func (i ClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefArgs) ToClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefOutput() ClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefOutput {
	return i.ToClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefArgs) ToClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefOutput)
}

func (i ClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefArgs) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRef] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRef]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefOutputWithContext(ctx).OutputState,
	}
}

func (i ClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefArgs) ToClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefPtrOutput() ClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefPtrOutput {
	return i.ToClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefPtrOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefArgs) ToClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefOutput).ToClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefPtrOutputWithContext(ctx)
}

// ClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefPtrInput is an input type that accepts ClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefArgs, ClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefPtr and ClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefPtrOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefPtrInput` via:
//
//	        ClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefArgs{...}
//
//	or:
//
//	        nil
type ClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefPtrInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefPtrOutput() ClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefPtrOutput
	ToClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefPtrOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefPtrOutput
}

type clusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefPtrType ClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefArgs

func ClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefPtr(v *ClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefArgs) ClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefPtrInput {
	return (*clusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefPtrType)(v)
}

func (*clusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRef)(nil)).Elem()
}

func (i *clusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefPtrType) ToClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefPtrOutput() ClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefPtrOutput {
	return i.ToClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefPtrOutputWithContext(context.Background())
}

func (i *clusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefPtrType) ToClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefPtrOutput)
}

func (i *clusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefPtrType) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRef] {
	return pulumix.Output[*ClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRef]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefPtrOutputWithContext(ctx).OutputState,
	}
}

// A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.
type ClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRef)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefOutput) ToClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefOutput() ClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefOutput) ToClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefOutput) ToClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefPtrOutput() ClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefPtrOutput {
	return o.ToClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefPtrOutputWithContext(context.Background())
}

func (o ClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefOutput) ToClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v ClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRef) *ClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRef {
		return &v
	}).(ClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefPtrOutput)
}

func (o ClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefOutput) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRef] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRef]{
		OutputState: o.OutputState,
	}
}

// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
func (o ClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefOutput) Key() pulumi.StringPtrOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRef) *string { return v.Key }).(pulumi.StringPtrOutput)
}

// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
func (o ClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefOutput) Name() pulumi.StringOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRef) string { return v.Name }).(pulumi.StringOutput)
}

type ClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefPtrOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRef)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefPtrOutput) ToClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefPtrOutput() ClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefPtrOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefPtrOutput) ToClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefPtrOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRef] {
	return pulumix.Output[*ClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRef]{
		OutputState: o.OutputState,
	}
}

func (o ClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefPtrOutput) Elem() ClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRef) ClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRef {
		if v != nil {
			return *v
		}
		var ret ClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRef
		return ret
	}).(ClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefOutput)
}

// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
func (o ClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefPtrOutput) Key() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRef) *string {
		if v == nil {
			return nil
		}
		return v.Key
	}).(pulumi.StringPtrOutput)
}

// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
func (o ClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefPtrOutput) Name() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRef) *string {
		if v == nil {
			return nil
		}
		return &v.Name
	}).(pulumi.StringPtrOutput)
}

// A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.
type ClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRef struct {
	// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
	Key *string `pulumi:"key"`
	// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
	Name string `pulumi:"name"`
}

// ClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefInput is an input type that accepts ClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefArgs and ClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefInput` via:
//
//	ClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefArgs{...}
type ClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefOutput() ClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefOutput
	ToClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefOutput
}

// A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.
type ClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefArgs struct {
	// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
	Key pulumi.StringPtrInput `pulumi:"key"`
	// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
	Name pulumi.StringInput `pulumi:"name"`
}

func (ClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRef)(nil)).Elem()
}

func (i ClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefArgs) ToClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefOutput() ClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefOutput {
	return i.ToClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefArgs) ToClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefOutput)
}

func (i ClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefArgs) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRef] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRef]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefOutputWithContext(ctx).OutputState,
	}
}

func (i ClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefArgs) ToClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefPtrOutput() ClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefPtrOutput {
	return i.ToClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefPtrOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefArgs) ToClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefOutput).ToClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefPtrOutputWithContext(ctx)
}

// ClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefPtrInput is an input type that accepts ClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefArgs, ClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefPtr and ClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefPtrOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefPtrInput` via:
//
//	        ClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefArgs{...}
//
//	or:
//
//	        nil
type ClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefPtrInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefPtrOutput() ClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefPtrOutput
	ToClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefPtrOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefPtrOutput
}

type clusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefPtrType ClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefArgs

func ClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefPtr(v *ClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefArgs) ClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefPtrInput {
	return (*clusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefPtrType)(v)
}

func (*clusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRef)(nil)).Elem()
}

func (i *clusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefPtrType) ToClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefPtrOutput() ClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefPtrOutput {
	return i.ToClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefPtrOutputWithContext(context.Background())
}

func (i *clusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefPtrType) ToClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefPtrOutput)
}

func (i *clusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefPtrType) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRef] {
	return pulumix.Output[*ClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRef]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefPtrOutputWithContext(ctx).OutputState,
	}
}

// A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.
type ClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRef)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefOutput) ToClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefOutput() ClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefOutput) ToClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefOutput) ToClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefPtrOutput() ClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefPtrOutput {
	return o.ToClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefPtrOutputWithContext(context.Background())
}

func (o ClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefOutput) ToClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v ClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRef) *ClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRef {
		return &v
	}).(ClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefPtrOutput)
}

func (o ClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefOutput) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRef] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRef]{
		OutputState: o.OutputState,
	}
}

// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
func (o ClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefOutput) Key() pulumi.StringPtrOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRef) *string { return v.Key }).(pulumi.StringPtrOutput)
}

// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
func (o ClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefOutput) Name() pulumi.StringOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRef) string { return v.Name }).(pulumi.StringOutput)
}

type ClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefPtrOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRef)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefPtrOutput) ToClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefPtrOutput() ClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefPtrOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefPtrOutput) ToClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefPtrOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRef] {
	return pulumix.Output[*ClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRef]{
		OutputState: o.OutputState,
	}
}

func (o ClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefPtrOutput) Elem() ClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRef) ClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRef {
		if v != nil {
			return *v
		}
		var ret ClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRef
		return ret
	}).(ClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefOutput)
}

// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
func (o ClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefPtrOutput) Key() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRef) *string {
		if v == nil {
			return nil
		}
		return v.Key
	}).(pulumi.StringPtrOutput)
}

// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
func (o ClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefPtrOutput) Name() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRef) *string {
		if v == nil {
			return nil
		}
		return &v.Name
	}).(pulumi.StringPtrOutput)
}

// Use the Microsoft Azure DNS API to manage DNS01 challenge records.
type ClusterIssuerSpecAcmeSolversDns01AzureDNS struct {
	// if both this and ClientSecret are left unset MSI will be used
	ClientID *string `pulumi:"clientID"`
	// if both this and ClientID are left unset MSI will be used
	ClientSecretSecretRef *ClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRef `pulumi:"clientSecretSecretRef"`
	// name of the Azure environment (default AzurePublicCloud)
	Environment *string `pulumi:"environment"`
	// name of the DNS zone that should be used
	HostedZoneName *string `pulumi:"hostedZoneName"`
	// managed identity configuration, can not be used at the same time as clientID, clientSecretSecretRef or tenantID
	ManagedIdentity *ClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentity `pulumi:"managedIdentity"`
	// resource group the DNS zone is located in
	ResourceGroupName string `pulumi:"resourceGroupName"`
	// ID of the Azure subscription
	SubscriptionID string `pulumi:"subscriptionID"`
	// when specifying ClientID and ClientSecret then this field is also needed
	TenantID *string `pulumi:"tenantID"`
}

// ClusterIssuerSpecAcmeSolversDns01AzureDNSInput is an input type that accepts ClusterIssuerSpecAcmeSolversDns01AzureDNSArgs and ClusterIssuerSpecAcmeSolversDns01AzureDNSOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversDns01AzureDNSInput` via:
//
//	ClusterIssuerSpecAcmeSolversDns01AzureDNSArgs{...}
type ClusterIssuerSpecAcmeSolversDns01AzureDNSInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversDns01AzureDNSOutput() ClusterIssuerSpecAcmeSolversDns01AzureDNSOutput
	ToClusterIssuerSpecAcmeSolversDns01AzureDNSOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversDns01AzureDNSOutput
}

// Use the Microsoft Azure DNS API to manage DNS01 challenge records.
type ClusterIssuerSpecAcmeSolversDns01AzureDNSArgs struct {
	// if both this and ClientSecret are left unset MSI will be used
	ClientID pulumi.StringPtrInput `pulumi:"clientID"`
	// if both this and ClientID are left unset MSI will be used
	ClientSecretSecretRef ClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefPtrInput `pulumi:"clientSecretSecretRef"`
	// name of the Azure environment (default AzurePublicCloud)
	Environment pulumi.StringPtrInput `pulumi:"environment"`
	// name of the DNS zone that should be used
	HostedZoneName pulumi.StringPtrInput `pulumi:"hostedZoneName"`
	// managed identity configuration, can not be used at the same time as clientID, clientSecretSecretRef or tenantID
	ManagedIdentity ClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityPtrInput `pulumi:"managedIdentity"`
	// resource group the DNS zone is located in
	ResourceGroupName pulumi.StringInput `pulumi:"resourceGroupName"`
	// ID of the Azure subscription
	SubscriptionID pulumi.StringInput `pulumi:"subscriptionID"`
	// when specifying ClientID and ClientSecret then this field is also needed
	TenantID pulumi.StringPtrInput `pulumi:"tenantID"`
}

func (ClusterIssuerSpecAcmeSolversDns01AzureDNSArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversDns01AzureDNS)(nil)).Elem()
}

func (i ClusterIssuerSpecAcmeSolversDns01AzureDNSArgs) ToClusterIssuerSpecAcmeSolversDns01AzureDNSOutput() ClusterIssuerSpecAcmeSolversDns01AzureDNSOutput {
	return i.ToClusterIssuerSpecAcmeSolversDns01AzureDNSOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversDns01AzureDNSArgs) ToClusterIssuerSpecAcmeSolversDns01AzureDNSOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01AzureDNSOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversDns01AzureDNSOutput)
}

func (i ClusterIssuerSpecAcmeSolversDns01AzureDNSArgs) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversDns01AzureDNS] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversDns01AzureDNS]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversDns01AzureDNSOutputWithContext(ctx).OutputState,
	}
}

func (i ClusterIssuerSpecAcmeSolversDns01AzureDNSArgs) ToClusterIssuerSpecAcmeSolversDns01AzureDNSPtrOutput() ClusterIssuerSpecAcmeSolversDns01AzureDNSPtrOutput {
	return i.ToClusterIssuerSpecAcmeSolversDns01AzureDNSPtrOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversDns01AzureDNSArgs) ToClusterIssuerSpecAcmeSolversDns01AzureDNSPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01AzureDNSPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversDns01AzureDNSOutput).ToClusterIssuerSpecAcmeSolversDns01AzureDNSPtrOutputWithContext(ctx)
}

// ClusterIssuerSpecAcmeSolversDns01AzureDNSPtrInput is an input type that accepts ClusterIssuerSpecAcmeSolversDns01AzureDNSArgs, ClusterIssuerSpecAcmeSolversDns01AzureDNSPtr and ClusterIssuerSpecAcmeSolversDns01AzureDNSPtrOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversDns01AzureDNSPtrInput` via:
//
//	        ClusterIssuerSpecAcmeSolversDns01AzureDNSArgs{...}
//
//	or:
//
//	        nil
type ClusterIssuerSpecAcmeSolversDns01AzureDNSPtrInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversDns01AzureDNSPtrOutput() ClusterIssuerSpecAcmeSolversDns01AzureDNSPtrOutput
	ToClusterIssuerSpecAcmeSolversDns01AzureDNSPtrOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversDns01AzureDNSPtrOutput
}

type clusterIssuerSpecAcmeSolversDns01AzureDNSPtrType ClusterIssuerSpecAcmeSolversDns01AzureDNSArgs

func ClusterIssuerSpecAcmeSolversDns01AzureDNSPtr(v *ClusterIssuerSpecAcmeSolversDns01AzureDNSArgs) ClusterIssuerSpecAcmeSolversDns01AzureDNSPtrInput {
	return (*clusterIssuerSpecAcmeSolversDns01AzureDNSPtrType)(v)
}

func (*clusterIssuerSpecAcmeSolversDns01AzureDNSPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecAcmeSolversDns01AzureDNS)(nil)).Elem()
}

func (i *clusterIssuerSpecAcmeSolversDns01AzureDNSPtrType) ToClusterIssuerSpecAcmeSolversDns01AzureDNSPtrOutput() ClusterIssuerSpecAcmeSolversDns01AzureDNSPtrOutput {
	return i.ToClusterIssuerSpecAcmeSolversDns01AzureDNSPtrOutputWithContext(context.Background())
}

func (i *clusterIssuerSpecAcmeSolversDns01AzureDNSPtrType) ToClusterIssuerSpecAcmeSolversDns01AzureDNSPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01AzureDNSPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversDns01AzureDNSPtrOutput)
}

func (i *clusterIssuerSpecAcmeSolversDns01AzureDNSPtrType) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecAcmeSolversDns01AzureDNS] {
	return pulumix.Output[*ClusterIssuerSpecAcmeSolversDns01AzureDNS]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversDns01AzureDNSPtrOutputWithContext(ctx).OutputState,
	}
}

// Use the Microsoft Azure DNS API to manage DNS01 challenge records.
type ClusterIssuerSpecAcmeSolversDns01AzureDNSOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversDns01AzureDNSOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversDns01AzureDNS)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversDns01AzureDNSOutput) ToClusterIssuerSpecAcmeSolversDns01AzureDNSOutput() ClusterIssuerSpecAcmeSolversDns01AzureDNSOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversDns01AzureDNSOutput) ToClusterIssuerSpecAcmeSolversDns01AzureDNSOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01AzureDNSOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversDns01AzureDNSOutput) ToClusterIssuerSpecAcmeSolversDns01AzureDNSPtrOutput() ClusterIssuerSpecAcmeSolversDns01AzureDNSPtrOutput {
	return o.ToClusterIssuerSpecAcmeSolversDns01AzureDNSPtrOutputWithContext(context.Background())
}

func (o ClusterIssuerSpecAcmeSolversDns01AzureDNSOutput) ToClusterIssuerSpecAcmeSolversDns01AzureDNSPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01AzureDNSPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v ClusterIssuerSpecAcmeSolversDns01AzureDNS) *ClusterIssuerSpecAcmeSolversDns01AzureDNS {
		return &v
	}).(ClusterIssuerSpecAcmeSolversDns01AzureDNSPtrOutput)
}

func (o ClusterIssuerSpecAcmeSolversDns01AzureDNSOutput) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversDns01AzureDNS] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversDns01AzureDNS]{
		OutputState: o.OutputState,
	}
}

// if both this and ClientSecret are left unset MSI will be used
func (o ClusterIssuerSpecAcmeSolversDns01AzureDNSOutput) ClientID() pulumi.StringPtrOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversDns01AzureDNS) *string { return v.ClientID }).(pulumi.StringPtrOutput)
}

// if both this and ClientID are left unset MSI will be used
func (o ClusterIssuerSpecAcmeSolversDns01AzureDNSOutput) ClientSecretSecretRef() ClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefPtrOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversDns01AzureDNS) *ClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRef {
		return v.ClientSecretSecretRef
	}).(ClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefPtrOutput)
}

// name of the Azure environment (default AzurePublicCloud)
func (o ClusterIssuerSpecAcmeSolversDns01AzureDNSOutput) Environment() pulumi.StringPtrOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversDns01AzureDNS) *string { return v.Environment }).(pulumi.StringPtrOutput)
}

// name of the DNS zone that should be used
func (o ClusterIssuerSpecAcmeSolversDns01AzureDNSOutput) HostedZoneName() pulumi.StringPtrOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversDns01AzureDNS) *string { return v.HostedZoneName }).(pulumi.StringPtrOutput)
}

// managed identity configuration, can not be used at the same time as clientID, clientSecretSecretRef or tenantID
func (o ClusterIssuerSpecAcmeSolversDns01AzureDNSOutput) ManagedIdentity() ClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityPtrOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversDns01AzureDNS) *ClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentity {
		return v.ManagedIdentity
	}).(ClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityPtrOutput)
}

// resource group the DNS zone is located in
func (o ClusterIssuerSpecAcmeSolversDns01AzureDNSOutput) ResourceGroupName() pulumi.StringOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversDns01AzureDNS) string { return v.ResourceGroupName }).(pulumi.StringOutput)
}

// ID of the Azure subscription
func (o ClusterIssuerSpecAcmeSolversDns01AzureDNSOutput) SubscriptionID() pulumi.StringOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversDns01AzureDNS) string { return v.SubscriptionID }).(pulumi.StringOutput)
}

// when specifying ClientID and ClientSecret then this field is also needed
func (o ClusterIssuerSpecAcmeSolversDns01AzureDNSOutput) TenantID() pulumi.StringPtrOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversDns01AzureDNS) *string { return v.TenantID }).(pulumi.StringPtrOutput)
}

type ClusterIssuerSpecAcmeSolversDns01AzureDNSPtrOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversDns01AzureDNSPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecAcmeSolversDns01AzureDNS)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversDns01AzureDNSPtrOutput) ToClusterIssuerSpecAcmeSolversDns01AzureDNSPtrOutput() ClusterIssuerSpecAcmeSolversDns01AzureDNSPtrOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversDns01AzureDNSPtrOutput) ToClusterIssuerSpecAcmeSolversDns01AzureDNSPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01AzureDNSPtrOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversDns01AzureDNSPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecAcmeSolversDns01AzureDNS] {
	return pulumix.Output[*ClusterIssuerSpecAcmeSolversDns01AzureDNS]{
		OutputState: o.OutputState,
	}
}

func (o ClusterIssuerSpecAcmeSolversDns01AzureDNSPtrOutput) Elem() ClusterIssuerSpecAcmeSolversDns01AzureDNSOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversDns01AzureDNS) ClusterIssuerSpecAcmeSolversDns01AzureDNS {
		if v != nil {
			return *v
		}
		var ret ClusterIssuerSpecAcmeSolversDns01AzureDNS
		return ret
	}).(ClusterIssuerSpecAcmeSolversDns01AzureDNSOutput)
}

// if both this and ClientSecret are left unset MSI will be used
func (o ClusterIssuerSpecAcmeSolversDns01AzureDNSPtrOutput) ClientID() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversDns01AzureDNS) *string {
		if v == nil {
			return nil
		}
		return v.ClientID
	}).(pulumi.StringPtrOutput)
}

// if both this and ClientID are left unset MSI will be used
func (o ClusterIssuerSpecAcmeSolversDns01AzureDNSPtrOutput) ClientSecretSecretRef() ClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversDns01AzureDNS) *ClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRef {
		if v == nil {
			return nil
		}
		return v.ClientSecretSecretRef
	}).(ClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefPtrOutput)
}

// name of the Azure environment (default AzurePublicCloud)
func (o ClusterIssuerSpecAcmeSolversDns01AzureDNSPtrOutput) Environment() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversDns01AzureDNS) *string {
		if v == nil {
			return nil
		}
		return v.Environment
	}).(pulumi.StringPtrOutput)
}

// name of the DNS zone that should be used
func (o ClusterIssuerSpecAcmeSolversDns01AzureDNSPtrOutput) HostedZoneName() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversDns01AzureDNS) *string {
		if v == nil {
			return nil
		}
		return v.HostedZoneName
	}).(pulumi.StringPtrOutput)
}

// managed identity configuration, can not be used at the same time as clientID, clientSecretSecretRef or tenantID
func (o ClusterIssuerSpecAcmeSolversDns01AzureDNSPtrOutput) ManagedIdentity() ClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversDns01AzureDNS) *ClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentity {
		if v == nil {
			return nil
		}
		return v.ManagedIdentity
	}).(ClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityPtrOutput)
}

// resource group the DNS zone is located in
func (o ClusterIssuerSpecAcmeSolversDns01AzureDNSPtrOutput) ResourceGroupName() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversDns01AzureDNS) *string {
		if v == nil {
			return nil
		}
		return &v.ResourceGroupName
	}).(pulumi.StringPtrOutput)
}

// ID of the Azure subscription
func (o ClusterIssuerSpecAcmeSolversDns01AzureDNSPtrOutput) SubscriptionID() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversDns01AzureDNS) *string {
		if v == nil {
			return nil
		}
		return &v.SubscriptionID
	}).(pulumi.StringPtrOutput)
}

// when specifying ClientID and ClientSecret then this field is also needed
func (o ClusterIssuerSpecAcmeSolversDns01AzureDNSPtrOutput) TenantID() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversDns01AzureDNS) *string {
		if v == nil {
			return nil
		}
		return v.TenantID
	}).(pulumi.StringPtrOutput)
}

// if both this and ClientID are left unset MSI will be used
type ClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRef struct {
	// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
	Key *string `pulumi:"key"`
	// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
	Name string `pulumi:"name"`
}

// ClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefInput is an input type that accepts ClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefArgs and ClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefInput` via:
//
//	ClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefArgs{...}
type ClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefOutput() ClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefOutput
	ToClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefOutput
}

// if both this and ClientID are left unset MSI will be used
type ClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefArgs struct {
	// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
	Key pulumi.StringPtrInput `pulumi:"key"`
	// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
	Name pulumi.StringInput `pulumi:"name"`
}

func (ClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRef)(nil)).Elem()
}

func (i ClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefArgs) ToClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefOutput() ClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefOutput {
	return i.ToClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefArgs) ToClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefOutput)
}

func (i ClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefArgs) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRef] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRef]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefOutputWithContext(ctx).OutputState,
	}
}

func (i ClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefArgs) ToClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefPtrOutput() ClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefPtrOutput {
	return i.ToClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefPtrOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefArgs) ToClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefOutput).ToClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefPtrOutputWithContext(ctx)
}

// ClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefPtrInput is an input type that accepts ClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefArgs, ClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefPtr and ClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefPtrOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefPtrInput` via:
//
//	        ClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefArgs{...}
//
//	or:
//
//	        nil
type ClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefPtrInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefPtrOutput() ClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefPtrOutput
	ToClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefPtrOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefPtrOutput
}

type clusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefPtrType ClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefArgs

func ClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefPtr(v *ClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefArgs) ClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefPtrInput {
	return (*clusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefPtrType)(v)
}

func (*clusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRef)(nil)).Elem()
}

func (i *clusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefPtrType) ToClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefPtrOutput() ClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefPtrOutput {
	return i.ToClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefPtrOutputWithContext(context.Background())
}

func (i *clusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefPtrType) ToClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefPtrOutput)
}

func (i *clusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefPtrType) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRef] {
	return pulumix.Output[*ClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRef]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefPtrOutputWithContext(ctx).OutputState,
	}
}

// if both this and ClientID are left unset MSI will be used
type ClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRef)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefOutput) ToClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefOutput() ClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefOutput) ToClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefOutput) ToClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefPtrOutput() ClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefPtrOutput {
	return o.ToClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefPtrOutputWithContext(context.Background())
}

func (o ClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefOutput) ToClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v ClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRef) *ClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRef {
		return &v
	}).(ClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefPtrOutput)
}

func (o ClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefOutput) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRef] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRef]{
		OutputState: o.OutputState,
	}
}

// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
func (o ClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefOutput) Key() pulumi.StringPtrOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRef) *string { return v.Key }).(pulumi.StringPtrOutput)
}

// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
func (o ClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefOutput) Name() pulumi.StringOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRef) string { return v.Name }).(pulumi.StringOutput)
}

type ClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefPtrOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRef)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefPtrOutput) ToClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefPtrOutput() ClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefPtrOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefPtrOutput) ToClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefPtrOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRef] {
	return pulumix.Output[*ClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRef]{
		OutputState: o.OutputState,
	}
}

func (o ClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefPtrOutput) Elem() ClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRef) ClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRef {
		if v != nil {
			return *v
		}
		var ret ClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRef
		return ret
	}).(ClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefOutput)
}

// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
func (o ClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefPtrOutput) Key() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRef) *string {
		if v == nil {
			return nil
		}
		return v.Key
	}).(pulumi.StringPtrOutput)
}

// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
func (o ClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefPtrOutput) Name() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRef) *string {
		if v == nil {
			return nil
		}
		return &v.Name
	}).(pulumi.StringPtrOutput)
}

// managed identity configuration, can not be used at the same time as clientID, clientSecretSecretRef or tenantID
type ClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentity struct {
	// client ID of the managed identity, can not be used at the same time as resourceID
	ClientID *string `pulumi:"clientID"`
	// resource ID of the managed identity, can not be used at the same time as clientID
	ResourceID *string `pulumi:"resourceID"`
}

// ClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityInput is an input type that accepts ClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityArgs and ClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityInput` via:
//
//	ClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityArgs{...}
type ClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityOutput() ClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityOutput
	ToClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityOutput
}

// managed identity configuration, can not be used at the same time as clientID, clientSecretSecretRef or tenantID
type ClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityArgs struct {
	// client ID of the managed identity, can not be used at the same time as resourceID
	ClientID pulumi.StringPtrInput `pulumi:"clientID"`
	// resource ID of the managed identity, can not be used at the same time as clientID
	ResourceID pulumi.StringPtrInput `pulumi:"resourceID"`
}

func (ClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentity)(nil)).Elem()
}

func (i ClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityArgs) ToClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityOutput() ClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityOutput {
	return i.ToClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityArgs) ToClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityOutput)
}

func (i ClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityArgs) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentity] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentity]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityOutputWithContext(ctx).OutputState,
	}
}

func (i ClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityArgs) ToClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityPtrOutput() ClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityPtrOutput {
	return i.ToClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityPtrOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityArgs) ToClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityOutput).ToClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityPtrOutputWithContext(ctx)
}

// ClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityPtrInput is an input type that accepts ClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityArgs, ClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityPtr and ClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityPtrOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityPtrInput` via:
//
//	        ClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityArgs{...}
//
//	or:
//
//	        nil
type ClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityPtrInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityPtrOutput() ClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityPtrOutput
	ToClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityPtrOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityPtrOutput
}

type clusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityPtrType ClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityArgs

func ClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityPtr(v *ClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityArgs) ClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityPtrInput {
	return (*clusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityPtrType)(v)
}

func (*clusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentity)(nil)).Elem()
}

func (i *clusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityPtrType) ToClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityPtrOutput() ClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityPtrOutput {
	return i.ToClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityPtrOutputWithContext(context.Background())
}

func (i *clusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityPtrType) ToClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityPtrOutput)
}

func (i *clusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityPtrType) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentity] {
	return pulumix.Output[*ClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentity]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityPtrOutputWithContext(ctx).OutputState,
	}
}

// managed identity configuration, can not be used at the same time as clientID, clientSecretSecretRef or tenantID
type ClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentity)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityOutput) ToClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityOutput() ClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityOutput) ToClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityOutput) ToClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityPtrOutput() ClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityPtrOutput {
	return o.ToClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityPtrOutputWithContext(context.Background())
}

func (o ClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityOutput) ToClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v ClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentity) *ClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentity {
		return &v
	}).(ClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityPtrOutput)
}

func (o ClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityOutput) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentity] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentity]{
		OutputState: o.OutputState,
	}
}

// client ID of the managed identity, can not be used at the same time as resourceID
func (o ClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityOutput) ClientID() pulumi.StringPtrOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentity) *string { return v.ClientID }).(pulumi.StringPtrOutput)
}

// resource ID of the managed identity, can not be used at the same time as clientID
func (o ClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityOutput) ResourceID() pulumi.StringPtrOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentity) *string { return v.ResourceID }).(pulumi.StringPtrOutput)
}

type ClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityPtrOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentity)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityPtrOutput) ToClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityPtrOutput() ClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityPtrOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityPtrOutput) ToClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityPtrOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentity] {
	return pulumix.Output[*ClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentity]{
		OutputState: o.OutputState,
	}
}

func (o ClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityPtrOutput) Elem() ClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentity) ClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentity {
		if v != nil {
			return *v
		}
		var ret ClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentity
		return ret
	}).(ClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityOutput)
}

// client ID of the managed identity, can not be used at the same time as resourceID
func (o ClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityPtrOutput) ClientID() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentity) *string {
		if v == nil {
			return nil
		}
		return v.ClientID
	}).(pulumi.StringPtrOutput)
}

// resource ID of the managed identity, can not be used at the same time as clientID
func (o ClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityPtrOutput) ResourceID() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentity) *string {
		if v == nil {
			return nil
		}
		return v.ResourceID
	}).(pulumi.StringPtrOutput)
}

// Use the Google Cloud DNS API to manage DNS01 challenge records.
type ClusterIssuerSpecAcmeSolversDns01CloudDNS struct {
	// HostedZoneName is an optional field that tells cert-manager in which Cloud DNS zone the challenge record has to be created. If left empty cert-manager will automatically choose a zone.
	HostedZoneName *string `pulumi:"hostedZoneName"`
	Project        string  `pulumi:"project"`
	// A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.
	ServiceAccountSecretRef *ClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRef `pulumi:"serviceAccountSecretRef"`
}

// ClusterIssuerSpecAcmeSolversDns01CloudDNSInput is an input type that accepts ClusterIssuerSpecAcmeSolversDns01CloudDNSArgs and ClusterIssuerSpecAcmeSolversDns01CloudDNSOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversDns01CloudDNSInput` via:
//
//	ClusterIssuerSpecAcmeSolversDns01CloudDNSArgs{...}
type ClusterIssuerSpecAcmeSolversDns01CloudDNSInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversDns01CloudDNSOutput() ClusterIssuerSpecAcmeSolversDns01CloudDNSOutput
	ToClusterIssuerSpecAcmeSolversDns01CloudDNSOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversDns01CloudDNSOutput
}

// Use the Google Cloud DNS API to manage DNS01 challenge records.
type ClusterIssuerSpecAcmeSolversDns01CloudDNSArgs struct {
	// HostedZoneName is an optional field that tells cert-manager in which Cloud DNS zone the challenge record has to be created. If left empty cert-manager will automatically choose a zone.
	HostedZoneName pulumi.StringPtrInput `pulumi:"hostedZoneName"`
	Project        pulumi.StringInput    `pulumi:"project"`
	// A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.
	ServiceAccountSecretRef ClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefPtrInput `pulumi:"serviceAccountSecretRef"`
}

func (ClusterIssuerSpecAcmeSolversDns01CloudDNSArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversDns01CloudDNS)(nil)).Elem()
}

func (i ClusterIssuerSpecAcmeSolversDns01CloudDNSArgs) ToClusterIssuerSpecAcmeSolversDns01CloudDNSOutput() ClusterIssuerSpecAcmeSolversDns01CloudDNSOutput {
	return i.ToClusterIssuerSpecAcmeSolversDns01CloudDNSOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversDns01CloudDNSArgs) ToClusterIssuerSpecAcmeSolversDns01CloudDNSOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01CloudDNSOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversDns01CloudDNSOutput)
}

func (i ClusterIssuerSpecAcmeSolversDns01CloudDNSArgs) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversDns01CloudDNS] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversDns01CloudDNS]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversDns01CloudDNSOutputWithContext(ctx).OutputState,
	}
}

func (i ClusterIssuerSpecAcmeSolversDns01CloudDNSArgs) ToClusterIssuerSpecAcmeSolversDns01CloudDNSPtrOutput() ClusterIssuerSpecAcmeSolversDns01CloudDNSPtrOutput {
	return i.ToClusterIssuerSpecAcmeSolversDns01CloudDNSPtrOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversDns01CloudDNSArgs) ToClusterIssuerSpecAcmeSolversDns01CloudDNSPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01CloudDNSPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversDns01CloudDNSOutput).ToClusterIssuerSpecAcmeSolversDns01CloudDNSPtrOutputWithContext(ctx)
}

// ClusterIssuerSpecAcmeSolversDns01CloudDNSPtrInput is an input type that accepts ClusterIssuerSpecAcmeSolversDns01CloudDNSArgs, ClusterIssuerSpecAcmeSolversDns01CloudDNSPtr and ClusterIssuerSpecAcmeSolversDns01CloudDNSPtrOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversDns01CloudDNSPtrInput` via:
//
//	        ClusterIssuerSpecAcmeSolversDns01CloudDNSArgs{...}
//
//	or:
//
//	        nil
type ClusterIssuerSpecAcmeSolversDns01CloudDNSPtrInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversDns01CloudDNSPtrOutput() ClusterIssuerSpecAcmeSolversDns01CloudDNSPtrOutput
	ToClusterIssuerSpecAcmeSolversDns01CloudDNSPtrOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversDns01CloudDNSPtrOutput
}

type clusterIssuerSpecAcmeSolversDns01CloudDNSPtrType ClusterIssuerSpecAcmeSolversDns01CloudDNSArgs

func ClusterIssuerSpecAcmeSolversDns01CloudDNSPtr(v *ClusterIssuerSpecAcmeSolversDns01CloudDNSArgs) ClusterIssuerSpecAcmeSolversDns01CloudDNSPtrInput {
	return (*clusterIssuerSpecAcmeSolversDns01CloudDNSPtrType)(v)
}

func (*clusterIssuerSpecAcmeSolversDns01CloudDNSPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecAcmeSolversDns01CloudDNS)(nil)).Elem()
}

func (i *clusterIssuerSpecAcmeSolversDns01CloudDNSPtrType) ToClusterIssuerSpecAcmeSolversDns01CloudDNSPtrOutput() ClusterIssuerSpecAcmeSolversDns01CloudDNSPtrOutput {
	return i.ToClusterIssuerSpecAcmeSolversDns01CloudDNSPtrOutputWithContext(context.Background())
}

func (i *clusterIssuerSpecAcmeSolversDns01CloudDNSPtrType) ToClusterIssuerSpecAcmeSolversDns01CloudDNSPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01CloudDNSPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversDns01CloudDNSPtrOutput)
}

func (i *clusterIssuerSpecAcmeSolversDns01CloudDNSPtrType) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecAcmeSolversDns01CloudDNS] {
	return pulumix.Output[*ClusterIssuerSpecAcmeSolversDns01CloudDNS]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversDns01CloudDNSPtrOutputWithContext(ctx).OutputState,
	}
}

// Use the Google Cloud DNS API to manage DNS01 challenge records.
type ClusterIssuerSpecAcmeSolversDns01CloudDNSOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversDns01CloudDNSOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversDns01CloudDNS)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversDns01CloudDNSOutput) ToClusterIssuerSpecAcmeSolversDns01CloudDNSOutput() ClusterIssuerSpecAcmeSolversDns01CloudDNSOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversDns01CloudDNSOutput) ToClusterIssuerSpecAcmeSolversDns01CloudDNSOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01CloudDNSOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversDns01CloudDNSOutput) ToClusterIssuerSpecAcmeSolversDns01CloudDNSPtrOutput() ClusterIssuerSpecAcmeSolversDns01CloudDNSPtrOutput {
	return o.ToClusterIssuerSpecAcmeSolversDns01CloudDNSPtrOutputWithContext(context.Background())
}

func (o ClusterIssuerSpecAcmeSolversDns01CloudDNSOutput) ToClusterIssuerSpecAcmeSolversDns01CloudDNSPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01CloudDNSPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v ClusterIssuerSpecAcmeSolversDns01CloudDNS) *ClusterIssuerSpecAcmeSolversDns01CloudDNS {
		return &v
	}).(ClusterIssuerSpecAcmeSolversDns01CloudDNSPtrOutput)
}

func (o ClusterIssuerSpecAcmeSolversDns01CloudDNSOutput) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversDns01CloudDNS] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversDns01CloudDNS]{
		OutputState: o.OutputState,
	}
}

// HostedZoneName is an optional field that tells cert-manager in which Cloud DNS zone the challenge record has to be created. If left empty cert-manager will automatically choose a zone.
func (o ClusterIssuerSpecAcmeSolversDns01CloudDNSOutput) HostedZoneName() pulumi.StringPtrOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversDns01CloudDNS) *string { return v.HostedZoneName }).(pulumi.StringPtrOutput)
}

func (o ClusterIssuerSpecAcmeSolversDns01CloudDNSOutput) Project() pulumi.StringOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversDns01CloudDNS) string { return v.Project }).(pulumi.StringOutput)
}

// A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.
func (o ClusterIssuerSpecAcmeSolversDns01CloudDNSOutput) ServiceAccountSecretRef() ClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefPtrOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversDns01CloudDNS) *ClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRef {
		return v.ServiceAccountSecretRef
	}).(ClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefPtrOutput)
}

type ClusterIssuerSpecAcmeSolversDns01CloudDNSPtrOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversDns01CloudDNSPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecAcmeSolversDns01CloudDNS)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversDns01CloudDNSPtrOutput) ToClusterIssuerSpecAcmeSolversDns01CloudDNSPtrOutput() ClusterIssuerSpecAcmeSolversDns01CloudDNSPtrOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversDns01CloudDNSPtrOutput) ToClusterIssuerSpecAcmeSolversDns01CloudDNSPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01CloudDNSPtrOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversDns01CloudDNSPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecAcmeSolversDns01CloudDNS] {
	return pulumix.Output[*ClusterIssuerSpecAcmeSolversDns01CloudDNS]{
		OutputState: o.OutputState,
	}
}

func (o ClusterIssuerSpecAcmeSolversDns01CloudDNSPtrOutput) Elem() ClusterIssuerSpecAcmeSolversDns01CloudDNSOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversDns01CloudDNS) ClusterIssuerSpecAcmeSolversDns01CloudDNS {
		if v != nil {
			return *v
		}
		var ret ClusterIssuerSpecAcmeSolversDns01CloudDNS
		return ret
	}).(ClusterIssuerSpecAcmeSolversDns01CloudDNSOutput)
}

// HostedZoneName is an optional field that tells cert-manager in which Cloud DNS zone the challenge record has to be created. If left empty cert-manager will automatically choose a zone.
func (o ClusterIssuerSpecAcmeSolversDns01CloudDNSPtrOutput) HostedZoneName() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversDns01CloudDNS) *string {
		if v == nil {
			return nil
		}
		return v.HostedZoneName
	}).(pulumi.StringPtrOutput)
}

func (o ClusterIssuerSpecAcmeSolversDns01CloudDNSPtrOutput) Project() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversDns01CloudDNS) *string {
		if v == nil {
			return nil
		}
		return &v.Project
	}).(pulumi.StringPtrOutput)
}

// A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.
func (o ClusterIssuerSpecAcmeSolversDns01CloudDNSPtrOutput) ServiceAccountSecretRef() ClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversDns01CloudDNS) *ClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRef {
		if v == nil {
			return nil
		}
		return v.ServiceAccountSecretRef
	}).(ClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefPtrOutput)
}

// A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.
type ClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRef struct {
	// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
	Key *string `pulumi:"key"`
	// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
	Name string `pulumi:"name"`
}

// ClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefInput is an input type that accepts ClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefArgs and ClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefInput` via:
//
//	ClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefArgs{...}
type ClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefOutput() ClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefOutput
	ToClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefOutput
}

// A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.
type ClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefArgs struct {
	// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
	Key pulumi.StringPtrInput `pulumi:"key"`
	// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
	Name pulumi.StringInput `pulumi:"name"`
}

func (ClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRef)(nil)).Elem()
}

func (i ClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefArgs) ToClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefOutput() ClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefOutput {
	return i.ToClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefArgs) ToClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefOutput)
}

func (i ClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefArgs) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRef] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRef]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefOutputWithContext(ctx).OutputState,
	}
}

func (i ClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefArgs) ToClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefPtrOutput() ClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefPtrOutput {
	return i.ToClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefPtrOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefArgs) ToClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefOutput).ToClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefPtrOutputWithContext(ctx)
}

// ClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefPtrInput is an input type that accepts ClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefArgs, ClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefPtr and ClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefPtrOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefPtrInput` via:
//
//	        ClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefArgs{...}
//
//	or:
//
//	        nil
type ClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefPtrInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefPtrOutput() ClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefPtrOutput
	ToClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefPtrOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefPtrOutput
}

type clusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefPtrType ClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefArgs

func ClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefPtr(v *ClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefArgs) ClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefPtrInput {
	return (*clusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefPtrType)(v)
}

func (*clusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRef)(nil)).Elem()
}

func (i *clusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefPtrType) ToClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefPtrOutput() ClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefPtrOutput {
	return i.ToClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefPtrOutputWithContext(context.Background())
}

func (i *clusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefPtrType) ToClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefPtrOutput)
}

func (i *clusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefPtrType) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRef] {
	return pulumix.Output[*ClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRef]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefPtrOutputWithContext(ctx).OutputState,
	}
}

// A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.
type ClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRef)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefOutput) ToClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefOutput() ClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefOutput) ToClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefOutput) ToClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefPtrOutput() ClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefPtrOutput {
	return o.ToClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefPtrOutputWithContext(context.Background())
}

func (o ClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefOutput) ToClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v ClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRef) *ClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRef {
		return &v
	}).(ClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefPtrOutput)
}

func (o ClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefOutput) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRef] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRef]{
		OutputState: o.OutputState,
	}
}

// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
func (o ClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefOutput) Key() pulumi.StringPtrOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRef) *string { return v.Key }).(pulumi.StringPtrOutput)
}

// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
func (o ClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefOutput) Name() pulumi.StringOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRef) string { return v.Name }).(pulumi.StringOutput)
}

type ClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefPtrOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRef)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefPtrOutput) ToClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefPtrOutput() ClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefPtrOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefPtrOutput) ToClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefPtrOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRef] {
	return pulumix.Output[*ClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRef]{
		OutputState: o.OutputState,
	}
}

func (o ClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefPtrOutput) Elem() ClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRef) ClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRef {
		if v != nil {
			return *v
		}
		var ret ClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRef
		return ret
	}).(ClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefOutput)
}

// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
func (o ClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefPtrOutput) Key() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRef) *string {
		if v == nil {
			return nil
		}
		return v.Key
	}).(pulumi.StringPtrOutput)
}

// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
func (o ClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefPtrOutput) Name() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRef) *string {
		if v == nil {
			return nil
		}
		return &v.Name
	}).(pulumi.StringPtrOutput)
}

// Use the Cloudflare API to manage DNS01 challenge records.
type ClusterIssuerSpecAcmeSolversDns01Cloudflare struct {
	// API key to use to authenticate with Cloudflare. Note: using an API token to authenticate is now the recommended method as it allows greater control of permissions.
	ApiKeySecretRef *ClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRef `pulumi:"apiKeySecretRef"`
	// API token used to authenticate with Cloudflare.
	ApiTokenSecretRef *ClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRef `pulumi:"apiTokenSecretRef"`
	// Email of the account, only required when using API key based authentication.
	Email *string `pulumi:"email"`
}

// ClusterIssuerSpecAcmeSolversDns01CloudflareInput is an input type that accepts ClusterIssuerSpecAcmeSolversDns01CloudflareArgs and ClusterIssuerSpecAcmeSolversDns01CloudflareOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversDns01CloudflareInput` via:
//
//	ClusterIssuerSpecAcmeSolversDns01CloudflareArgs{...}
type ClusterIssuerSpecAcmeSolversDns01CloudflareInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversDns01CloudflareOutput() ClusterIssuerSpecAcmeSolversDns01CloudflareOutput
	ToClusterIssuerSpecAcmeSolversDns01CloudflareOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversDns01CloudflareOutput
}

// Use the Cloudflare API to manage DNS01 challenge records.
type ClusterIssuerSpecAcmeSolversDns01CloudflareArgs struct {
	// API key to use to authenticate with Cloudflare. Note: using an API token to authenticate is now the recommended method as it allows greater control of permissions.
	ApiKeySecretRef ClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefPtrInput `pulumi:"apiKeySecretRef"`
	// API token used to authenticate with Cloudflare.
	ApiTokenSecretRef ClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefPtrInput `pulumi:"apiTokenSecretRef"`
	// Email of the account, only required when using API key based authentication.
	Email pulumi.StringPtrInput `pulumi:"email"`
}

func (ClusterIssuerSpecAcmeSolversDns01CloudflareArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversDns01Cloudflare)(nil)).Elem()
}

func (i ClusterIssuerSpecAcmeSolversDns01CloudflareArgs) ToClusterIssuerSpecAcmeSolversDns01CloudflareOutput() ClusterIssuerSpecAcmeSolversDns01CloudflareOutput {
	return i.ToClusterIssuerSpecAcmeSolversDns01CloudflareOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversDns01CloudflareArgs) ToClusterIssuerSpecAcmeSolversDns01CloudflareOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01CloudflareOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversDns01CloudflareOutput)
}

func (i ClusterIssuerSpecAcmeSolversDns01CloudflareArgs) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversDns01Cloudflare] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversDns01Cloudflare]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversDns01CloudflareOutputWithContext(ctx).OutputState,
	}
}

func (i ClusterIssuerSpecAcmeSolversDns01CloudflareArgs) ToClusterIssuerSpecAcmeSolversDns01CloudflarePtrOutput() ClusterIssuerSpecAcmeSolversDns01CloudflarePtrOutput {
	return i.ToClusterIssuerSpecAcmeSolversDns01CloudflarePtrOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversDns01CloudflareArgs) ToClusterIssuerSpecAcmeSolversDns01CloudflarePtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01CloudflarePtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversDns01CloudflareOutput).ToClusterIssuerSpecAcmeSolversDns01CloudflarePtrOutputWithContext(ctx)
}

// ClusterIssuerSpecAcmeSolversDns01CloudflarePtrInput is an input type that accepts ClusterIssuerSpecAcmeSolversDns01CloudflareArgs, ClusterIssuerSpecAcmeSolversDns01CloudflarePtr and ClusterIssuerSpecAcmeSolversDns01CloudflarePtrOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversDns01CloudflarePtrInput` via:
//
//	        ClusterIssuerSpecAcmeSolversDns01CloudflareArgs{...}
//
//	or:
//
//	        nil
type ClusterIssuerSpecAcmeSolversDns01CloudflarePtrInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversDns01CloudflarePtrOutput() ClusterIssuerSpecAcmeSolversDns01CloudflarePtrOutput
	ToClusterIssuerSpecAcmeSolversDns01CloudflarePtrOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversDns01CloudflarePtrOutput
}

type clusterIssuerSpecAcmeSolversDns01CloudflarePtrType ClusterIssuerSpecAcmeSolversDns01CloudflareArgs

func ClusterIssuerSpecAcmeSolversDns01CloudflarePtr(v *ClusterIssuerSpecAcmeSolversDns01CloudflareArgs) ClusterIssuerSpecAcmeSolversDns01CloudflarePtrInput {
	return (*clusterIssuerSpecAcmeSolversDns01CloudflarePtrType)(v)
}

func (*clusterIssuerSpecAcmeSolversDns01CloudflarePtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecAcmeSolversDns01Cloudflare)(nil)).Elem()
}

func (i *clusterIssuerSpecAcmeSolversDns01CloudflarePtrType) ToClusterIssuerSpecAcmeSolversDns01CloudflarePtrOutput() ClusterIssuerSpecAcmeSolversDns01CloudflarePtrOutput {
	return i.ToClusterIssuerSpecAcmeSolversDns01CloudflarePtrOutputWithContext(context.Background())
}

func (i *clusterIssuerSpecAcmeSolversDns01CloudflarePtrType) ToClusterIssuerSpecAcmeSolversDns01CloudflarePtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01CloudflarePtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversDns01CloudflarePtrOutput)
}

func (i *clusterIssuerSpecAcmeSolversDns01CloudflarePtrType) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecAcmeSolversDns01Cloudflare] {
	return pulumix.Output[*ClusterIssuerSpecAcmeSolversDns01Cloudflare]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversDns01CloudflarePtrOutputWithContext(ctx).OutputState,
	}
}

// Use the Cloudflare API to manage DNS01 challenge records.
type ClusterIssuerSpecAcmeSolversDns01CloudflareOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversDns01CloudflareOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversDns01Cloudflare)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversDns01CloudflareOutput) ToClusterIssuerSpecAcmeSolversDns01CloudflareOutput() ClusterIssuerSpecAcmeSolversDns01CloudflareOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversDns01CloudflareOutput) ToClusterIssuerSpecAcmeSolversDns01CloudflareOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01CloudflareOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversDns01CloudflareOutput) ToClusterIssuerSpecAcmeSolversDns01CloudflarePtrOutput() ClusterIssuerSpecAcmeSolversDns01CloudflarePtrOutput {
	return o.ToClusterIssuerSpecAcmeSolversDns01CloudflarePtrOutputWithContext(context.Background())
}

func (o ClusterIssuerSpecAcmeSolversDns01CloudflareOutput) ToClusterIssuerSpecAcmeSolversDns01CloudflarePtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01CloudflarePtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v ClusterIssuerSpecAcmeSolversDns01Cloudflare) *ClusterIssuerSpecAcmeSolversDns01Cloudflare {
		return &v
	}).(ClusterIssuerSpecAcmeSolversDns01CloudflarePtrOutput)
}

func (o ClusterIssuerSpecAcmeSolversDns01CloudflareOutput) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversDns01Cloudflare] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversDns01Cloudflare]{
		OutputState: o.OutputState,
	}
}

// API key to use to authenticate with Cloudflare. Note: using an API token to authenticate is now the recommended method as it allows greater control of permissions.
func (o ClusterIssuerSpecAcmeSolversDns01CloudflareOutput) ApiKeySecretRef() ClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefPtrOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversDns01Cloudflare) *ClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRef {
		return v.ApiKeySecretRef
	}).(ClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefPtrOutput)
}

// API token used to authenticate with Cloudflare.
func (o ClusterIssuerSpecAcmeSolversDns01CloudflareOutput) ApiTokenSecretRef() ClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefPtrOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversDns01Cloudflare) *ClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRef {
		return v.ApiTokenSecretRef
	}).(ClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefPtrOutput)
}

// Email of the account, only required when using API key based authentication.
func (o ClusterIssuerSpecAcmeSolversDns01CloudflareOutput) Email() pulumi.StringPtrOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversDns01Cloudflare) *string { return v.Email }).(pulumi.StringPtrOutput)
}

type ClusterIssuerSpecAcmeSolversDns01CloudflarePtrOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversDns01CloudflarePtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecAcmeSolversDns01Cloudflare)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversDns01CloudflarePtrOutput) ToClusterIssuerSpecAcmeSolversDns01CloudflarePtrOutput() ClusterIssuerSpecAcmeSolversDns01CloudflarePtrOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversDns01CloudflarePtrOutput) ToClusterIssuerSpecAcmeSolversDns01CloudflarePtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01CloudflarePtrOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversDns01CloudflarePtrOutput) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecAcmeSolversDns01Cloudflare] {
	return pulumix.Output[*ClusterIssuerSpecAcmeSolversDns01Cloudflare]{
		OutputState: o.OutputState,
	}
}

func (o ClusterIssuerSpecAcmeSolversDns01CloudflarePtrOutput) Elem() ClusterIssuerSpecAcmeSolversDns01CloudflareOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversDns01Cloudflare) ClusterIssuerSpecAcmeSolversDns01Cloudflare {
		if v != nil {
			return *v
		}
		var ret ClusterIssuerSpecAcmeSolversDns01Cloudflare
		return ret
	}).(ClusterIssuerSpecAcmeSolversDns01CloudflareOutput)
}

// API key to use to authenticate with Cloudflare. Note: using an API token to authenticate is now the recommended method as it allows greater control of permissions.
func (o ClusterIssuerSpecAcmeSolversDns01CloudflarePtrOutput) ApiKeySecretRef() ClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversDns01Cloudflare) *ClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRef {
		if v == nil {
			return nil
		}
		return v.ApiKeySecretRef
	}).(ClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefPtrOutput)
}

// API token used to authenticate with Cloudflare.
func (o ClusterIssuerSpecAcmeSolversDns01CloudflarePtrOutput) ApiTokenSecretRef() ClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversDns01Cloudflare) *ClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRef {
		if v == nil {
			return nil
		}
		return v.ApiTokenSecretRef
	}).(ClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefPtrOutput)
}

// Email of the account, only required when using API key based authentication.
func (o ClusterIssuerSpecAcmeSolversDns01CloudflarePtrOutput) Email() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversDns01Cloudflare) *string {
		if v == nil {
			return nil
		}
		return v.Email
	}).(pulumi.StringPtrOutput)
}

// API key to use to authenticate with Cloudflare. Note: using an API token to authenticate is now the recommended method as it allows greater control of permissions.
type ClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRef struct {
	// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
	Key *string `pulumi:"key"`
	// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
	Name string `pulumi:"name"`
}

// ClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefInput is an input type that accepts ClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefArgs and ClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefInput` via:
//
//	ClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefArgs{...}
type ClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefOutput() ClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefOutput
	ToClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefOutput
}

// API key to use to authenticate with Cloudflare. Note: using an API token to authenticate is now the recommended method as it allows greater control of permissions.
type ClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefArgs struct {
	// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
	Key pulumi.StringPtrInput `pulumi:"key"`
	// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
	Name pulumi.StringInput `pulumi:"name"`
}

func (ClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRef)(nil)).Elem()
}

func (i ClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefArgs) ToClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefOutput() ClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefOutput {
	return i.ToClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefArgs) ToClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefOutput)
}

func (i ClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefArgs) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRef] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRef]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefOutputWithContext(ctx).OutputState,
	}
}

func (i ClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefArgs) ToClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefPtrOutput() ClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefPtrOutput {
	return i.ToClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefPtrOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefArgs) ToClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefOutput).ToClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefPtrOutputWithContext(ctx)
}

// ClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefPtrInput is an input type that accepts ClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefArgs, ClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefPtr and ClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefPtrOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefPtrInput` via:
//
//	        ClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefArgs{...}
//
//	or:
//
//	        nil
type ClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefPtrInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefPtrOutput() ClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefPtrOutput
	ToClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefPtrOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefPtrOutput
}

type clusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefPtrType ClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefArgs

func ClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefPtr(v *ClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefArgs) ClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefPtrInput {
	return (*clusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefPtrType)(v)
}

func (*clusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRef)(nil)).Elem()
}

func (i *clusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefPtrType) ToClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefPtrOutput() ClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefPtrOutput {
	return i.ToClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefPtrOutputWithContext(context.Background())
}

func (i *clusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefPtrType) ToClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefPtrOutput)
}

func (i *clusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefPtrType) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRef] {
	return pulumix.Output[*ClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRef]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefPtrOutputWithContext(ctx).OutputState,
	}
}

// API key to use to authenticate with Cloudflare. Note: using an API token to authenticate is now the recommended method as it allows greater control of permissions.
type ClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRef)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefOutput) ToClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefOutput() ClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefOutput) ToClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefOutput) ToClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefPtrOutput() ClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefPtrOutput {
	return o.ToClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefPtrOutputWithContext(context.Background())
}

func (o ClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefOutput) ToClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v ClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRef) *ClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRef {
		return &v
	}).(ClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefPtrOutput)
}

func (o ClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefOutput) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRef] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRef]{
		OutputState: o.OutputState,
	}
}

// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
func (o ClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefOutput) Key() pulumi.StringPtrOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRef) *string { return v.Key }).(pulumi.StringPtrOutput)
}

// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
func (o ClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefOutput) Name() pulumi.StringOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRef) string { return v.Name }).(pulumi.StringOutput)
}

type ClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefPtrOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRef)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefPtrOutput) ToClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefPtrOutput() ClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefPtrOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefPtrOutput) ToClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefPtrOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRef] {
	return pulumix.Output[*ClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRef]{
		OutputState: o.OutputState,
	}
}

func (o ClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefPtrOutput) Elem() ClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRef) ClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRef {
		if v != nil {
			return *v
		}
		var ret ClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRef
		return ret
	}).(ClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefOutput)
}

// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
func (o ClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefPtrOutput) Key() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRef) *string {
		if v == nil {
			return nil
		}
		return v.Key
	}).(pulumi.StringPtrOutput)
}

// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
func (o ClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefPtrOutput) Name() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRef) *string {
		if v == nil {
			return nil
		}
		return &v.Name
	}).(pulumi.StringPtrOutput)
}

// API token used to authenticate with Cloudflare.
type ClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRef struct {
	// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
	Key *string `pulumi:"key"`
	// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
	Name string `pulumi:"name"`
}

// ClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefInput is an input type that accepts ClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefArgs and ClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefInput` via:
//
//	ClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefArgs{...}
type ClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefOutput() ClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefOutput
	ToClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefOutput
}

// API token used to authenticate with Cloudflare.
type ClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefArgs struct {
	// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
	Key pulumi.StringPtrInput `pulumi:"key"`
	// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
	Name pulumi.StringInput `pulumi:"name"`
}

func (ClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRef)(nil)).Elem()
}

func (i ClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefArgs) ToClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefOutput() ClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefOutput {
	return i.ToClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefArgs) ToClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefOutput)
}

func (i ClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefArgs) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRef] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRef]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefOutputWithContext(ctx).OutputState,
	}
}

func (i ClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefArgs) ToClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefPtrOutput() ClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefPtrOutput {
	return i.ToClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefPtrOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefArgs) ToClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefOutput).ToClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefPtrOutputWithContext(ctx)
}

// ClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefPtrInput is an input type that accepts ClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefArgs, ClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefPtr and ClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefPtrOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefPtrInput` via:
//
//	        ClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefArgs{...}
//
//	or:
//
//	        nil
type ClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefPtrInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefPtrOutput() ClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefPtrOutput
	ToClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefPtrOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefPtrOutput
}

type clusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefPtrType ClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefArgs

func ClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefPtr(v *ClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefArgs) ClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefPtrInput {
	return (*clusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefPtrType)(v)
}

func (*clusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRef)(nil)).Elem()
}

func (i *clusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefPtrType) ToClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefPtrOutput() ClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefPtrOutput {
	return i.ToClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefPtrOutputWithContext(context.Background())
}

func (i *clusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefPtrType) ToClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefPtrOutput)
}

func (i *clusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefPtrType) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRef] {
	return pulumix.Output[*ClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRef]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefPtrOutputWithContext(ctx).OutputState,
	}
}

// API token used to authenticate with Cloudflare.
type ClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRef)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefOutput) ToClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefOutput() ClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefOutput) ToClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefOutput) ToClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefPtrOutput() ClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefPtrOutput {
	return o.ToClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefPtrOutputWithContext(context.Background())
}

func (o ClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefOutput) ToClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v ClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRef) *ClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRef {
		return &v
	}).(ClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefPtrOutput)
}

func (o ClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefOutput) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRef] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRef]{
		OutputState: o.OutputState,
	}
}

// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
func (o ClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefOutput) Key() pulumi.StringPtrOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRef) *string { return v.Key }).(pulumi.StringPtrOutput)
}

// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
func (o ClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefOutput) Name() pulumi.StringOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRef) string { return v.Name }).(pulumi.StringOutput)
}

type ClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefPtrOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRef)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefPtrOutput) ToClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefPtrOutput() ClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefPtrOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefPtrOutput) ToClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefPtrOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRef] {
	return pulumix.Output[*ClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRef]{
		OutputState: o.OutputState,
	}
}

func (o ClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefPtrOutput) Elem() ClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRef) ClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRef {
		if v != nil {
			return *v
		}
		var ret ClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRef
		return ret
	}).(ClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefOutput)
}

// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
func (o ClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefPtrOutput) Key() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRef) *string {
		if v == nil {
			return nil
		}
		return v.Key
	}).(pulumi.StringPtrOutput)
}

// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
func (o ClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefPtrOutput) Name() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRef) *string {
		if v == nil {
			return nil
		}
		return &v.Name
	}).(pulumi.StringPtrOutput)
}

// Use the DigitalOcean DNS API to manage DNS01 challenge records.
type ClusterIssuerSpecAcmeSolversDns01Digitalocean struct {
	// A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.
	TokenSecretRef ClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRef `pulumi:"tokenSecretRef"`
}

// ClusterIssuerSpecAcmeSolversDns01DigitaloceanInput is an input type that accepts ClusterIssuerSpecAcmeSolversDns01DigitaloceanArgs and ClusterIssuerSpecAcmeSolversDns01DigitaloceanOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversDns01DigitaloceanInput` via:
//
//	ClusterIssuerSpecAcmeSolversDns01DigitaloceanArgs{...}
type ClusterIssuerSpecAcmeSolversDns01DigitaloceanInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversDns01DigitaloceanOutput() ClusterIssuerSpecAcmeSolversDns01DigitaloceanOutput
	ToClusterIssuerSpecAcmeSolversDns01DigitaloceanOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversDns01DigitaloceanOutput
}

// Use the DigitalOcean DNS API to manage DNS01 challenge records.
type ClusterIssuerSpecAcmeSolversDns01DigitaloceanArgs struct {
	// A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.
	TokenSecretRef ClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefInput `pulumi:"tokenSecretRef"`
}

func (ClusterIssuerSpecAcmeSolversDns01DigitaloceanArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversDns01Digitalocean)(nil)).Elem()
}

func (i ClusterIssuerSpecAcmeSolversDns01DigitaloceanArgs) ToClusterIssuerSpecAcmeSolversDns01DigitaloceanOutput() ClusterIssuerSpecAcmeSolversDns01DigitaloceanOutput {
	return i.ToClusterIssuerSpecAcmeSolversDns01DigitaloceanOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversDns01DigitaloceanArgs) ToClusterIssuerSpecAcmeSolversDns01DigitaloceanOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01DigitaloceanOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversDns01DigitaloceanOutput)
}

func (i ClusterIssuerSpecAcmeSolversDns01DigitaloceanArgs) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversDns01Digitalocean] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversDns01Digitalocean]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversDns01DigitaloceanOutputWithContext(ctx).OutputState,
	}
}

func (i ClusterIssuerSpecAcmeSolversDns01DigitaloceanArgs) ToClusterIssuerSpecAcmeSolversDns01DigitaloceanPtrOutput() ClusterIssuerSpecAcmeSolversDns01DigitaloceanPtrOutput {
	return i.ToClusterIssuerSpecAcmeSolversDns01DigitaloceanPtrOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversDns01DigitaloceanArgs) ToClusterIssuerSpecAcmeSolversDns01DigitaloceanPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01DigitaloceanPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversDns01DigitaloceanOutput).ToClusterIssuerSpecAcmeSolversDns01DigitaloceanPtrOutputWithContext(ctx)
}

// ClusterIssuerSpecAcmeSolversDns01DigitaloceanPtrInput is an input type that accepts ClusterIssuerSpecAcmeSolversDns01DigitaloceanArgs, ClusterIssuerSpecAcmeSolversDns01DigitaloceanPtr and ClusterIssuerSpecAcmeSolversDns01DigitaloceanPtrOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversDns01DigitaloceanPtrInput` via:
//
//	        ClusterIssuerSpecAcmeSolversDns01DigitaloceanArgs{...}
//
//	or:
//
//	        nil
type ClusterIssuerSpecAcmeSolversDns01DigitaloceanPtrInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversDns01DigitaloceanPtrOutput() ClusterIssuerSpecAcmeSolversDns01DigitaloceanPtrOutput
	ToClusterIssuerSpecAcmeSolversDns01DigitaloceanPtrOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversDns01DigitaloceanPtrOutput
}

type clusterIssuerSpecAcmeSolversDns01DigitaloceanPtrType ClusterIssuerSpecAcmeSolversDns01DigitaloceanArgs

func ClusterIssuerSpecAcmeSolversDns01DigitaloceanPtr(v *ClusterIssuerSpecAcmeSolversDns01DigitaloceanArgs) ClusterIssuerSpecAcmeSolversDns01DigitaloceanPtrInput {
	return (*clusterIssuerSpecAcmeSolversDns01DigitaloceanPtrType)(v)
}

func (*clusterIssuerSpecAcmeSolversDns01DigitaloceanPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecAcmeSolversDns01Digitalocean)(nil)).Elem()
}

func (i *clusterIssuerSpecAcmeSolversDns01DigitaloceanPtrType) ToClusterIssuerSpecAcmeSolversDns01DigitaloceanPtrOutput() ClusterIssuerSpecAcmeSolversDns01DigitaloceanPtrOutput {
	return i.ToClusterIssuerSpecAcmeSolversDns01DigitaloceanPtrOutputWithContext(context.Background())
}

func (i *clusterIssuerSpecAcmeSolversDns01DigitaloceanPtrType) ToClusterIssuerSpecAcmeSolversDns01DigitaloceanPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01DigitaloceanPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversDns01DigitaloceanPtrOutput)
}

func (i *clusterIssuerSpecAcmeSolversDns01DigitaloceanPtrType) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecAcmeSolversDns01Digitalocean] {
	return pulumix.Output[*ClusterIssuerSpecAcmeSolversDns01Digitalocean]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversDns01DigitaloceanPtrOutputWithContext(ctx).OutputState,
	}
}

// Use the DigitalOcean DNS API to manage DNS01 challenge records.
type ClusterIssuerSpecAcmeSolversDns01DigitaloceanOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversDns01DigitaloceanOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversDns01Digitalocean)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversDns01DigitaloceanOutput) ToClusterIssuerSpecAcmeSolversDns01DigitaloceanOutput() ClusterIssuerSpecAcmeSolversDns01DigitaloceanOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversDns01DigitaloceanOutput) ToClusterIssuerSpecAcmeSolversDns01DigitaloceanOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01DigitaloceanOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversDns01DigitaloceanOutput) ToClusterIssuerSpecAcmeSolversDns01DigitaloceanPtrOutput() ClusterIssuerSpecAcmeSolversDns01DigitaloceanPtrOutput {
	return o.ToClusterIssuerSpecAcmeSolversDns01DigitaloceanPtrOutputWithContext(context.Background())
}

func (o ClusterIssuerSpecAcmeSolversDns01DigitaloceanOutput) ToClusterIssuerSpecAcmeSolversDns01DigitaloceanPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01DigitaloceanPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v ClusterIssuerSpecAcmeSolversDns01Digitalocean) *ClusterIssuerSpecAcmeSolversDns01Digitalocean {
		return &v
	}).(ClusterIssuerSpecAcmeSolversDns01DigitaloceanPtrOutput)
}

func (o ClusterIssuerSpecAcmeSolversDns01DigitaloceanOutput) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversDns01Digitalocean] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversDns01Digitalocean]{
		OutputState: o.OutputState,
	}
}

// A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.
func (o ClusterIssuerSpecAcmeSolversDns01DigitaloceanOutput) TokenSecretRef() ClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversDns01Digitalocean) ClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRef {
		return v.TokenSecretRef
	}).(ClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefOutput)
}

type ClusterIssuerSpecAcmeSolversDns01DigitaloceanPtrOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversDns01DigitaloceanPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecAcmeSolversDns01Digitalocean)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversDns01DigitaloceanPtrOutput) ToClusterIssuerSpecAcmeSolversDns01DigitaloceanPtrOutput() ClusterIssuerSpecAcmeSolversDns01DigitaloceanPtrOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversDns01DigitaloceanPtrOutput) ToClusterIssuerSpecAcmeSolversDns01DigitaloceanPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01DigitaloceanPtrOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversDns01DigitaloceanPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecAcmeSolversDns01Digitalocean] {
	return pulumix.Output[*ClusterIssuerSpecAcmeSolversDns01Digitalocean]{
		OutputState: o.OutputState,
	}
}

func (o ClusterIssuerSpecAcmeSolversDns01DigitaloceanPtrOutput) Elem() ClusterIssuerSpecAcmeSolversDns01DigitaloceanOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversDns01Digitalocean) ClusterIssuerSpecAcmeSolversDns01Digitalocean {
		if v != nil {
			return *v
		}
		var ret ClusterIssuerSpecAcmeSolversDns01Digitalocean
		return ret
	}).(ClusterIssuerSpecAcmeSolversDns01DigitaloceanOutput)
}

// A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.
func (o ClusterIssuerSpecAcmeSolversDns01DigitaloceanPtrOutput) TokenSecretRef() ClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversDns01Digitalocean) *ClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRef {
		if v == nil {
			return nil
		}
		return &v.TokenSecretRef
	}).(ClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefPtrOutput)
}

// A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.
type ClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRef struct {
	// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
	Key *string `pulumi:"key"`
	// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
	Name string `pulumi:"name"`
}

// ClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefInput is an input type that accepts ClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefArgs and ClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefInput` via:
//
//	ClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefArgs{...}
type ClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefOutput() ClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefOutput
	ToClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefOutput
}

// A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.
type ClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefArgs struct {
	// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
	Key pulumi.StringPtrInput `pulumi:"key"`
	// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
	Name pulumi.StringInput `pulumi:"name"`
}

func (ClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRef)(nil)).Elem()
}

func (i ClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefArgs) ToClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefOutput() ClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefOutput {
	return i.ToClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefArgs) ToClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefOutput)
}

func (i ClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefArgs) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRef] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRef]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefOutputWithContext(ctx).OutputState,
	}
}

func (i ClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefArgs) ToClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefPtrOutput() ClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefPtrOutput {
	return i.ToClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefPtrOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefArgs) ToClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefOutput).ToClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefPtrOutputWithContext(ctx)
}

// ClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefPtrInput is an input type that accepts ClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefArgs, ClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefPtr and ClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefPtrOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefPtrInput` via:
//
//	        ClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefArgs{...}
//
//	or:
//
//	        nil
type ClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefPtrInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefPtrOutput() ClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefPtrOutput
	ToClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefPtrOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefPtrOutput
}

type clusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefPtrType ClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefArgs

func ClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefPtr(v *ClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefArgs) ClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefPtrInput {
	return (*clusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefPtrType)(v)
}

func (*clusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRef)(nil)).Elem()
}

func (i *clusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefPtrType) ToClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefPtrOutput() ClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefPtrOutput {
	return i.ToClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefPtrOutputWithContext(context.Background())
}

func (i *clusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefPtrType) ToClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefPtrOutput)
}

func (i *clusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefPtrType) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRef] {
	return pulumix.Output[*ClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRef]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefPtrOutputWithContext(ctx).OutputState,
	}
}

// A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.
type ClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRef)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefOutput) ToClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefOutput() ClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefOutput) ToClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefOutput) ToClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefPtrOutput() ClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefPtrOutput {
	return o.ToClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefPtrOutputWithContext(context.Background())
}

func (o ClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefOutput) ToClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v ClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRef) *ClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRef {
		return &v
	}).(ClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefPtrOutput)
}

func (o ClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefOutput) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRef] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRef]{
		OutputState: o.OutputState,
	}
}

// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
func (o ClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefOutput) Key() pulumi.StringPtrOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRef) *string { return v.Key }).(pulumi.StringPtrOutput)
}

// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
func (o ClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefOutput) Name() pulumi.StringOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRef) string { return v.Name }).(pulumi.StringOutput)
}

type ClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefPtrOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRef)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefPtrOutput) ToClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefPtrOutput() ClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefPtrOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefPtrOutput) ToClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefPtrOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRef] {
	return pulumix.Output[*ClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRef]{
		OutputState: o.OutputState,
	}
}

func (o ClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefPtrOutput) Elem() ClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRef) ClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRef {
		if v != nil {
			return *v
		}
		var ret ClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRef
		return ret
	}).(ClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefOutput)
}

// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
func (o ClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefPtrOutput) Key() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRef) *string {
		if v == nil {
			return nil
		}
		return v.Key
	}).(pulumi.StringPtrOutput)
}

// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
func (o ClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefPtrOutput) Name() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRef) *string {
		if v == nil {
			return nil
		}
		return &v.Name
	}).(pulumi.StringPtrOutput)
}

// Use RFC2136 ("Dynamic Updates in the Domain Name System") (https://datatracker.ietf.org/doc/rfc2136/) to manage DNS01 challenge records.
type ClusterIssuerSpecAcmeSolversDns01Rfc2136 struct {
	// The IP address or hostname of an authoritative DNS server supporting RFC2136 in the form host:port. If the host is an IPv6 address it must be enclosed in square brackets (e.g [2001:db8::1]) ; port is optional. This field is required.
	Nameserver string `pulumi:"nameserver"`
	// The TSIG Algorithm configured in the DNS supporting RFC2136. Used only when ``tsigSecretSecretRef`` and ``tsigKeyName`` are defined. Supported values are (case-insensitive): ``HMACMD5`` (default), ``HMACSHA1``, ``HMACSHA256`` or ``HMACSHA512``.
	TsigAlgorithm *string `pulumi:"tsigAlgorithm"`
	// The TSIG Key name configured in the DNS. If ``tsigSecretSecretRef`` is defined, this field is required.
	TsigKeyName *string `pulumi:"tsigKeyName"`
	// The name of the secret containing the TSIG value. If ``tsigKeyName`` is defined, this field is required.
	TsigSecretSecretRef *ClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRef `pulumi:"tsigSecretSecretRef"`
}

// ClusterIssuerSpecAcmeSolversDns01Rfc2136Input is an input type that accepts ClusterIssuerSpecAcmeSolversDns01Rfc2136Args and ClusterIssuerSpecAcmeSolversDns01Rfc2136Output values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversDns01Rfc2136Input` via:
//
//	ClusterIssuerSpecAcmeSolversDns01Rfc2136Args{...}
type ClusterIssuerSpecAcmeSolversDns01Rfc2136Input interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversDns01Rfc2136Output() ClusterIssuerSpecAcmeSolversDns01Rfc2136Output
	ToClusterIssuerSpecAcmeSolversDns01Rfc2136OutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversDns01Rfc2136Output
}

// Use RFC2136 ("Dynamic Updates in the Domain Name System") (https://datatracker.ietf.org/doc/rfc2136/) to manage DNS01 challenge records.
type ClusterIssuerSpecAcmeSolversDns01Rfc2136Args struct {
	// The IP address or hostname of an authoritative DNS server supporting RFC2136 in the form host:port. If the host is an IPv6 address it must be enclosed in square brackets (e.g [2001:db8::1]) ; port is optional. This field is required.
	Nameserver pulumi.StringInput `pulumi:"nameserver"`
	// The TSIG Algorithm configured in the DNS supporting RFC2136. Used only when ``tsigSecretSecretRef`` and ``tsigKeyName`` are defined. Supported values are (case-insensitive): ``HMACMD5`` (default), ``HMACSHA1``, ``HMACSHA256`` or ``HMACSHA512``.
	TsigAlgorithm pulumi.StringPtrInput `pulumi:"tsigAlgorithm"`
	// The TSIG Key name configured in the DNS. If ``tsigSecretSecretRef`` is defined, this field is required.
	TsigKeyName pulumi.StringPtrInput `pulumi:"tsigKeyName"`
	// The name of the secret containing the TSIG value. If ``tsigKeyName`` is defined, this field is required.
	TsigSecretSecretRef ClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefPtrInput `pulumi:"tsigSecretSecretRef"`
}

func (ClusterIssuerSpecAcmeSolversDns01Rfc2136Args) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversDns01Rfc2136)(nil)).Elem()
}

func (i ClusterIssuerSpecAcmeSolversDns01Rfc2136Args) ToClusterIssuerSpecAcmeSolversDns01Rfc2136Output() ClusterIssuerSpecAcmeSolversDns01Rfc2136Output {
	return i.ToClusterIssuerSpecAcmeSolversDns01Rfc2136OutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversDns01Rfc2136Args) ToClusterIssuerSpecAcmeSolversDns01Rfc2136OutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01Rfc2136Output {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversDns01Rfc2136Output)
}

func (i ClusterIssuerSpecAcmeSolversDns01Rfc2136Args) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversDns01Rfc2136] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversDns01Rfc2136]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversDns01Rfc2136OutputWithContext(ctx).OutputState,
	}
}

func (i ClusterIssuerSpecAcmeSolversDns01Rfc2136Args) ToClusterIssuerSpecAcmeSolversDns01Rfc2136PtrOutput() ClusterIssuerSpecAcmeSolversDns01Rfc2136PtrOutput {
	return i.ToClusterIssuerSpecAcmeSolversDns01Rfc2136PtrOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversDns01Rfc2136Args) ToClusterIssuerSpecAcmeSolversDns01Rfc2136PtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01Rfc2136PtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversDns01Rfc2136Output).ToClusterIssuerSpecAcmeSolversDns01Rfc2136PtrOutputWithContext(ctx)
}

// ClusterIssuerSpecAcmeSolversDns01Rfc2136PtrInput is an input type that accepts ClusterIssuerSpecAcmeSolversDns01Rfc2136Args, ClusterIssuerSpecAcmeSolversDns01Rfc2136Ptr and ClusterIssuerSpecAcmeSolversDns01Rfc2136PtrOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversDns01Rfc2136PtrInput` via:
//
//	        ClusterIssuerSpecAcmeSolversDns01Rfc2136Args{...}
//
//	or:
//
//	        nil
type ClusterIssuerSpecAcmeSolversDns01Rfc2136PtrInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversDns01Rfc2136PtrOutput() ClusterIssuerSpecAcmeSolversDns01Rfc2136PtrOutput
	ToClusterIssuerSpecAcmeSolversDns01Rfc2136PtrOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversDns01Rfc2136PtrOutput
}

type clusterIssuerSpecAcmeSolversDns01Rfc2136PtrType ClusterIssuerSpecAcmeSolversDns01Rfc2136Args

func ClusterIssuerSpecAcmeSolversDns01Rfc2136Ptr(v *ClusterIssuerSpecAcmeSolversDns01Rfc2136Args) ClusterIssuerSpecAcmeSolversDns01Rfc2136PtrInput {
	return (*clusterIssuerSpecAcmeSolversDns01Rfc2136PtrType)(v)
}

func (*clusterIssuerSpecAcmeSolversDns01Rfc2136PtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecAcmeSolversDns01Rfc2136)(nil)).Elem()
}

func (i *clusterIssuerSpecAcmeSolversDns01Rfc2136PtrType) ToClusterIssuerSpecAcmeSolversDns01Rfc2136PtrOutput() ClusterIssuerSpecAcmeSolversDns01Rfc2136PtrOutput {
	return i.ToClusterIssuerSpecAcmeSolversDns01Rfc2136PtrOutputWithContext(context.Background())
}

func (i *clusterIssuerSpecAcmeSolversDns01Rfc2136PtrType) ToClusterIssuerSpecAcmeSolversDns01Rfc2136PtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01Rfc2136PtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversDns01Rfc2136PtrOutput)
}

func (i *clusterIssuerSpecAcmeSolversDns01Rfc2136PtrType) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecAcmeSolversDns01Rfc2136] {
	return pulumix.Output[*ClusterIssuerSpecAcmeSolversDns01Rfc2136]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversDns01Rfc2136PtrOutputWithContext(ctx).OutputState,
	}
}

// Use RFC2136 ("Dynamic Updates in the Domain Name System") (https://datatracker.ietf.org/doc/rfc2136/) to manage DNS01 challenge records.
type ClusterIssuerSpecAcmeSolversDns01Rfc2136Output struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversDns01Rfc2136Output) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversDns01Rfc2136)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversDns01Rfc2136Output) ToClusterIssuerSpecAcmeSolversDns01Rfc2136Output() ClusterIssuerSpecAcmeSolversDns01Rfc2136Output {
	return o
}

func (o ClusterIssuerSpecAcmeSolversDns01Rfc2136Output) ToClusterIssuerSpecAcmeSolversDns01Rfc2136OutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01Rfc2136Output {
	return o
}

func (o ClusterIssuerSpecAcmeSolversDns01Rfc2136Output) ToClusterIssuerSpecAcmeSolversDns01Rfc2136PtrOutput() ClusterIssuerSpecAcmeSolversDns01Rfc2136PtrOutput {
	return o.ToClusterIssuerSpecAcmeSolversDns01Rfc2136PtrOutputWithContext(context.Background())
}

func (o ClusterIssuerSpecAcmeSolversDns01Rfc2136Output) ToClusterIssuerSpecAcmeSolversDns01Rfc2136PtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01Rfc2136PtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v ClusterIssuerSpecAcmeSolversDns01Rfc2136) *ClusterIssuerSpecAcmeSolversDns01Rfc2136 {
		return &v
	}).(ClusterIssuerSpecAcmeSolversDns01Rfc2136PtrOutput)
}

func (o ClusterIssuerSpecAcmeSolversDns01Rfc2136Output) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversDns01Rfc2136] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversDns01Rfc2136]{
		OutputState: o.OutputState,
	}
}

// The IP address or hostname of an authoritative DNS server supporting RFC2136 in the form host:port. If the host is an IPv6 address it must be enclosed in square brackets (e.g [2001:db8::1]) ; port is optional. This field is required.
func (o ClusterIssuerSpecAcmeSolversDns01Rfc2136Output) Nameserver() pulumi.StringOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversDns01Rfc2136) string { return v.Nameserver }).(pulumi.StringOutput)
}

// The TSIG Algorithm configured in the DNS supporting RFC2136. Used only when “tsigSecretSecretRef“ and “tsigKeyName“ are defined. Supported values are (case-insensitive): “HMACMD5“ (default), “HMACSHA1“, “HMACSHA256“ or “HMACSHA512“.
func (o ClusterIssuerSpecAcmeSolversDns01Rfc2136Output) TsigAlgorithm() pulumi.StringPtrOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversDns01Rfc2136) *string { return v.TsigAlgorithm }).(pulumi.StringPtrOutput)
}

// The TSIG Key name configured in the DNS. If “tsigSecretSecretRef“ is defined, this field is required.
func (o ClusterIssuerSpecAcmeSolversDns01Rfc2136Output) TsigKeyName() pulumi.StringPtrOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversDns01Rfc2136) *string { return v.TsigKeyName }).(pulumi.StringPtrOutput)
}

// The name of the secret containing the TSIG value. If “tsigKeyName“ is defined, this field is required.
func (o ClusterIssuerSpecAcmeSolversDns01Rfc2136Output) TsigSecretSecretRef() ClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefPtrOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversDns01Rfc2136) *ClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRef {
		return v.TsigSecretSecretRef
	}).(ClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefPtrOutput)
}

type ClusterIssuerSpecAcmeSolversDns01Rfc2136PtrOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversDns01Rfc2136PtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecAcmeSolversDns01Rfc2136)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversDns01Rfc2136PtrOutput) ToClusterIssuerSpecAcmeSolversDns01Rfc2136PtrOutput() ClusterIssuerSpecAcmeSolversDns01Rfc2136PtrOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversDns01Rfc2136PtrOutput) ToClusterIssuerSpecAcmeSolversDns01Rfc2136PtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01Rfc2136PtrOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversDns01Rfc2136PtrOutput) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecAcmeSolversDns01Rfc2136] {
	return pulumix.Output[*ClusterIssuerSpecAcmeSolversDns01Rfc2136]{
		OutputState: o.OutputState,
	}
}

func (o ClusterIssuerSpecAcmeSolversDns01Rfc2136PtrOutput) Elem() ClusterIssuerSpecAcmeSolversDns01Rfc2136Output {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversDns01Rfc2136) ClusterIssuerSpecAcmeSolversDns01Rfc2136 {
		if v != nil {
			return *v
		}
		var ret ClusterIssuerSpecAcmeSolversDns01Rfc2136
		return ret
	}).(ClusterIssuerSpecAcmeSolversDns01Rfc2136Output)
}

// The IP address or hostname of an authoritative DNS server supporting RFC2136 in the form host:port. If the host is an IPv6 address it must be enclosed in square brackets (e.g [2001:db8::1]) ; port is optional. This field is required.
func (o ClusterIssuerSpecAcmeSolversDns01Rfc2136PtrOutput) Nameserver() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversDns01Rfc2136) *string {
		if v == nil {
			return nil
		}
		return &v.Nameserver
	}).(pulumi.StringPtrOutput)
}

// The TSIG Algorithm configured in the DNS supporting RFC2136. Used only when “tsigSecretSecretRef“ and “tsigKeyName“ are defined. Supported values are (case-insensitive): “HMACMD5“ (default), “HMACSHA1“, “HMACSHA256“ or “HMACSHA512“.
func (o ClusterIssuerSpecAcmeSolversDns01Rfc2136PtrOutput) TsigAlgorithm() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversDns01Rfc2136) *string {
		if v == nil {
			return nil
		}
		return v.TsigAlgorithm
	}).(pulumi.StringPtrOutput)
}

// The TSIG Key name configured in the DNS. If “tsigSecretSecretRef“ is defined, this field is required.
func (o ClusterIssuerSpecAcmeSolversDns01Rfc2136PtrOutput) TsigKeyName() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversDns01Rfc2136) *string {
		if v == nil {
			return nil
		}
		return v.TsigKeyName
	}).(pulumi.StringPtrOutput)
}

// The name of the secret containing the TSIG value. If “tsigKeyName“ is defined, this field is required.
func (o ClusterIssuerSpecAcmeSolversDns01Rfc2136PtrOutput) TsigSecretSecretRef() ClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversDns01Rfc2136) *ClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRef {
		if v == nil {
			return nil
		}
		return v.TsigSecretSecretRef
	}).(ClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefPtrOutput)
}

// The name of the secret containing the TSIG value. If “tsigKeyName“ is defined, this field is required.
type ClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRef struct {
	// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
	Key *string `pulumi:"key"`
	// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
	Name string `pulumi:"name"`
}

// ClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefInput is an input type that accepts ClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefArgs and ClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefInput` via:
//
//	ClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefArgs{...}
type ClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefOutput() ClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefOutput
	ToClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefOutput
}

// The name of the secret containing the TSIG value. If “tsigKeyName“ is defined, this field is required.
type ClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefArgs struct {
	// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
	Key pulumi.StringPtrInput `pulumi:"key"`
	// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
	Name pulumi.StringInput `pulumi:"name"`
}

func (ClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRef)(nil)).Elem()
}

func (i ClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefArgs) ToClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefOutput() ClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefOutput {
	return i.ToClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefArgs) ToClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefOutput)
}

func (i ClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefArgs) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRef] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRef]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefOutputWithContext(ctx).OutputState,
	}
}

func (i ClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefArgs) ToClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefPtrOutput() ClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefPtrOutput {
	return i.ToClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefPtrOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefArgs) ToClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefOutput).ToClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefPtrOutputWithContext(ctx)
}

// ClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefPtrInput is an input type that accepts ClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefArgs, ClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefPtr and ClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefPtrOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefPtrInput` via:
//
//	        ClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefArgs{...}
//
//	or:
//
//	        nil
type ClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefPtrInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefPtrOutput() ClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefPtrOutput
	ToClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefPtrOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefPtrOutput
}

type clusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefPtrType ClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefArgs

func ClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefPtr(v *ClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefArgs) ClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefPtrInput {
	return (*clusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefPtrType)(v)
}

func (*clusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRef)(nil)).Elem()
}

func (i *clusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefPtrType) ToClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefPtrOutput() ClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefPtrOutput {
	return i.ToClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefPtrOutputWithContext(context.Background())
}

func (i *clusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefPtrType) ToClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefPtrOutput)
}

func (i *clusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefPtrType) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRef] {
	return pulumix.Output[*ClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRef]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefPtrOutputWithContext(ctx).OutputState,
	}
}

// The name of the secret containing the TSIG value. If “tsigKeyName“ is defined, this field is required.
type ClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRef)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefOutput) ToClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefOutput() ClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefOutput) ToClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefOutput) ToClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefPtrOutput() ClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefPtrOutput {
	return o.ToClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefPtrOutputWithContext(context.Background())
}

func (o ClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefOutput) ToClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v ClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRef) *ClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRef {
		return &v
	}).(ClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefPtrOutput)
}

func (o ClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefOutput) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRef] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRef]{
		OutputState: o.OutputState,
	}
}

// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
func (o ClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefOutput) Key() pulumi.StringPtrOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRef) *string { return v.Key }).(pulumi.StringPtrOutput)
}

// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
func (o ClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefOutput) Name() pulumi.StringOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRef) string { return v.Name }).(pulumi.StringOutput)
}

type ClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefPtrOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRef)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefPtrOutput) ToClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefPtrOutput() ClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefPtrOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefPtrOutput) ToClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefPtrOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRef] {
	return pulumix.Output[*ClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRef]{
		OutputState: o.OutputState,
	}
}

func (o ClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefPtrOutput) Elem() ClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRef) ClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRef {
		if v != nil {
			return *v
		}
		var ret ClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRef
		return ret
	}).(ClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefOutput)
}

// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
func (o ClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefPtrOutput) Key() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRef) *string {
		if v == nil {
			return nil
		}
		return v.Key
	}).(pulumi.StringPtrOutput)
}

// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
func (o ClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefPtrOutput) Name() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRef) *string {
		if v == nil {
			return nil
		}
		return &v.Name
	}).(pulumi.StringPtrOutput)
}

// Use the AWS Route53 API to manage DNS01 challenge records.
type ClusterIssuerSpecAcmeSolversDns01Route53 struct {
	// The AccessKeyID is used for authentication. If not set we fall-back to using env vars, shared credentials file or AWS Instance metadata see: https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/configuring-sdk.html#specifying-credentials
	AccessKeyID *string `pulumi:"accessKeyID"`
	// If set, the provider will manage only this zone in Route53 and will not do an lookup using the route53:ListHostedZonesByName api call.
	HostedZoneID *string `pulumi:"hostedZoneID"`
	// Always set the region when using AccessKeyID and SecretAccessKey
	Region string `pulumi:"region"`
	// Role is a Role ARN which the Route53 provider will assume using either the explicit credentials AccessKeyID/SecretAccessKey or the inferred credentials from environment variables, shared credentials file or AWS Instance metadata
	Role *string `pulumi:"role"`
	// The SecretAccessKey is used for authentication. If not set we fall-back to using env vars, shared credentials file or AWS Instance metadata https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/configuring-sdk.html#specifying-credentials
	SecretAccessKeySecretRef *ClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRef `pulumi:"secretAccessKeySecretRef"`
}

// ClusterIssuerSpecAcmeSolversDns01Route53Input is an input type that accepts ClusterIssuerSpecAcmeSolversDns01Route53Args and ClusterIssuerSpecAcmeSolversDns01Route53Output values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversDns01Route53Input` via:
//
//	ClusterIssuerSpecAcmeSolversDns01Route53Args{...}
type ClusterIssuerSpecAcmeSolversDns01Route53Input interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversDns01Route53Output() ClusterIssuerSpecAcmeSolversDns01Route53Output
	ToClusterIssuerSpecAcmeSolversDns01Route53OutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversDns01Route53Output
}

// Use the AWS Route53 API to manage DNS01 challenge records.
type ClusterIssuerSpecAcmeSolversDns01Route53Args struct {
	// The AccessKeyID is used for authentication. If not set we fall-back to using env vars, shared credentials file or AWS Instance metadata see: https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/configuring-sdk.html#specifying-credentials
	AccessKeyID pulumi.StringPtrInput `pulumi:"accessKeyID"`
	// If set, the provider will manage only this zone in Route53 and will not do an lookup using the route53:ListHostedZonesByName api call.
	HostedZoneID pulumi.StringPtrInput `pulumi:"hostedZoneID"`
	// Always set the region when using AccessKeyID and SecretAccessKey
	Region pulumi.StringInput `pulumi:"region"`
	// Role is a Role ARN which the Route53 provider will assume using either the explicit credentials AccessKeyID/SecretAccessKey or the inferred credentials from environment variables, shared credentials file or AWS Instance metadata
	Role pulumi.StringPtrInput `pulumi:"role"`
	// The SecretAccessKey is used for authentication. If not set we fall-back to using env vars, shared credentials file or AWS Instance metadata https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/configuring-sdk.html#specifying-credentials
	SecretAccessKeySecretRef ClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefPtrInput `pulumi:"secretAccessKeySecretRef"`
}

func (ClusterIssuerSpecAcmeSolversDns01Route53Args) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversDns01Route53)(nil)).Elem()
}

func (i ClusterIssuerSpecAcmeSolversDns01Route53Args) ToClusterIssuerSpecAcmeSolversDns01Route53Output() ClusterIssuerSpecAcmeSolversDns01Route53Output {
	return i.ToClusterIssuerSpecAcmeSolversDns01Route53OutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversDns01Route53Args) ToClusterIssuerSpecAcmeSolversDns01Route53OutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01Route53Output {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversDns01Route53Output)
}

func (i ClusterIssuerSpecAcmeSolversDns01Route53Args) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversDns01Route53] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversDns01Route53]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversDns01Route53OutputWithContext(ctx).OutputState,
	}
}

func (i ClusterIssuerSpecAcmeSolversDns01Route53Args) ToClusterIssuerSpecAcmeSolversDns01Route53PtrOutput() ClusterIssuerSpecAcmeSolversDns01Route53PtrOutput {
	return i.ToClusterIssuerSpecAcmeSolversDns01Route53PtrOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversDns01Route53Args) ToClusterIssuerSpecAcmeSolversDns01Route53PtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01Route53PtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversDns01Route53Output).ToClusterIssuerSpecAcmeSolversDns01Route53PtrOutputWithContext(ctx)
}

// ClusterIssuerSpecAcmeSolversDns01Route53PtrInput is an input type that accepts ClusterIssuerSpecAcmeSolversDns01Route53Args, ClusterIssuerSpecAcmeSolversDns01Route53Ptr and ClusterIssuerSpecAcmeSolversDns01Route53PtrOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversDns01Route53PtrInput` via:
//
//	        ClusterIssuerSpecAcmeSolversDns01Route53Args{...}
//
//	or:
//
//	        nil
type ClusterIssuerSpecAcmeSolversDns01Route53PtrInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversDns01Route53PtrOutput() ClusterIssuerSpecAcmeSolversDns01Route53PtrOutput
	ToClusterIssuerSpecAcmeSolversDns01Route53PtrOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversDns01Route53PtrOutput
}

type clusterIssuerSpecAcmeSolversDns01Route53PtrType ClusterIssuerSpecAcmeSolversDns01Route53Args

func ClusterIssuerSpecAcmeSolversDns01Route53Ptr(v *ClusterIssuerSpecAcmeSolversDns01Route53Args) ClusterIssuerSpecAcmeSolversDns01Route53PtrInput {
	return (*clusterIssuerSpecAcmeSolversDns01Route53PtrType)(v)
}

func (*clusterIssuerSpecAcmeSolversDns01Route53PtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecAcmeSolversDns01Route53)(nil)).Elem()
}

func (i *clusterIssuerSpecAcmeSolversDns01Route53PtrType) ToClusterIssuerSpecAcmeSolversDns01Route53PtrOutput() ClusterIssuerSpecAcmeSolversDns01Route53PtrOutput {
	return i.ToClusterIssuerSpecAcmeSolversDns01Route53PtrOutputWithContext(context.Background())
}

func (i *clusterIssuerSpecAcmeSolversDns01Route53PtrType) ToClusterIssuerSpecAcmeSolversDns01Route53PtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01Route53PtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversDns01Route53PtrOutput)
}

func (i *clusterIssuerSpecAcmeSolversDns01Route53PtrType) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecAcmeSolversDns01Route53] {
	return pulumix.Output[*ClusterIssuerSpecAcmeSolversDns01Route53]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversDns01Route53PtrOutputWithContext(ctx).OutputState,
	}
}

// Use the AWS Route53 API to manage DNS01 challenge records.
type ClusterIssuerSpecAcmeSolversDns01Route53Output struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversDns01Route53Output) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversDns01Route53)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversDns01Route53Output) ToClusterIssuerSpecAcmeSolversDns01Route53Output() ClusterIssuerSpecAcmeSolversDns01Route53Output {
	return o
}

func (o ClusterIssuerSpecAcmeSolversDns01Route53Output) ToClusterIssuerSpecAcmeSolversDns01Route53OutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01Route53Output {
	return o
}

func (o ClusterIssuerSpecAcmeSolversDns01Route53Output) ToClusterIssuerSpecAcmeSolversDns01Route53PtrOutput() ClusterIssuerSpecAcmeSolversDns01Route53PtrOutput {
	return o.ToClusterIssuerSpecAcmeSolversDns01Route53PtrOutputWithContext(context.Background())
}

func (o ClusterIssuerSpecAcmeSolversDns01Route53Output) ToClusterIssuerSpecAcmeSolversDns01Route53PtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01Route53PtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v ClusterIssuerSpecAcmeSolversDns01Route53) *ClusterIssuerSpecAcmeSolversDns01Route53 {
		return &v
	}).(ClusterIssuerSpecAcmeSolversDns01Route53PtrOutput)
}

func (o ClusterIssuerSpecAcmeSolversDns01Route53Output) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversDns01Route53] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversDns01Route53]{
		OutputState: o.OutputState,
	}
}

// The AccessKeyID is used for authentication. If not set we fall-back to using env vars, shared credentials file or AWS Instance metadata see: https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/configuring-sdk.html#specifying-credentials
func (o ClusterIssuerSpecAcmeSolversDns01Route53Output) AccessKeyID() pulumi.StringPtrOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversDns01Route53) *string { return v.AccessKeyID }).(pulumi.StringPtrOutput)
}

// If set, the provider will manage only this zone in Route53 and will not do an lookup using the route53:ListHostedZonesByName api call.
func (o ClusterIssuerSpecAcmeSolversDns01Route53Output) HostedZoneID() pulumi.StringPtrOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversDns01Route53) *string { return v.HostedZoneID }).(pulumi.StringPtrOutput)
}

// Always set the region when using AccessKeyID and SecretAccessKey
func (o ClusterIssuerSpecAcmeSolversDns01Route53Output) Region() pulumi.StringOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversDns01Route53) string { return v.Region }).(pulumi.StringOutput)
}

// Role is a Role ARN which the Route53 provider will assume using either the explicit credentials AccessKeyID/SecretAccessKey or the inferred credentials from environment variables, shared credentials file or AWS Instance metadata
func (o ClusterIssuerSpecAcmeSolversDns01Route53Output) Role() pulumi.StringPtrOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversDns01Route53) *string { return v.Role }).(pulumi.StringPtrOutput)
}

// The SecretAccessKey is used for authentication. If not set we fall-back to using env vars, shared credentials file or AWS Instance metadata https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/configuring-sdk.html#specifying-credentials
func (o ClusterIssuerSpecAcmeSolversDns01Route53Output) SecretAccessKeySecretRef() ClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefPtrOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversDns01Route53) *ClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRef {
		return v.SecretAccessKeySecretRef
	}).(ClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefPtrOutput)
}

type ClusterIssuerSpecAcmeSolversDns01Route53PtrOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversDns01Route53PtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecAcmeSolversDns01Route53)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversDns01Route53PtrOutput) ToClusterIssuerSpecAcmeSolversDns01Route53PtrOutput() ClusterIssuerSpecAcmeSolversDns01Route53PtrOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversDns01Route53PtrOutput) ToClusterIssuerSpecAcmeSolversDns01Route53PtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01Route53PtrOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversDns01Route53PtrOutput) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecAcmeSolversDns01Route53] {
	return pulumix.Output[*ClusterIssuerSpecAcmeSolversDns01Route53]{
		OutputState: o.OutputState,
	}
}

func (o ClusterIssuerSpecAcmeSolversDns01Route53PtrOutput) Elem() ClusterIssuerSpecAcmeSolversDns01Route53Output {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversDns01Route53) ClusterIssuerSpecAcmeSolversDns01Route53 {
		if v != nil {
			return *v
		}
		var ret ClusterIssuerSpecAcmeSolversDns01Route53
		return ret
	}).(ClusterIssuerSpecAcmeSolversDns01Route53Output)
}

// The AccessKeyID is used for authentication. If not set we fall-back to using env vars, shared credentials file or AWS Instance metadata see: https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/configuring-sdk.html#specifying-credentials
func (o ClusterIssuerSpecAcmeSolversDns01Route53PtrOutput) AccessKeyID() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversDns01Route53) *string {
		if v == nil {
			return nil
		}
		return v.AccessKeyID
	}).(pulumi.StringPtrOutput)
}

// If set, the provider will manage only this zone in Route53 and will not do an lookup using the route53:ListHostedZonesByName api call.
func (o ClusterIssuerSpecAcmeSolversDns01Route53PtrOutput) HostedZoneID() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversDns01Route53) *string {
		if v == nil {
			return nil
		}
		return v.HostedZoneID
	}).(pulumi.StringPtrOutput)
}

// Always set the region when using AccessKeyID and SecretAccessKey
func (o ClusterIssuerSpecAcmeSolversDns01Route53PtrOutput) Region() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversDns01Route53) *string {
		if v == nil {
			return nil
		}
		return &v.Region
	}).(pulumi.StringPtrOutput)
}

// Role is a Role ARN which the Route53 provider will assume using either the explicit credentials AccessKeyID/SecretAccessKey or the inferred credentials from environment variables, shared credentials file or AWS Instance metadata
func (o ClusterIssuerSpecAcmeSolversDns01Route53PtrOutput) Role() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversDns01Route53) *string {
		if v == nil {
			return nil
		}
		return v.Role
	}).(pulumi.StringPtrOutput)
}

// The SecretAccessKey is used for authentication. If not set we fall-back to using env vars, shared credentials file or AWS Instance metadata https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/configuring-sdk.html#specifying-credentials
func (o ClusterIssuerSpecAcmeSolversDns01Route53PtrOutput) SecretAccessKeySecretRef() ClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversDns01Route53) *ClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRef {
		if v == nil {
			return nil
		}
		return v.SecretAccessKeySecretRef
	}).(ClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefPtrOutput)
}

// The SecretAccessKey is used for authentication. If not set we fall-back to using env vars, shared credentials file or AWS Instance metadata https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/configuring-sdk.html#specifying-credentials
type ClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRef struct {
	// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
	Key *string `pulumi:"key"`
	// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
	Name string `pulumi:"name"`
}

// ClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefInput is an input type that accepts ClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefArgs and ClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefInput` via:
//
//	ClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefArgs{...}
type ClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefOutput() ClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefOutput
	ToClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefOutput
}

// The SecretAccessKey is used for authentication. If not set we fall-back to using env vars, shared credentials file or AWS Instance metadata https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/configuring-sdk.html#specifying-credentials
type ClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefArgs struct {
	// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
	Key pulumi.StringPtrInput `pulumi:"key"`
	// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
	Name pulumi.StringInput `pulumi:"name"`
}

func (ClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRef)(nil)).Elem()
}

func (i ClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefArgs) ToClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefOutput() ClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefOutput {
	return i.ToClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefArgs) ToClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefOutput)
}

func (i ClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefArgs) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRef] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRef]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefOutputWithContext(ctx).OutputState,
	}
}

func (i ClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefArgs) ToClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefPtrOutput() ClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefPtrOutput {
	return i.ToClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefPtrOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefArgs) ToClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefOutput).ToClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefPtrOutputWithContext(ctx)
}

// ClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefPtrInput is an input type that accepts ClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefArgs, ClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefPtr and ClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefPtrOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefPtrInput` via:
//
//	        ClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefArgs{...}
//
//	or:
//
//	        nil
type ClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefPtrInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefPtrOutput() ClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefPtrOutput
	ToClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefPtrOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefPtrOutput
}

type clusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefPtrType ClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefArgs

func ClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefPtr(v *ClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefArgs) ClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefPtrInput {
	return (*clusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefPtrType)(v)
}

func (*clusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRef)(nil)).Elem()
}

func (i *clusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefPtrType) ToClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefPtrOutput() ClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefPtrOutput {
	return i.ToClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefPtrOutputWithContext(context.Background())
}

func (i *clusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefPtrType) ToClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefPtrOutput)
}

func (i *clusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefPtrType) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRef] {
	return pulumix.Output[*ClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRef]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefPtrOutputWithContext(ctx).OutputState,
	}
}

// The SecretAccessKey is used for authentication. If not set we fall-back to using env vars, shared credentials file or AWS Instance metadata https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/configuring-sdk.html#specifying-credentials
type ClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRef)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefOutput) ToClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefOutput() ClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefOutput) ToClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefOutput) ToClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefPtrOutput() ClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefPtrOutput {
	return o.ToClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefPtrOutputWithContext(context.Background())
}

func (o ClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefOutput) ToClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v ClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRef) *ClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRef {
		return &v
	}).(ClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefPtrOutput)
}

func (o ClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefOutput) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRef] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRef]{
		OutputState: o.OutputState,
	}
}

// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
func (o ClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefOutput) Key() pulumi.StringPtrOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRef) *string { return v.Key }).(pulumi.StringPtrOutput)
}

// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
func (o ClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefOutput) Name() pulumi.StringOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRef) string { return v.Name }).(pulumi.StringOutput)
}

type ClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefPtrOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRef)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefPtrOutput) ToClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefPtrOutput() ClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefPtrOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefPtrOutput) ToClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefPtrOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRef] {
	return pulumix.Output[*ClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRef]{
		OutputState: o.OutputState,
	}
}

func (o ClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefPtrOutput) Elem() ClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRef) ClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRef {
		if v != nil {
			return *v
		}
		var ret ClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRef
		return ret
	}).(ClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefOutput)
}

// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
func (o ClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefPtrOutput) Key() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRef) *string {
		if v == nil {
			return nil
		}
		return v.Key
	}).(pulumi.StringPtrOutput)
}

// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
func (o ClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefPtrOutput) Name() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRef) *string {
		if v == nil {
			return nil
		}
		return &v.Name
	}).(pulumi.StringPtrOutput)
}

// Configure an external webhook based DNS01 challenge solver to manage DNS01 challenge records.
type ClusterIssuerSpecAcmeSolversDns01Webhook struct {
	// Additional configuration that should be passed to the webhook apiserver when challenges are processed. This can contain arbitrary JSON data. Secret values should not be specified in this stanza. If secret values are needed (e.g. credentials for a DNS service), you should use a SecretKeySelector to reference a Secret resource. For details on the schema of this field, consult the webhook provider implementation's documentation.
	Config map[string]interface{} `pulumi:"config"`
	// The API group name that should be used when POSTing ChallengePayload resources to the webhook apiserver. This should be the same as the GroupName specified in the webhook provider implementation.
	GroupName string `pulumi:"groupName"`
	// The name of the solver to use, as defined in the webhook provider implementation. This will typically be the name of the provider, e.g. 'cloudflare'.
	SolverName string `pulumi:"solverName"`
}

// ClusterIssuerSpecAcmeSolversDns01WebhookInput is an input type that accepts ClusterIssuerSpecAcmeSolversDns01WebhookArgs and ClusterIssuerSpecAcmeSolversDns01WebhookOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversDns01WebhookInput` via:
//
//	ClusterIssuerSpecAcmeSolversDns01WebhookArgs{...}
type ClusterIssuerSpecAcmeSolversDns01WebhookInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversDns01WebhookOutput() ClusterIssuerSpecAcmeSolversDns01WebhookOutput
	ToClusterIssuerSpecAcmeSolversDns01WebhookOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversDns01WebhookOutput
}

// Configure an external webhook based DNS01 challenge solver to manage DNS01 challenge records.
type ClusterIssuerSpecAcmeSolversDns01WebhookArgs struct {
	// Additional configuration that should be passed to the webhook apiserver when challenges are processed. This can contain arbitrary JSON data. Secret values should not be specified in this stanza. If secret values are needed (e.g. credentials for a DNS service), you should use a SecretKeySelector to reference a Secret resource. For details on the schema of this field, consult the webhook provider implementation's documentation.
	Config pulumi.MapInput `pulumi:"config"`
	// The API group name that should be used when POSTing ChallengePayload resources to the webhook apiserver. This should be the same as the GroupName specified in the webhook provider implementation.
	GroupName pulumi.StringInput `pulumi:"groupName"`
	// The name of the solver to use, as defined in the webhook provider implementation. This will typically be the name of the provider, e.g. 'cloudflare'.
	SolverName pulumi.StringInput `pulumi:"solverName"`
}

func (ClusterIssuerSpecAcmeSolversDns01WebhookArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversDns01Webhook)(nil)).Elem()
}

func (i ClusterIssuerSpecAcmeSolversDns01WebhookArgs) ToClusterIssuerSpecAcmeSolversDns01WebhookOutput() ClusterIssuerSpecAcmeSolversDns01WebhookOutput {
	return i.ToClusterIssuerSpecAcmeSolversDns01WebhookOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversDns01WebhookArgs) ToClusterIssuerSpecAcmeSolversDns01WebhookOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01WebhookOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversDns01WebhookOutput)
}

func (i ClusterIssuerSpecAcmeSolversDns01WebhookArgs) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversDns01Webhook] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversDns01Webhook]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversDns01WebhookOutputWithContext(ctx).OutputState,
	}
}

func (i ClusterIssuerSpecAcmeSolversDns01WebhookArgs) ToClusterIssuerSpecAcmeSolversDns01WebhookPtrOutput() ClusterIssuerSpecAcmeSolversDns01WebhookPtrOutput {
	return i.ToClusterIssuerSpecAcmeSolversDns01WebhookPtrOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversDns01WebhookArgs) ToClusterIssuerSpecAcmeSolversDns01WebhookPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01WebhookPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversDns01WebhookOutput).ToClusterIssuerSpecAcmeSolversDns01WebhookPtrOutputWithContext(ctx)
}

// ClusterIssuerSpecAcmeSolversDns01WebhookPtrInput is an input type that accepts ClusterIssuerSpecAcmeSolversDns01WebhookArgs, ClusterIssuerSpecAcmeSolversDns01WebhookPtr and ClusterIssuerSpecAcmeSolversDns01WebhookPtrOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversDns01WebhookPtrInput` via:
//
//	        ClusterIssuerSpecAcmeSolversDns01WebhookArgs{...}
//
//	or:
//
//	        nil
type ClusterIssuerSpecAcmeSolversDns01WebhookPtrInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversDns01WebhookPtrOutput() ClusterIssuerSpecAcmeSolversDns01WebhookPtrOutput
	ToClusterIssuerSpecAcmeSolversDns01WebhookPtrOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversDns01WebhookPtrOutput
}

type clusterIssuerSpecAcmeSolversDns01WebhookPtrType ClusterIssuerSpecAcmeSolversDns01WebhookArgs

func ClusterIssuerSpecAcmeSolversDns01WebhookPtr(v *ClusterIssuerSpecAcmeSolversDns01WebhookArgs) ClusterIssuerSpecAcmeSolversDns01WebhookPtrInput {
	return (*clusterIssuerSpecAcmeSolversDns01WebhookPtrType)(v)
}

func (*clusterIssuerSpecAcmeSolversDns01WebhookPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecAcmeSolversDns01Webhook)(nil)).Elem()
}

func (i *clusterIssuerSpecAcmeSolversDns01WebhookPtrType) ToClusterIssuerSpecAcmeSolversDns01WebhookPtrOutput() ClusterIssuerSpecAcmeSolversDns01WebhookPtrOutput {
	return i.ToClusterIssuerSpecAcmeSolversDns01WebhookPtrOutputWithContext(context.Background())
}

func (i *clusterIssuerSpecAcmeSolversDns01WebhookPtrType) ToClusterIssuerSpecAcmeSolversDns01WebhookPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01WebhookPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversDns01WebhookPtrOutput)
}

func (i *clusterIssuerSpecAcmeSolversDns01WebhookPtrType) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecAcmeSolversDns01Webhook] {
	return pulumix.Output[*ClusterIssuerSpecAcmeSolversDns01Webhook]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversDns01WebhookPtrOutputWithContext(ctx).OutputState,
	}
}

// Configure an external webhook based DNS01 challenge solver to manage DNS01 challenge records.
type ClusterIssuerSpecAcmeSolversDns01WebhookOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversDns01WebhookOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversDns01Webhook)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversDns01WebhookOutput) ToClusterIssuerSpecAcmeSolversDns01WebhookOutput() ClusterIssuerSpecAcmeSolversDns01WebhookOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversDns01WebhookOutput) ToClusterIssuerSpecAcmeSolversDns01WebhookOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01WebhookOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversDns01WebhookOutput) ToClusterIssuerSpecAcmeSolversDns01WebhookPtrOutput() ClusterIssuerSpecAcmeSolversDns01WebhookPtrOutput {
	return o.ToClusterIssuerSpecAcmeSolversDns01WebhookPtrOutputWithContext(context.Background())
}

func (o ClusterIssuerSpecAcmeSolversDns01WebhookOutput) ToClusterIssuerSpecAcmeSolversDns01WebhookPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01WebhookPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v ClusterIssuerSpecAcmeSolversDns01Webhook) *ClusterIssuerSpecAcmeSolversDns01Webhook {
		return &v
	}).(ClusterIssuerSpecAcmeSolversDns01WebhookPtrOutput)
}

func (o ClusterIssuerSpecAcmeSolversDns01WebhookOutput) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversDns01Webhook] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversDns01Webhook]{
		OutputState: o.OutputState,
	}
}

// Additional configuration that should be passed to the webhook apiserver when challenges are processed. This can contain arbitrary JSON data. Secret values should not be specified in this stanza. If secret values are needed (e.g. credentials for a DNS service), you should use a SecretKeySelector to reference a Secret resource. For details on the schema of this field, consult the webhook provider implementation's documentation.
func (o ClusterIssuerSpecAcmeSolversDns01WebhookOutput) Config() pulumi.MapOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversDns01Webhook) map[string]interface{} { return v.Config }).(pulumi.MapOutput)
}

// The API group name that should be used when POSTing ChallengePayload resources to the webhook apiserver. This should be the same as the GroupName specified in the webhook provider implementation.
func (o ClusterIssuerSpecAcmeSolversDns01WebhookOutput) GroupName() pulumi.StringOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversDns01Webhook) string { return v.GroupName }).(pulumi.StringOutput)
}

// The name of the solver to use, as defined in the webhook provider implementation. This will typically be the name of the provider, e.g. 'cloudflare'.
func (o ClusterIssuerSpecAcmeSolversDns01WebhookOutput) SolverName() pulumi.StringOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversDns01Webhook) string { return v.SolverName }).(pulumi.StringOutput)
}

type ClusterIssuerSpecAcmeSolversDns01WebhookPtrOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversDns01WebhookPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecAcmeSolversDns01Webhook)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversDns01WebhookPtrOutput) ToClusterIssuerSpecAcmeSolversDns01WebhookPtrOutput() ClusterIssuerSpecAcmeSolversDns01WebhookPtrOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversDns01WebhookPtrOutput) ToClusterIssuerSpecAcmeSolversDns01WebhookPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversDns01WebhookPtrOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversDns01WebhookPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecAcmeSolversDns01Webhook] {
	return pulumix.Output[*ClusterIssuerSpecAcmeSolversDns01Webhook]{
		OutputState: o.OutputState,
	}
}

func (o ClusterIssuerSpecAcmeSolversDns01WebhookPtrOutput) Elem() ClusterIssuerSpecAcmeSolversDns01WebhookOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversDns01Webhook) ClusterIssuerSpecAcmeSolversDns01Webhook {
		if v != nil {
			return *v
		}
		var ret ClusterIssuerSpecAcmeSolversDns01Webhook
		return ret
	}).(ClusterIssuerSpecAcmeSolversDns01WebhookOutput)
}

// Additional configuration that should be passed to the webhook apiserver when challenges are processed. This can contain arbitrary JSON data. Secret values should not be specified in this stanza. If secret values are needed (e.g. credentials for a DNS service), you should use a SecretKeySelector to reference a Secret resource. For details on the schema of this field, consult the webhook provider implementation's documentation.
func (o ClusterIssuerSpecAcmeSolversDns01WebhookPtrOutput) Config() pulumi.MapOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversDns01Webhook) map[string]interface{} {
		if v == nil {
			return nil
		}
		return v.Config
	}).(pulumi.MapOutput)
}

// The API group name that should be used when POSTing ChallengePayload resources to the webhook apiserver. This should be the same as the GroupName specified in the webhook provider implementation.
func (o ClusterIssuerSpecAcmeSolversDns01WebhookPtrOutput) GroupName() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversDns01Webhook) *string {
		if v == nil {
			return nil
		}
		return &v.GroupName
	}).(pulumi.StringPtrOutput)
}

// The name of the solver to use, as defined in the webhook provider implementation. This will typically be the name of the provider, e.g. 'cloudflare'.
func (o ClusterIssuerSpecAcmeSolversDns01WebhookPtrOutput) SolverName() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversDns01Webhook) *string {
		if v == nil {
			return nil
		}
		return &v.SolverName
	}).(pulumi.StringPtrOutput)
}

// Configures cert-manager to attempt to complete authorizations by performing the HTTP01 challenge flow. It is not possible to obtain certificates for wildcard domain names (e.g. `*.example.com`) using the HTTP01 challenge mechanism.
type ClusterIssuerSpecAcmeSolversHttp01 struct {
	// The Gateway API is a sig-network community API that models service networking in Kubernetes (https://gateway-api.sigs.k8s.io/). The Gateway solver will create HTTPRoutes with the specified labels in the same namespace as the challenge. This solver is experimental, and fields / behaviour may change in the future.
	GatewayHTTPRoute *ClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRoute `pulumi:"gatewayHTTPRoute"`
	// The ingress based HTTP01 challenge solver will solve challenges by creating or modifying Ingress resources in order to route requests for '/.well-known/acme-challenge/XYZ' to 'challenge solver' pods that are provisioned by cert-manager for each Challenge to be completed.
	Ingress *ClusterIssuerSpecAcmeSolversHttp01Ingress `pulumi:"ingress"`
}

// ClusterIssuerSpecAcmeSolversHttp01Input is an input type that accepts ClusterIssuerSpecAcmeSolversHttp01Args and ClusterIssuerSpecAcmeSolversHttp01Output values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversHttp01Input` via:
//
//	ClusterIssuerSpecAcmeSolversHttp01Args{...}
type ClusterIssuerSpecAcmeSolversHttp01Input interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversHttp01Output() ClusterIssuerSpecAcmeSolversHttp01Output
	ToClusterIssuerSpecAcmeSolversHttp01OutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversHttp01Output
}

// Configures cert-manager to attempt to complete authorizations by performing the HTTP01 challenge flow. It is not possible to obtain certificates for wildcard domain names (e.g. `*.example.com`) using the HTTP01 challenge mechanism.
type ClusterIssuerSpecAcmeSolversHttp01Args struct {
	// The Gateway API is a sig-network community API that models service networking in Kubernetes (https://gateway-api.sigs.k8s.io/). The Gateway solver will create HTTPRoutes with the specified labels in the same namespace as the challenge. This solver is experimental, and fields / behaviour may change in the future.
	GatewayHTTPRoute ClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRoutePtrInput `pulumi:"gatewayHTTPRoute"`
	// The ingress based HTTP01 challenge solver will solve challenges by creating or modifying Ingress resources in order to route requests for '/.well-known/acme-challenge/XYZ' to 'challenge solver' pods that are provisioned by cert-manager for each Challenge to be completed.
	Ingress ClusterIssuerSpecAcmeSolversHttp01IngressPtrInput `pulumi:"ingress"`
}

func (ClusterIssuerSpecAcmeSolversHttp01Args) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01)(nil)).Elem()
}

func (i ClusterIssuerSpecAcmeSolversHttp01Args) ToClusterIssuerSpecAcmeSolversHttp01Output() ClusterIssuerSpecAcmeSolversHttp01Output {
	return i.ToClusterIssuerSpecAcmeSolversHttp01OutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversHttp01Args) ToClusterIssuerSpecAcmeSolversHttp01OutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01Output {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversHttp01Output)
}

func (i ClusterIssuerSpecAcmeSolversHttp01Args) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversHttp01OutputWithContext(ctx).OutputState,
	}
}

func (i ClusterIssuerSpecAcmeSolversHttp01Args) ToClusterIssuerSpecAcmeSolversHttp01PtrOutput() ClusterIssuerSpecAcmeSolversHttp01PtrOutput {
	return i.ToClusterIssuerSpecAcmeSolversHttp01PtrOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversHttp01Args) ToClusterIssuerSpecAcmeSolversHttp01PtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01PtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversHttp01Output).ToClusterIssuerSpecAcmeSolversHttp01PtrOutputWithContext(ctx)
}

// ClusterIssuerSpecAcmeSolversHttp01PtrInput is an input type that accepts ClusterIssuerSpecAcmeSolversHttp01Args, ClusterIssuerSpecAcmeSolversHttp01Ptr and ClusterIssuerSpecAcmeSolversHttp01PtrOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversHttp01PtrInput` via:
//
//	        ClusterIssuerSpecAcmeSolversHttp01Args{...}
//
//	or:
//
//	        nil
type ClusterIssuerSpecAcmeSolversHttp01PtrInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversHttp01PtrOutput() ClusterIssuerSpecAcmeSolversHttp01PtrOutput
	ToClusterIssuerSpecAcmeSolversHttp01PtrOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversHttp01PtrOutput
}

type clusterIssuerSpecAcmeSolversHttp01PtrType ClusterIssuerSpecAcmeSolversHttp01Args

func ClusterIssuerSpecAcmeSolversHttp01Ptr(v *ClusterIssuerSpecAcmeSolversHttp01Args) ClusterIssuerSpecAcmeSolversHttp01PtrInput {
	return (*clusterIssuerSpecAcmeSolversHttp01PtrType)(v)
}

func (*clusterIssuerSpecAcmeSolversHttp01PtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecAcmeSolversHttp01)(nil)).Elem()
}

func (i *clusterIssuerSpecAcmeSolversHttp01PtrType) ToClusterIssuerSpecAcmeSolversHttp01PtrOutput() ClusterIssuerSpecAcmeSolversHttp01PtrOutput {
	return i.ToClusterIssuerSpecAcmeSolversHttp01PtrOutputWithContext(context.Background())
}

func (i *clusterIssuerSpecAcmeSolversHttp01PtrType) ToClusterIssuerSpecAcmeSolversHttp01PtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01PtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversHttp01PtrOutput)
}

func (i *clusterIssuerSpecAcmeSolversHttp01PtrType) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecAcmeSolversHttp01] {
	return pulumix.Output[*ClusterIssuerSpecAcmeSolversHttp01]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversHttp01PtrOutputWithContext(ctx).OutputState,
	}
}

// Configures cert-manager to attempt to complete authorizations by performing the HTTP01 challenge flow. It is not possible to obtain certificates for wildcard domain names (e.g. `*.example.com`) using the HTTP01 challenge mechanism.
type ClusterIssuerSpecAcmeSolversHttp01Output struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversHttp01Output) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversHttp01Output) ToClusterIssuerSpecAcmeSolversHttp01Output() ClusterIssuerSpecAcmeSolversHttp01Output {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01Output) ToClusterIssuerSpecAcmeSolversHttp01OutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01Output {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01Output) ToClusterIssuerSpecAcmeSolversHttp01PtrOutput() ClusterIssuerSpecAcmeSolversHttp01PtrOutput {
	return o.ToClusterIssuerSpecAcmeSolversHttp01PtrOutputWithContext(context.Background())
}

func (o ClusterIssuerSpecAcmeSolversHttp01Output) ToClusterIssuerSpecAcmeSolversHttp01PtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01PtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v ClusterIssuerSpecAcmeSolversHttp01) *ClusterIssuerSpecAcmeSolversHttp01 {
		return &v
	}).(ClusterIssuerSpecAcmeSolversHttp01PtrOutput)
}

func (o ClusterIssuerSpecAcmeSolversHttp01Output) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01]{
		OutputState: o.OutputState,
	}
}

// The Gateway API is a sig-network community API that models service networking in Kubernetes (https://gateway-api.sigs.k8s.io/). The Gateway solver will create HTTPRoutes with the specified labels in the same namespace as the challenge. This solver is experimental, and fields / behaviour may change in the future.
func (o ClusterIssuerSpecAcmeSolversHttp01Output) GatewayHTTPRoute() ClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRoutePtrOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversHttp01) *ClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRoute {
		return v.GatewayHTTPRoute
	}).(ClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRoutePtrOutput)
}

// The ingress based HTTP01 challenge solver will solve challenges by creating or modifying Ingress resources in order to route requests for '/.well-known/acme-challenge/XYZ' to 'challenge solver' pods that are provisioned by cert-manager for each Challenge to be completed.
func (o ClusterIssuerSpecAcmeSolversHttp01Output) Ingress() ClusterIssuerSpecAcmeSolversHttp01IngressPtrOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversHttp01) *ClusterIssuerSpecAcmeSolversHttp01Ingress {
		return v.Ingress
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressPtrOutput)
}

type ClusterIssuerSpecAcmeSolversHttp01PtrOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversHttp01PtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecAcmeSolversHttp01)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversHttp01PtrOutput) ToClusterIssuerSpecAcmeSolversHttp01PtrOutput() ClusterIssuerSpecAcmeSolversHttp01PtrOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01PtrOutput) ToClusterIssuerSpecAcmeSolversHttp01PtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01PtrOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01PtrOutput) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecAcmeSolversHttp01] {
	return pulumix.Output[*ClusterIssuerSpecAcmeSolversHttp01]{
		OutputState: o.OutputState,
	}
}

func (o ClusterIssuerSpecAcmeSolversHttp01PtrOutput) Elem() ClusterIssuerSpecAcmeSolversHttp01Output {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversHttp01) ClusterIssuerSpecAcmeSolversHttp01 {
		if v != nil {
			return *v
		}
		var ret ClusterIssuerSpecAcmeSolversHttp01
		return ret
	}).(ClusterIssuerSpecAcmeSolversHttp01Output)
}

// The Gateway API is a sig-network community API that models service networking in Kubernetes (https://gateway-api.sigs.k8s.io/). The Gateway solver will create HTTPRoutes with the specified labels in the same namespace as the challenge. This solver is experimental, and fields / behaviour may change in the future.
func (o ClusterIssuerSpecAcmeSolversHttp01PtrOutput) GatewayHTTPRoute() ClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRoutePtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversHttp01) *ClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRoute {
		if v == nil {
			return nil
		}
		return v.GatewayHTTPRoute
	}).(ClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRoutePtrOutput)
}

// The ingress based HTTP01 challenge solver will solve challenges by creating or modifying Ingress resources in order to route requests for '/.well-known/acme-challenge/XYZ' to 'challenge solver' pods that are provisioned by cert-manager for each Challenge to be completed.
func (o ClusterIssuerSpecAcmeSolversHttp01PtrOutput) Ingress() ClusterIssuerSpecAcmeSolversHttp01IngressPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversHttp01) *ClusterIssuerSpecAcmeSolversHttp01Ingress {
		if v == nil {
			return nil
		}
		return v.Ingress
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressPtrOutput)
}

// The Gateway API is a sig-network community API that models service networking in Kubernetes (https://gateway-api.sigs.k8s.io/). The Gateway solver will create HTTPRoutes with the specified labels in the same namespace as the challenge. This solver is experimental, and fields / behaviour may change in the future.
type ClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRoute struct {
	// The labels that cert-manager will use when creating the temporary HTTPRoute needed for solving the HTTP-01 challenge. These labels must match the label selector of at least one Gateway.
	Labels map[string]string `pulumi:"labels"`
	// Optional service type for Kubernetes solver service. Supported values are NodePort or ClusterIP. If unset, defaults to NodePort.
	ServiceType *string `pulumi:"serviceType"`
}

// ClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRouteInput is an input type that accepts ClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRouteArgs and ClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRouteOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRouteInput` via:
//
//	ClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRouteArgs{...}
type ClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRouteInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRouteOutput() ClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRouteOutput
	ToClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRouteOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRouteOutput
}

// The Gateway API is a sig-network community API that models service networking in Kubernetes (https://gateway-api.sigs.k8s.io/). The Gateway solver will create HTTPRoutes with the specified labels in the same namespace as the challenge. This solver is experimental, and fields / behaviour may change in the future.
type ClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRouteArgs struct {
	// The labels that cert-manager will use when creating the temporary HTTPRoute needed for solving the HTTP-01 challenge. These labels must match the label selector of at least one Gateway.
	Labels pulumi.StringMapInput `pulumi:"labels"`
	// Optional service type for Kubernetes solver service. Supported values are NodePort or ClusterIP. If unset, defaults to NodePort.
	ServiceType pulumi.StringPtrInput `pulumi:"serviceType"`
}

func (ClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRouteArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRoute)(nil)).Elem()
}

func (i ClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRouteArgs) ToClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRouteOutput() ClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRouteOutput {
	return i.ToClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRouteOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRouteArgs) ToClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRouteOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRouteOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRouteOutput)
}

func (i ClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRouteArgs) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRoute] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRoute]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRouteOutputWithContext(ctx).OutputState,
	}
}

func (i ClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRouteArgs) ToClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRoutePtrOutput() ClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRoutePtrOutput {
	return i.ToClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRoutePtrOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRouteArgs) ToClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRoutePtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRoutePtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRouteOutput).ToClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRoutePtrOutputWithContext(ctx)
}

// ClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRoutePtrInput is an input type that accepts ClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRouteArgs, ClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRoutePtr and ClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRoutePtrOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRoutePtrInput` via:
//
//	        ClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRouteArgs{...}
//
//	or:
//
//	        nil
type ClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRoutePtrInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRoutePtrOutput() ClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRoutePtrOutput
	ToClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRoutePtrOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRoutePtrOutput
}

type clusterIssuerSpecAcmeSolversHttp01GatewayHTTPRoutePtrType ClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRouteArgs

func ClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRoutePtr(v *ClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRouteArgs) ClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRoutePtrInput {
	return (*clusterIssuerSpecAcmeSolversHttp01GatewayHTTPRoutePtrType)(v)
}

func (*clusterIssuerSpecAcmeSolversHttp01GatewayHTTPRoutePtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRoute)(nil)).Elem()
}

func (i *clusterIssuerSpecAcmeSolversHttp01GatewayHTTPRoutePtrType) ToClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRoutePtrOutput() ClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRoutePtrOutput {
	return i.ToClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRoutePtrOutputWithContext(context.Background())
}

func (i *clusterIssuerSpecAcmeSolversHttp01GatewayHTTPRoutePtrType) ToClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRoutePtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRoutePtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRoutePtrOutput)
}

func (i *clusterIssuerSpecAcmeSolversHttp01GatewayHTTPRoutePtrType) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRoute] {
	return pulumix.Output[*ClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRoute]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRoutePtrOutputWithContext(ctx).OutputState,
	}
}

// The Gateway API is a sig-network community API that models service networking in Kubernetes (https://gateway-api.sigs.k8s.io/). The Gateway solver will create HTTPRoutes with the specified labels in the same namespace as the challenge. This solver is experimental, and fields / behaviour may change in the future.
type ClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRouteOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRouteOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRoute)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRouteOutput) ToClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRouteOutput() ClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRouteOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRouteOutput) ToClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRouteOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRouteOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRouteOutput) ToClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRoutePtrOutput() ClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRoutePtrOutput {
	return o.ToClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRoutePtrOutputWithContext(context.Background())
}

func (o ClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRouteOutput) ToClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRoutePtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRoutePtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v ClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRoute) *ClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRoute {
		return &v
	}).(ClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRoutePtrOutput)
}

func (o ClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRouteOutput) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRoute] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRoute]{
		OutputState: o.OutputState,
	}
}

// The labels that cert-manager will use when creating the temporary HTTPRoute needed for solving the HTTP-01 challenge. These labels must match the label selector of at least one Gateway.
func (o ClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRouteOutput) Labels() pulumi.StringMapOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRoute) map[string]string { return v.Labels }).(pulumi.StringMapOutput)
}

// Optional service type for Kubernetes solver service. Supported values are NodePort or ClusterIP. If unset, defaults to NodePort.
func (o ClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRouteOutput) ServiceType() pulumi.StringPtrOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRoute) *string { return v.ServiceType }).(pulumi.StringPtrOutput)
}

type ClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRoutePtrOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRoutePtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRoute)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRoutePtrOutput) ToClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRoutePtrOutput() ClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRoutePtrOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRoutePtrOutput) ToClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRoutePtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRoutePtrOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRoutePtrOutput) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRoute] {
	return pulumix.Output[*ClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRoute]{
		OutputState: o.OutputState,
	}
}

func (o ClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRoutePtrOutput) Elem() ClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRouteOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRoute) ClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRoute {
		if v != nil {
			return *v
		}
		var ret ClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRoute
		return ret
	}).(ClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRouteOutput)
}

// The labels that cert-manager will use when creating the temporary HTTPRoute needed for solving the HTTP-01 challenge. These labels must match the label selector of at least one Gateway.
func (o ClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRoutePtrOutput) Labels() pulumi.StringMapOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRoute) map[string]string {
		if v == nil {
			return nil
		}
		return v.Labels
	}).(pulumi.StringMapOutput)
}

// Optional service type for Kubernetes solver service. Supported values are NodePort or ClusterIP. If unset, defaults to NodePort.
func (o ClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRoutePtrOutput) ServiceType() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRoute) *string {
		if v == nil {
			return nil
		}
		return v.ServiceType
	}).(pulumi.StringPtrOutput)
}

// The labels that cert-manager will use when creating the temporary HTTPRoute needed for solving the HTTP-01 challenge. These labels must match the label selector of at least one Gateway.
type ClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRouteLabels struct {
}

// The ingress based HTTP01 challenge solver will solve challenges by creating or modifying Ingress resources in order to route requests for '/.well-known/acme-challenge/XYZ' to 'challenge solver' pods that are provisioned by cert-manager for each Challenge to be completed.
type ClusterIssuerSpecAcmeSolversHttp01Ingress struct {
	// The ingress class to use when creating Ingress resources to solve ACME challenges that use this challenge solver. Only one of 'class' or 'name' may be specified.
	Class *string `pulumi:"class"`
	// Optional ingress template used to configure the ACME challenge solver ingress used for HTTP01 challenges.
	IngressTemplate *ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplate `pulumi:"ingressTemplate"`
	// The name of the ingress resource that should have ACME challenge solving routes inserted into it in order to solve HTTP01 challenges. This is typically used in conjunction with ingress controllers like ingress-gce, which maintains a 1:1 mapping between external IPs and ingress resources.
	Name *string `pulumi:"name"`
	// Optional pod template used to configure the ACME challenge solver pods used for HTTP01 challenges
	PodTemplate *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplate `pulumi:"podTemplate"`
	// Optional service type for Kubernetes solver service. Supported values are NodePort or ClusterIP. If unset, defaults to NodePort.
	ServiceType *string `pulumi:"serviceType"`
}

// ClusterIssuerSpecAcmeSolversHttp01IngressInput is an input type that accepts ClusterIssuerSpecAcmeSolversHttp01IngressArgs and ClusterIssuerSpecAcmeSolversHttp01IngressOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversHttp01IngressInput` via:
//
//	ClusterIssuerSpecAcmeSolversHttp01IngressArgs{...}
type ClusterIssuerSpecAcmeSolversHttp01IngressInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversHttp01IngressOutput() ClusterIssuerSpecAcmeSolversHttp01IngressOutput
	ToClusterIssuerSpecAcmeSolversHttp01IngressOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressOutput
}

// The ingress based HTTP01 challenge solver will solve challenges by creating or modifying Ingress resources in order to route requests for '/.well-known/acme-challenge/XYZ' to 'challenge solver' pods that are provisioned by cert-manager for each Challenge to be completed.
type ClusterIssuerSpecAcmeSolversHttp01IngressArgs struct {
	// The ingress class to use when creating Ingress resources to solve ACME challenges that use this challenge solver. Only one of 'class' or 'name' may be specified.
	Class pulumi.StringPtrInput `pulumi:"class"`
	// Optional ingress template used to configure the ACME challenge solver ingress used for HTTP01 challenges.
	IngressTemplate ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplatePtrInput `pulumi:"ingressTemplate"`
	// The name of the ingress resource that should have ACME challenge solving routes inserted into it in order to solve HTTP01 challenges. This is typically used in conjunction with ingress controllers like ingress-gce, which maintains a 1:1 mapping between external IPs and ingress resources.
	Name pulumi.StringPtrInput `pulumi:"name"`
	// Optional pod template used to configure the ACME challenge solver pods used for HTTP01 challenges
	PodTemplate ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplatePtrInput `pulumi:"podTemplate"`
	// Optional service type for Kubernetes solver service. Supported values are NodePort or ClusterIP. If unset, defaults to NodePort.
	ServiceType pulumi.StringPtrInput `pulumi:"serviceType"`
}

func (ClusterIssuerSpecAcmeSolversHttp01IngressArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01Ingress)(nil)).Elem()
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressOutput() ClusterIssuerSpecAcmeSolversHttp01IngressOutput {
	return i.ToClusterIssuerSpecAcmeSolversHttp01IngressOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversHttp01IngressOutput)
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressArgs) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01Ingress] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01Ingress]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversHttp01IngressOutputWithContext(ctx).OutputState,
	}
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressPtrOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPtrOutput {
	return i.ToClusterIssuerSpecAcmeSolversHttp01IngressPtrOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversHttp01IngressOutput).ToClusterIssuerSpecAcmeSolversHttp01IngressPtrOutputWithContext(ctx)
}

// ClusterIssuerSpecAcmeSolversHttp01IngressPtrInput is an input type that accepts ClusterIssuerSpecAcmeSolversHttp01IngressArgs, ClusterIssuerSpecAcmeSolversHttp01IngressPtr and ClusterIssuerSpecAcmeSolversHttp01IngressPtrOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversHttp01IngressPtrInput` via:
//
//	        ClusterIssuerSpecAcmeSolversHttp01IngressArgs{...}
//
//	or:
//
//	        nil
type ClusterIssuerSpecAcmeSolversHttp01IngressPtrInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversHttp01IngressPtrOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPtrOutput
	ToClusterIssuerSpecAcmeSolversHttp01IngressPtrOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPtrOutput
}

type clusterIssuerSpecAcmeSolversHttp01IngressPtrType ClusterIssuerSpecAcmeSolversHttp01IngressArgs

func ClusterIssuerSpecAcmeSolversHttp01IngressPtr(v *ClusterIssuerSpecAcmeSolversHttp01IngressArgs) ClusterIssuerSpecAcmeSolversHttp01IngressPtrInput {
	return (*clusterIssuerSpecAcmeSolversHttp01IngressPtrType)(v)
}

func (*clusterIssuerSpecAcmeSolversHttp01IngressPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecAcmeSolversHttp01Ingress)(nil)).Elem()
}

func (i *clusterIssuerSpecAcmeSolversHttp01IngressPtrType) ToClusterIssuerSpecAcmeSolversHttp01IngressPtrOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPtrOutput {
	return i.ToClusterIssuerSpecAcmeSolversHttp01IngressPtrOutputWithContext(context.Background())
}

func (i *clusterIssuerSpecAcmeSolversHttp01IngressPtrType) ToClusterIssuerSpecAcmeSolversHttp01IngressPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversHttp01IngressPtrOutput)
}

func (i *clusterIssuerSpecAcmeSolversHttp01IngressPtrType) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecAcmeSolversHttp01Ingress] {
	return pulumix.Output[*ClusterIssuerSpecAcmeSolversHttp01Ingress]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversHttp01IngressPtrOutputWithContext(ctx).OutputState,
	}
}

// The ingress based HTTP01 challenge solver will solve challenges by creating or modifying Ingress resources in order to route requests for '/.well-known/acme-challenge/XYZ' to 'challenge solver' pods that are provisioned by cert-manager for each Challenge to be completed.
type ClusterIssuerSpecAcmeSolversHttp01IngressOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversHttp01IngressOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01Ingress)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressOutput() ClusterIssuerSpecAcmeSolversHttp01IngressOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPtrOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPtrOutput {
	return o.ToClusterIssuerSpecAcmeSolversHttp01IngressPtrOutputWithContext(context.Background())
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v ClusterIssuerSpecAcmeSolversHttp01Ingress) *ClusterIssuerSpecAcmeSolversHttp01Ingress {
		return &v
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressPtrOutput)
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressOutput) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01Ingress] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01Ingress]{
		OutputState: o.OutputState,
	}
}

// The ingress class to use when creating Ingress resources to solve ACME challenges that use this challenge solver. Only one of 'class' or 'name' may be specified.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressOutput) Class() pulumi.StringPtrOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversHttp01Ingress) *string { return v.Class }).(pulumi.StringPtrOutput)
}

// Optional ingress template used to configure the ACME challenge solver ingress used for HTTP01 challenges.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressOutput) IngressTemplate() ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplatePtrOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversHttp01Ingress) *ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplate {
		return v.IngressTemplate
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplatePtrOutput)
}

// The name of the ingress resource that should have ACME challenge solving routes inserted into it in order to solve HTTP01 challenges. This is typically used in conjunction with ingress controllers like ingress-gce, which maintains a 1:1 mapping between external IPs and ingress resources.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressOutput) Name() pulumi.StringPtrOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversHttp01Ingress) *string { return v.Name }).(pulumi.StringPtrOutput)
}

// Optional pod template used to configure the ACME challenge solver pods used for HTTP01 challenges
func (o ClusterIssuerSpecAcmeSolversHttp01IngressOutput) PodTemplate() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplatePtrOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversHttp01Ingress) *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplate {
		return v.PodTemplate
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplatePtrOutput)
}

// Optional service type for Kubernetes solver service. Supported values are NodePort or ClusterIP. If unset, defaults to NodePort.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressOutput) ServiceType() pulumi.StringPtrOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversHttp01Ingress) *string { return v.ServiceType }).(pulumi.StringPtrOutput)
}

type ClusterIssuerSpecAcmeSolversHttp01IngressPtrOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversHttp01IngressPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecAcmeSolversHttp01Ingress)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPtrOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPtrOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPtrOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPtrOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPtrOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecAcmeSolversHttp01Ingress] {
	return pulumix.Output[*ClusterIssuerSpecAcmeSolversHttp01Ingress]{
		OutputState: o.OutputState,
	}
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPtrOutput) Elem() ClusterIssuerSpecAcmeSolversHttp01IngressOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversHttp01Ingress) ClusterIssuerSpecAcmeSolversHttp01Ingress {
		if v != nil {
			return *v
		}
		var ret ClusterIssuerSpecAcmeSolversHttp01Ingress
		return ret
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressOutput)
}

// The ingress class to use when creating Ingress resources to solve ACME challenges that use this challenge solver. Only one of 'class' or 'name' may be specified.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPtrOutput) Class() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversHttp01Ingress) *string {
		if v == nil {
			return nil
		}
		return v.Class
	}).(pulumi.StringPtrOutput)
}

// Optional ingress template used to configure the ACME challenge solver ingress used for HTTP01 challenges.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPtrOutput) IngressTemplate() ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplatePtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversHttp01Ingress) *ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplate {
		if v == nil {
			return nil
		}
		return v.IngressTemplate
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplatePtrOutput)
}

// The name of the ingress resource that should have ACME challenge solving routes inserted into it in order to solve HTTP01 challenges. This is typically used in conjunction with ingress controllers like ingress-gce, which maintains a 1:1 mapping between external IPs and ingress resources.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPtrOutput) Name() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversHttp01Ingress) *string {
		if v == nil {
			return nil
		}
		return v.Name
	}).(pulumi.StringPtrOutput)
}

// Optional pod template used to configure the ACME challenge solver pods used for HTTP01 challenges
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPtrOutput) PodTemplate() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplatePtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversHttp01Ingress) *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplate {
		if v == nil {
			return nil
		}
		return v.PodTemplate
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplatePtrOutput)
}

// Optional service type for Kubernetes solver service. Supported values are NodePort or ClusterIP. If unset, defaults to NodePort.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPtrOutput) ServiceType() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversHttp01Ingress) *string {
		if v == nil {
			return nil
		}
		return v.ServiceType
	}).(pulumi.StringPtrOutput)
}

// Optional ingress template used to configure the ACME challenge solver ingress used for HTTP01 challenges.
type ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplate struct {
	// ObjectMeta overrides for the ingress used to solve HTTP01 challenges. Only the 'labels' and 'annotations' fields may be set. If labels or annotations overlap with in-built values, the values here will override the in-built values.
	Metadata *ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadata `pulumi:"metadata"`
}

// ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateInput is an input type that accepts ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateArgs and ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateInput` via:
//
//	ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateArgs{...}
type ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateOutput() ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateOutput
	ToClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateOutput
}

// Optional ingress template used to configure the ACME challenge solver ingress used for HTTP01 challenges.
type ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateArgs struct {
	// ObjectMeta overrides for the ingress used to solve HTTP01 challenges. Only the 'labels' and 'annotations' fields may be set. If labels or annotations overlap with in-built values, the values here will override the in-built values.
	Metadata ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataPtrInput `pulumi:"metadata"`
}

func (ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplate)(nil)).Elem()
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateOutput() ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateOutput {
	return i.ToClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateOutput)
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateArgs) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplate] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplate]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateOutputWithContext(ctx).OutputState,
	}
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplatePtrOutput() ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplatePtrOutput {
	return i.ToClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplatePtrOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplatePtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplatePtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateOutput).ToClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplatePtrOutputWithContext(ctx)
}

// ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplatePtrInput is an input type that accepts ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateArgs, ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplatePtr and ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplatePtrOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplatePtrInput` via:
//
//	        ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateArgs{...}
//
//	or:
//
//	        nil
type ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplatePtrInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplatePtrOutput() ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplatePtrOutput
	ToClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplatePtrOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplatePtrOutput
}

type clusterIssuerSpecAcmeSolversHttp01IngressIngressTemplatePtrType ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateArgs

func ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplatePtr(v *ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateArgs) ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplatePtrInput {
	return (*clusterIssuerSpecAcmeSolversHttp01IngressIngressTemplatePtrType)(v)
}

func (*clusterIssuerSpecAcmeSolversHttp01IngressIngressTemplatePtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplate)(nil)).Elem()
}

func (i *clusterIssuerSpecAcmeSolversHttp01IngressIngressTemplatePtrType) ToClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplatePtrOutput() ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplatePtrOutput {
	return i.ToClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplatePtrOutputWithContext(context.Background())
}

func (i *clusterIssuerSpecAcmeSolversHttp01IngressIngressTemplatePtrType) ToClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplatePtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplatePtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplatePtrOutput)
}

func (i *clusterIssuerSpecAcmeSolversHttp01IngressIngressTemplatePtrType) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplate] {
	return pulumix.Output[*ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplate]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplatePtrOutputWithContext(ctx).OutputState,
	}
}

// Optional ingress template used to configure the ACME challenge solver ingress used for HTTP01 challenges.
type ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplate)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateOutput() ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplatePtrOutput() ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplatePtrOutput {
	return o.ToClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplatePtrOutputWithContext(context.Background())
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplatePtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplatePtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplate) *ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplate {
		return &v
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplatePtrOutput)
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateOutput) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplate] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplate]{
		OutputState: o.OutputState,
	}
}

// ObjectMeta overrides for the ingress used to solve HTTP01 challenges. Only the 'labels' and 'annotations' fields may be set. If labels or annotations overlap with in-built values, the values here will override the in-built values.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateOutput) Metadata() ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataPtrOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplate) *ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadata {
		return v.Metadata
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataPtrOutput)
}

type ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplatePtrOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplatePtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplate)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplatePtrOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplatePtrOutput() ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplatePtrOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplatePtrOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplatePtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplatePtrOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplatePtrOutput) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplate] {
	return pulumix.Output[*ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplate]{
		OutputState: o.OutputState,
	}
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplatePtrOutput) Elem() ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplate) ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplate {
		if v != nil {
			return *v
		}
		var ret ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplate
		return ret
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateOutput)
}

// ObjectMeta overrides for the ingress used to solve HTTP01 challenges. Only the 'labels' and 'annotations' fields may be set. If labels or annotations overlap with in-built values, the values here will override the in-built values.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplatePtrOutput) Metadata() ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplate) *ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadata {
		if v == nil {
			return nil
		}
		return v.Metadata
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataPtrOutput)
}

// ObjectMeta overrides for the ingress used to solve HTTP01 challenges. Only the 'labels' and 'annotations' fields may be set. If labels or annotations overlap with in-built values, the values here will override the in-built values.
type ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadata struct {
	// Annotations that should be added to the created ACME HTTP01 solver ingress.
	Annotations map[string]string `pulumi:"annotations"`
	// Labels that should be added to the created ACME HTTP01 solver ingress.
	Labels map[string]string `pulumi:"labels"`
}

// ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataInput is an input type that accepts ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataArgs and ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataInput` via:
//
//	ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataArgs{...}
type ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataOutput() ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataOutput
	ToClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataOutput
}

// ObjectMeta overrides for the ingress used to solve HTTP01 challenges. Only the 'labels' and 'annotations' fields may be set. If labels or annotations overlap with in-built values, the values here will override the in-built values.
type ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataArgs struct {
	// Annotations that should be added to the created ACME HTTP01 solver ingress.
	Annotations pulumi.StringMapInput `pulumi:"annotations"`
	// Labels that should be added to the created ACME HTTP01 solver ingress.
	Labels pulumi.StringMapInput `pulumi:"labels"`
}

func (ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadata)(nil)).Elem()
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataOutput() ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataOutput {
	return i.ToClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataOutput)
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataArgs) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadata] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadata]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataOutputWithContext(ctx).OutputState,
	}
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataPtrOutput() ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataPtrOutput {
	return i.ToClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataPtrOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataOutput).ToClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataPtrOutputWithContext(ctx)
}

// ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataPtrInput is an input type that accepts ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataArgs, ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataPtr and ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataPtrOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataPtrInput` via:
//
//	        ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataArgs{...}
//
//	or:
//
//	        nil
type ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataPtrInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataPtrOutput() ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataPtrOutput
	ToClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataPtrOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataPtrOutput
}

type clusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataPtrType ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataArgs

func ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataPtr(v *ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataArgs) ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataPtrInput {
	return (*clusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataPtrType)(v)
}

func (*clusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadata)(nil)).Elem()
}

func (i *clusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataPtrType) ToClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataPtrOutput() ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataPtrOutput {
	return i.ToClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataPtrOutputWithContext(context.Background())
}

func (i *clusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataPtrType) ToClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataPtrOutput)
}

func (i *clusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataPtrType) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadata] {
	return pulumix.Output[*ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadata]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataPtrOutputWithContext(ctx).OutputState,
	}
}

// ObjectMeta overrides for the ingress used to solve HTTP01 challenges. Only the 'labels' and 'annotations' fields may be set. If labels or annotations overlap with in-built values, the values here will override the in-built values.
type ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadata)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataOutput() ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataPtrOutput() ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataPtrOutput {
	return o.ToClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataPtrOutputWithContext(context.Background())
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadata) *ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadata {
		return &v
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataPtrOutput)
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataOutput) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadata] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadata]{
		OutputState: o.OutputState,
	}
}

// Annotations that should be added to the created ACME HTTP01 solver ingress.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataOutput) Annotations() pulumi.StringMapOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadata) map[string]string {
		return v.Annotations
	}).(pulumi.StringMapOutput)
}

// Labels that should be added to the created ACME HTTP01 solver ingress.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataOutput) Labels() pulumi.StringMapOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadata) map[string]string {
		return v.Labels
	}).(pulumi.StringMapOutput)
}

type ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataPtrOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadata)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataPtrOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataPtrOutput() ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataPtrOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataPtrOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataPtrOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadata] {
	return pulumix.Output[*ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadata]{
		OutputState: o.OutputState,
	}
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataPtrOutput) Elem() ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadata) ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadata {
		if v != nil {
			return *v
		}
		var ret ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadata
		return ret
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataOutput)
}

// Annotations that should be added to the created ACME HTTP01 solver ingress.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataPtrOutput) Annotations() pulumi.StringMapOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadata) map[string]string {
		if v == nil {
			return nil
		}
		return v.Annotations
	}).(pulumi.StringMapOutput)
}

// Labels that should be added to the created ACME HTTP01 solver ingress.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataPtrOutput) Labels() pulumi.StringMapOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadata) map[string]string {
		if v == nil {
			return nil
		}
		return v.Labels
	}).(pulumi.StringMapOutput)
}

// Annotations that should be added to the created ACME HTTP01 solver ingress.
type ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataAnnotations struct {
}

// Labels that should be added to the created ACME HTTP01 solver ingress.
type ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataLabels struct {
}

// Optional pod template used to configure the ACME challenge solver pods used for HTTP01 challenges
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplate struct {
	// ObjectMeta overrides for the pod used to solve HTTP01 challenges. Only the 'labels' and 'annotations' fields may be set. If labels or annotations overlap with in-built values, the values here will override the in-built values.
	Metadata *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadata `pulumi:"metadata"`
	// PodSpec defines overrides for the HTTP01 challenge solver pod. Only the 'priorityClassName', 'nodeSelector', 'affinity', 'serviceAccountName' and 'tolerations' fields are supported currently. All other fields will be ignored.
	Spec *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpec `pulumi:"spec"`
}

// ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateInput is an input type that accepts ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateArgs and ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateInput` via:
//
//	ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateArgs{...}
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateOutput
	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateOutput
}

// Optional pod template used to configure the ACME challenge solver pods used for HTTP01 challenges
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateArgs struct {
	// ObjectMeta overrides for the pod used to solve HTTP01 challenges. Only the 'labels' and 'annotations' fields may be set. If labels or annotations overlap with in-built values, the values here will override the in-built values.
	Metadata ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataPtrInput `pulumi:"metadata"`
	// PodSpec defines overrides for the HTTP01 challenge solver pod. Only the 'priorityClassName', 'nodeSelector', 'affinity', 'serviceAccountName' and 'tolerations' fields are supported currently. All other fields will be ignored.
	Spec ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtrInput `pulumi:"spec"`
}

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplate)(nil)).Elem()
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateOutput {
	return i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateOutput)
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateArgs) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplate] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplate]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateOutputWithContext(ctx).OutputState,
	}
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplatePtrOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplatePtrOutput {
	return i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplatePtrOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplatePtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplatePtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateOutput).ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplatePtrOutputWithContext(ctx)
}

// ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplatePtrInput is an input type that accepts ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateArgs, ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplatePtr and ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplatePtrOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplatePtrInput` via:
//
//	        ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateArgs{...}
//
//	or:
//
//	        nil
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplatePtrInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplatePtrOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplatePtrOutput
	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplatePtrOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplatePtrOutput
}

type clusterIssuerSpecAcmeSolversHttp01IngressPodTemplatePtrType ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateArgs

func ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplatePtr(v *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateArgs) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplatePtrInput {
	return (*clusterIssuerSpecAcmeSolversHttp01IngressPodTemplatePtrType)(v)
}

func (*clusterIssuerSpecAcmeSolversHttp01IngressPodTemplatePtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplate)(nil)).Elem()
}

func (i *clusterIssuerSpecAcmeSolversHttp01IngressPodTemplatePtrType) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplatePtrOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplatePtrOutput {
	return i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplatePtrOutputWithContext(context.Background())
}

func (i *clusterIssuerSpecAcmeSolversHttp01IngressPodTemplatePtrType) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplatePtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplatePtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplatePtrOutput)
}

func (i *clusterIssuerSpecAcmeSolversHttp01IngressPodTemplatePtrType) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplate] {
	return pulumix.Output[*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplate]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplatePtrOutputWithContext(ctx).OutputState,
	}
}

// Optional pod template used to configure the ACME challenge solver pods used for HTTP01 challenges
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplate)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplatePtrOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplatePtrOutput {
	return o.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplatePtrOutputWithContext(context.Background())
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplatePtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplatePtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplate) *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplate {
		return &v
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplatePtrOutput)
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateOutput) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplate] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplate]{
		OutputState: o.OutputState,
	}
}

// ObjectMeta overrides for the pod used to solve HTTP01 challenges. Only the 'labels' and 'annotations' fields may be set. If labels or annotations overlap with in-built values, the values here will override the in-built values.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateOutput) Metadata() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataPtrOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplate) *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadata {
		return v.Metadata
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataPtrOutput)
}

// PodSpec defines overrides for the HTTP01 challenge solver pod. Only the 'priorityClassName', 'nodeSelector', 'affinity', 'serviceAccountName' and 'tolerations' fields are supported currently. All other fields will be ignored.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateOutput) Spec() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtrOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplate) *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpec {
		return v.Spec
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtrOutput)
}

type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplatePtrOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplatePtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplate)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplatePtrOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplatePtrOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplatePtrOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplatePtrOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplatePtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplatePtrOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplatePtrOutput) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplate] {
	return pulumix.Output[*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplate]{
		OutputState: o.OutputState,
	}
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplatePtrOutput) Elem() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplate) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplate {
		if v != nil {
			return *v
		}
		var ret ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplate
		return ret
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateOutput)
}

// ObjectMeta overrides for the pod used to solve HTTP01 challenges. Only the 'labels' and 'annotations' fields may be set. If labels or annotations overlap with in-built values, the values here will override the in-built values.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplatePtrOutput) Metadata() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplate) *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadata {
		if v == nil {
			return nil
		}
		return v.Metadata
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataPtrOutput)
}

// PodSpec defines overrides for the HTTP01 challenge solver pod. Only the 'priorityClassName', 'nodeSelector', 'affinity', 'serviceAccountName' and 'tolerations' fields are supported currently. All other fields will be ignored.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplatePtrOutput) Spec() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplate) *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpec {
		if v == nil {
			return nil
		}
		return v.Spec
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtrOutput)
}

// ObjectMeta overrides for the pod used to solve HTTP01 challenges. Only the 'labels' and 'annotations' fields may be set. If labels or annotations overlap with in-built values, the values here will override the in-built values.
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadata struct {
	// Annotations that should be added to the create ACME HTTP01 solver pods.
	Annotations map[string]string `pulumi:"annotations"`
	// Labels that should be added to the created ACME HTTP01 solver pods.
	Labels map[string]string `pulumi:"labels"`
}

// ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataInput is an input type that accepts ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataArgs and ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataInput` via:
//
//	ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataArgs{...}
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataOutput
	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataOutput
}

// ObjectMeta overrides for the pod used to solve HTTP01 challenges. Only the 'labels' and 'annotations' fields may be set. If labels or annotations overlap with in-built values, the values here will override the in-built values.
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataArgs struct {
	// Annotations that should be added to the create ACME HTTP01 solver pods.
	Annotations pulumi.StringMapInput `pulumi:"annotations"`
	// Labels that should be added to the created ACME HTTP01 solver pods.
	Labels pulumi.StringMapInput `pulumi:"labels"`
}

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadata)(nil)).Elem()
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataOutput {
	return i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataOutput)
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataArgs) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadata] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadata]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataOutputWithContext(ctx).OutputState,
	}
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataPtrOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataPtrOutput {
	return i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataPtrOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataOutput).ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataPtrOutputWithContext(ctx)
}

// ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataPtrInput is an input type that accepts ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataArgs, ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataPtr and ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataPtrOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataPtrInput` via:
//
//	        ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataArgs{...}
//
//	or:
//
//	        nil
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataPtrInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataPtrOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataPtrOutput
	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataPtrOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataPtrOutput
}

type clusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataPtrType ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataArgs

func ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataPtr(v *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataArgs) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataPtrInput {
	return (*clusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataPtrType)(v)
}

func (*clusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadata)(nil)).Elem()
}

func (i *clusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataPtrType) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataPtrOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataPtrOutput {
	return i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataPtrOutputWithContext(context.Background())
}

func (i *clusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataPtrType) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataPtrOutput)
}

func (i *clusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataPtrType) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadata] {
	return pulumix.Output[*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadata]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataPtrOutputWithContext(ctx).OutputState,
	}
}

// ObjectMeta overrides for the pod used to solve HTTP01 challenges. Only the 'labels' and 'annotations' fields may be set. If labels or annotations overlap with in-built values, the values here will override the in-built values.
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadata)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataPtrOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataPtrOutput {
	return o.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataPtrOutputWithContext(context.Background())
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadata) *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadata {
		return &v
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataPtrOutput)
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataOutput) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadata] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadata]{
		OutputState: o.OutputState,
	}
}

// Annotations that should be added to the create ACME HTTP01 solver pods.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataOutput) Annotations() pulumi.StringMapOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadata) map[string]string {
		return v.Annotations
	}).(pulumi.StringMapOutput)
}

// Labels that should be added to the created ACME HTTP01 solver pods.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataOutput) Labels() pulumi.StringMapOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadata) map[string]string {
		return v.Labels
	}).(pulumi.StringMapOutput)
}

type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataPtrOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadata)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataPtrOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataPtrOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataPtrOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataPtrOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataPtrOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadata] {
	return pulumix.Output[*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadata]{
		OutputState: o.OutputState,
	}
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataPtrOutput) Elem() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadata) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadata {
		if v != nil {
			return *v
		}
		var ret ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadata
		return ret
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataOutput)
}

// Annotations that should be added to the create ACME HTTP01 solver pods.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataPtrOutput) Annotations() pulumi.StringMapOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadata) map[string]string {
		if v == nil {
			return nil
		}
		return v.Annotations
	}).(pulumi.StringMapOutput)
}

// Labels that should be added to the created ACME HTTP01 solver pods.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataPtrOutput) Labels() pulumi.StringMapOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadata) map[string]string {
		if v == nil {
			return nil
		}
		return v.Labels
	}).(pulumi.StringMapOutput)
}

// Annotations that should be added to the create ACME HTTP01 solver pods.
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataAnnotations struct {
}

// Labels that should be added to the created ACME HTTP01 solver pods.
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataLabels struct {
}

// PodSpec defines overrides for the HTTP01 challenge solver pod. Only the 'priorityClassName', 'nodeSelector', 'affinity', 'serviceAccountName' and 'tolerations' fields are supported currently. All other fields will be ignored.
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpec struct {
	// If specified, the pod's scheduling constraints
	Affinity *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinity `pulumi:"affinity"`
	// NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/
	NodeSelector map[string]string `pulumi:"nodeSelector"`
	// If specified, the pod's priorityClassName.
	PriorityClassName *string `pulumi:"priorityClassName"`
	// If specified, the pod's service account
	ServiceAccountName *string `pulumi:"serviceAccountName"`
	// If specified, the pod's tolerations.
	Tolerations []ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerations `pulumi:"tolerations"`
}

// ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecInput is an input type that accepts ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecArgs and ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecInput` via:
//
//	ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecArgs{...}
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecOutput
	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecOutput
}

// PodSpec defines overrides for the HTTP01 challenge solver pod. Only the 'priorityClassName', 'nodeSelector', 'affinity', 'serviceAccountName' and 'tolerations' fields are supported currently. All other fields will be ignored.
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecArgs struct {
	// If specified, the pod's scheduling constraints
	Affinity ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPtrInput `pulumi:"affinity"`
	// NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/
	NodeSelector pulumi.StringMapInput `pulumi:"nodeSelector"`
	// If specified, the pod's priorityClassName.
	PriorityClassName pulumi.StringPtrInput `pulumi:"priorityClassName"`
	// If specified, the pod's service account
	ServiceAccountName pulumi.StringPtrInput `pulumi:"serviceAccountName"`
	// If specified, the pod's tolerations.
	Tolerations ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsArrayInput `pulumi:"tolerations"`
}

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpec)(nil)).Elem()
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecOutput {
	return i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecOutput)
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecArgs) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpec] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpec]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecOutputWithContext(ctx).OutputState,
	}
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtrOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtrOutput {
	return i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtrOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecOutput).ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtrOutputWithContext(ctx)
}

// ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtrInput is an input type that accepts ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecArgs, ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtr and ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtrOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtrInput` via:
//
//	        ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecArgs{...}
//
//	or:
//
//	        nil
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtrInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtrOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtrOutput
	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtrOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtrOutput
}

type clusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtrType ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecArgs

func ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtr(v *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecArgs) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtrInput {
	return (*clusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtrType)(v)
}

func (*clusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpec)(nil)).Elem()
}

func (i *clusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtrType) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtrOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtrOutput {
	return i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtrOutputWithContext(context.Background())
}

func (i *clusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtrType) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtrOutput)
}

func (i *clusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtrType) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpec] {
	return pulumix.Output[*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpec]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtrOutputWithContext(ctx).OutputState,
	}
}

// PodSpec defines overrides for the HTTP01 challenge solver pod. Only the 'priorityClassName', 'nodeSelector', 'affinity', 'serviceAccountName' and 'tolerations' fields are supported currently. All other fields will be ignored.
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpec)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtrOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtrOutput {
	return o.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtrOutputWithContext(context.Background())
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpec) *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpec {
		return &v
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtrOutput)
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecOutput) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpec] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpec]{
		OutputState: o.OutputState,
	}
}

// If specified, the pod's scheduling constraints
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecOutput) Affinity() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPtrOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpec) *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinity {
		return v.Affinity
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPtrOutput)
}

// NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecOutput) NodeSelector() pulumi.StringMapOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpec) map[string]string {
		return v.NodeSelector
	}).(pulumi.StringMapOutput)
}

// If specified, the pod's priorityClassName.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecOutput) PriorityClassName() pulumi.StringPtrOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpec) *string { return v.PriorityClassName }).(pulumi.StringPtrOutput)
}

// If specified, the pod's service account
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecOutput) ServiceAccountName() pulumi.StringPtrOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpec) *string { return v.ServiceAccountName }).(pulumi.StringPtrOutput)
}

// If specified, the pod's tolerations.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecOutput) Tolerations() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsArrayOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpec) []ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerations {
		return v.Tolerations
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsArrayOutput)
}

type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtrOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpec)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtrOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtrOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtrOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtrOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtrOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpec] {
	return pulumix.Output[*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpec]{
		OutputState: o.OutputState,
	}
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtrOutput) Elem() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpec) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpec {
		if v != nil {
			return *v
		}
		var ret ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpec
		return ret
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecOutput)
}

// If specified, the pod's scheduling constraints
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtrOutput) Affinity() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpec) *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinity {
		if v == nil {
			return nil
		}
		return v.Affinity
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPtrOutput)
}

// NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtrOutput) NodeSelector() pulumi.StringMapOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpec) map[string]string {
		if v == nil {
			return nil
		}
		return v.NodeSelector
	}).(pulumi.StringMapOutput)
}

// If specified, the pod's priorityClassName.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtrOutput) PriorityClassName() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpec) *string {
		if v == nil {
			return nil
		}
		return v.PriorityClassName
	}).(pulumi.StringPtrOutput)
}

// If specified, the pod's service account
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtrOutput) ServiceAccountName() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpec) *string {
		if v == nil {
			return nil
		}
		return v.ServiceAccountName
	}).(pulumi.StringPtrOutput)
}

// If specified, the pod's tolerations.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtrOutput) Tolerations() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsArrayOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpec) []ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerations {
		if v == nil {
			return nil
		}
		return v.Tolerations
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsArrayOutput)
}

// If specified, the pod's scheduling constraints
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinity struct {
	// Describes node affinity scheduling rules for the pod.
	NodeAffinity *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinity `pulumi:"nodeAffinity"`
	// Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).
	PodAffinity *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinity `pulumi:"podAffinity"`
	// Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).
	PodAntiAffinity *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinity `pulumi:"podAntiAffinity"`
}

// ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityInput is an input type that accepts ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityArgs and ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityInput` via:
//
//	ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityArgs{...}
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityOutput
	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityOutput
}

// If specified, the pod's scheduling constraints
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityArgs struct {
	// Describes node affinity scheduling rules for the pod.
	NodeAffinity ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPtrInput `pulumi:"nodeAffinity"`
	// Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).
	PodAffinity ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPtrInput `pulumi:"podAffinity"`
	// Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).
	PodAntiAffinity ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPtrInput `pulumi:"podAntiAffinity"`
}

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinity)(nil)).Elem()
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityOutput {
	return i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityOutput)
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityArgs) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinity] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinity]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityOutputWithContext(ctx).OutputState,
	}
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPtrOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPtrOutput {
	return i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPtrOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityOutput).ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPtrOutputWithContext(ctx)
}

// ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPtrInput is an input type that accepts ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityArgs, ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPtr and ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPtrOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPtrInput` via:
//
//	        ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityArgs{...}
//
//	or:
//
//	        nil
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPtrInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPtrOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPtrOutput
	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPtrOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPtrOutput
}

type clusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPtrType ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityArgs

func ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPtr(v *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityArgs) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPtrInput {
	return (*clusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPtrType)(v)
}

func (*clusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinity)(nil)).Elem()
}

func (i *clusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPtrType) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPtrOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPtrOutput {
	return i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPtrOutputWithContext(context.Background())
}

func (i *clusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPtrType) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPtrOutput)
}

func (i *clusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPtrType) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinity] {
	return pulumix.Output[*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinity]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPtrOutputWithContext(ctx).OutputState,
	}
}

// If specified, the pod's scheduling constraints
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinity)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPtrOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPtrOutput {
	return o.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPtrOutputWithContext(context.Background())
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinity) *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinity {
		return &v
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPtrOutput)
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityOutput) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinity] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinity]{
		OutputState: o.OutputState,
	}
}

// Describes node affinity scheduling rules for the pod.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityOutput) NodeAffinity() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPtrOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinity) *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinity {
		return v.NodeAffinity
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPtrOutput)
}

// Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityOutput) PodAffinity() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPtrOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinity) *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinity {
		return v.PodAffinity
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPtrOutput)
}

// Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityOutput) PodAntiAffinity() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPtrOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinity) *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinity {
		return v.PodAntiAffinity
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPtrOutput)
}

type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPtrOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinity)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPtrOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPtrOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPtrOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPtrOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPtrOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinity] {
	return pulumix.Output[*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinity]{
		OutputState: o.OutputState,
	}
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPtrOutput) Elem() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinity) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinity {
		if v != nil {
			return *v
		}
		var ret ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinity
		return ret
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityOutput)
}

// Describes node affinity scheduling rules for the pod.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPtrOutput) NodeAffinity() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinity) *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinity {
		if v == nil {
			return nil
		}
		return v.NodeAffinity
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPtrOutput)
}

// Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPtrOutput) PodAffinity() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinity) *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinity {
		if v == nil {
			return nil
		}
		return v.PodAffinity
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPtrOutput)
}

// Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPtrOutput) PodAntiAffinity() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinity) *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinity {
		if v == nil {
			return nil
		}
		return v.PodAntiAffinity
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPtrOutput)
}

// Describes node affinity scheduling rules for the pod.
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinity struct {
	// The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.
	PreferredDuringSchedulingIgnoredDuringExecution []ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecution `pulumi:"preferredDuringSchedulingIgnoredDuringExecution"`
	// If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.
	RequiredDuringSchedulingIgnoredDuringExecution *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecution `pulumi:"requiredDuringSchedulingIgnoredDuringExecution"`
}

// ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityInput is an input type that accepts ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityArgs and ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityInput` via:
//
//	ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityArgs{...}
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityOutput
	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityOutput
}

// Describes node affinity scheduling rules for the pod.
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityArgs struct {
	// The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.
	PreferredDuringSchedulingIgnoredDuringExecution ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayInput `pulumi:"preferredDuringSchedulingIgnoredDuringExecution"`
	// If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.
	RequiredDuringSchedulingIgnoredDuringExecution ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionPtrInput `pulumi:"requiredDuringSchedulingIgnoredDuringExecution"`
}

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinity)(nil)).Elem()
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityOutput {
	return i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityOutput)
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityArgs) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinity] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinity]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityOutputWithContext(ctx).OutputState,
	}
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPtrOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPtrOutput {
	return i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPtrOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityOutput).ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPtrOutputWithContext(ctx)
}

// ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPtrInput is an input type that accepts ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityArgs, ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPtr and ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPtrOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPtrInput` via:
//
//	        ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityArgs{...}
//
//	or:
//
//	        nil
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPtrInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPtrOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPtrOutput
	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPtrOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPtrOutput
}

type clusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPtrType ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityArgs

func ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPtr(v *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityArgs) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPtrInput {
	return (*clusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPtrType)(v)
}

func (*clusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinity)(nil)).Elem()
}

func (i *clusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPtrType) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPtrOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPtrOutput {
	return i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPtrOutputWithContext(context.Background())
}

func (i *clusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPtrType) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPtrOutput)
}

func (i *clusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPtrType) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinity] {
	return pulumix.Output[*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinity]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPtrOutputWithContext(ctx).OutputState,
	}
}

// Describes node affinity scheduling rules for the pod.
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinity)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPtrOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPtrOutput {
	return o.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPtrOutputWithContext(context.Background())
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinity) *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinity {
		return &v
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPtrOutput)
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityOutput) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinity] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinity]{
		OutputState: o.OutputState,
	}
}

// The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityOutput) PreferredDuringSchedulingIgnoredDuringExecution() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinity) []ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecution {
		return v.PreferredDuringSchedulingIgnoredDuringExecution
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput)
}

// If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityOutput) RequiredDuringSchedulingIgnoredDuringExecution() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionPtrOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinity) *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecution {
		return v.RequiredDuringSchedulingIgnoredDuringExecution
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionPtrOutput)
}

type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPtrOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinity)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPtrOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPtrOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPtrOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPtrOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPtrOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinity] {
	return pulumix.Output[*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinity]{
		OutputState: o.OutputState,
	}
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPtrOutput) Elem() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinity) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinity {
		if v != nil {
			return *v
		}
		var ret ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinity
		return ret
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityOutput)
}

// The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPtrOutput) PreferredDuringSchedulingIgnoredDuringExecution() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinity) []ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecution {
		if v == nil {
			return nil
		}
		return v.PreferredDuringSchedulingIgnoredDuringExecution
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput)
}

// If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPtrOutput) RequiredDuringSchedulingIgnoredDuringExecution() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinity) *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecution {
		if v == nil {
			return nil
		}
		return v.RequiredDuringSchedulingIgnoredDuringExecution
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionPtrOutput)
}

// An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecution struct {
	// A node selector term, associated with the corresponding weight.
	Preference ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreference `pulumi:"preference"`
	// Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.
	Weight int `pulumi:"weight"`
}

// ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionInput is an input type that accepts ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionArgs and ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionInput` via:
//
//	ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionArgs{...}
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput
	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput
}

// An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionArgs struct {
	// A node selector term, associated with the corresponding weight.
	Preference ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceInput `pulumi:"preference"`
	// Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.
	Weight pulumi.IntInput `pulumi:"weight"`
}

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecution)(nil)).Elem()
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput {
	return i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput)
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionArgs) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecution] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecution]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutputWithContext(ctx).OutputState,
	}
}

// ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayInput is an input type that accepts ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionArray and ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayInput` via:
//
//	ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionArray{ ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionArgs{...} }
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput
	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput
}

type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionArray []ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionInput

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionArray) ElementType() reflect.Type {
	return reflect.TypeOf((*[]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecution)(nil)).Elem()
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionArray) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput {
	return i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionArray) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput)
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionArray) ToOutput(ctx context.Context) pulumix.Output[[]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecution] {
	return pulumix.Output[[]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecution]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutputWithContext(ctx).OutputState,
	}
}

// An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecution)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecution] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecution]{
		OutputState: o.OutputState,
	}
}

// A node selector term, associated with the corresponding weight.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput) Preference() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecution) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreference {
		return v.Preference
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceOutput)
}

// Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput) Weight() pulumi.IntOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecution) int {
		return v.Weight
	}).(pulumi.IntOutput)
}

type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*[]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecution)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput) ToOutput(ctx context.Context) pulumix.Output[[]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecution] {
	return pulumix.Output[[]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecution]{
		OutputState: o.OutputState,
	}
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput) Index(i pulumi.IntInput) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput {
	return pulumi.All(o, i).ApplyT(func(vs []interface{}) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecution {
		return vs[0].([]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecution)[vs[1].(int)]
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput)
}

// A node selector term, associated with the corresponding weight.
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreference struct {
	// A list of node selector requirements by node's labels.
	MatchExpressions []ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressions `pulumi:"matchExpressions"`
	// A list of node selector requirements by node's fields.
	MatchFields []ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFields `pulumi:"matchFields"`
}

// ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceInput is an input type that accepts ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceArgs and ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceInput` via:
//
//	ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceArgs{...}
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceOutput
	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceOutput
}

// A node selector term, associated with the corresponding weight.
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceArgs struct {
	// A list of node selector requirements by node's labels.
	MatchExpressions ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsArrayInput `pulumi:"matchExpressions"`
	// A list of node selector requirements by node's fields.
	MatchFields ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsArrayInput `pulumi:"matchFields"`
}

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreference)(nil)).Elem()
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceOutput {
	return i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceOutput)
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceArgs) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreference] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreference]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceOutputWithContext(ctx).OutputState,
	}
}

// A node selector term, associated with the corresponding weight.
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreference)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceOutput) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreference] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreference]{
		OutputState: o.OutputState,
	}
}

// A list of node selector requirements by node's labels.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceOutput) MatchExpressions() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsArrayOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreference) []ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressions {
		return v.MatchExpressions
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsArrayOutput)
}

// A list of node selector requirements by node's fields.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceOutput) MatchFields() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsArrayOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreference) []ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFields {
		return v.MatchFields
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsArrayOutput)
}

// A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressions struct {
	// The label key that the selector applies to.
	Key string `pulumi:"key"`
	// Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
	Operator string `pulumi:"operator"`
	// An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.
	Values []string `pulumi:"values"`
}

// ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsInput is an input type that accepts ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsArgs and ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsInput` via:
//
//	ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsArgs{...}
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsOutput
	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsOutput
}

// A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsArgs struct {
	// The label key that the selector applies to.
	Key pulumi.StringInput `pulumi:"key"`
	// Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
	Operator pulumi.StringInput `pulumi:"operator"`
	// An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.
	Values pulumi.StringArrayInput `pulumi:"values"`
}

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressions)(nil)).Elem()
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsOutput {
	return i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsOutput)
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsArgs) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressions] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressions]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsOutputWithContext(ctx).OutputState,
	}
}

// ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsArrayInput is an input type that accepts ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsArray and ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsArrayOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsArrayInput` via:
//
//	ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsArray{ ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsArgs{...} }
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsArrayInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsArrayOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsArrayOutput
	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsArrayOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsArrayOutput
}

type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsArray []ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsInput

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsArray) ElementType() reflect.Type {
	return reflect.TypeOf((*[]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressions)(nil)).Elem()
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsArray) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsArrayOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsArrayOutput {
	return i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsArrayOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsArray) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsArrayOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsArrayOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsArrayOutput)
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsArray) ToOutput(ctx context.Context) pulumix.Output[[]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressions] {
	return pulumix.Output[[]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressions]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsArrayOutputWithContext(ctx).OutputState,
	}
}

// A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressions)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsOutput) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressions] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressions]{
		OutputState: o.OutputState,
	}
}

// The label key that the selector applies to.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsOutput) Key() pulumi.StringOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressions) string {
		return v.Key
	}).(pulumi.StringOutput)
}

// Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsOutput) Operator() pulumi.StringOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressions) string {
		return v.Operator
	}).(pulumi.StringOutput)
}

// An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsOutput) Values() pulumi.StringArrayOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressions) []string {
		return v.Values
	}).(pulumi.StringArrayOutput)
}

type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsArrayOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsArrayOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*[]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressions)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsArrayOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsArrayOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsArrayOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsArrayOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsArrayOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsArrayOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsArrayOutput) ToOutput(ctx context.Context) pulumix.Output[[]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressions] {
	return pulumix.Output[[]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressions]{
		OutputState: o.OutputState,
	}
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsArrayOutput) Index(i pulumi.IntInput) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsOutput {
	return pulumi.All(o, i).ApplyT(func(vs []interface{}) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressions {
		return vs[0].([]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressions)[vs[1].(int)]
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsOutput)
}

// A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFields struct {
	// The label key that the selector applies to.
	Key string `pulumi:"key"`
	// Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
	Operator string `pulumi:"operator"`
	// An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.
	Values []string `pulumi:"values"`
}

// ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsInput is an input type that accepts ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsArgs and ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsInput` via:
//
//	ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsArgs{...}
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsOutput
	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsOutput
}

// A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsArgs struct {
	// The label key that the selector applies to.
	Key pulumi.StringInput `pulumi:"key"`
	// Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
	Operator pulumi.StringInput `pulumi:"operator"`
	// An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.
	Values pulumi.StringArrayInput `pulumi:"values"`
}

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFields)(nil)).Elem()
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsOutput {
	return i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsOutput)
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsArgs) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFields] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFields]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsOutputWithContext(ctx).OutputState,
	}
}

// ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsArrayInput is an input type that accepts ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsArray and ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsArrayOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsArrayInput` via:
//
//	ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsArray{ ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsArgs{...} }
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsArrayInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsArrayOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsArrayOutput
	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsArrayOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsArrayOutput
}

type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsArray []ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsInput

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsArray) ElementType() reflect.Type {
	return reflect.TypeOf((*[]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFields)(nil)).Elem()
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsArray) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsArrayOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsArrayOutput {
	return i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsArrayOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsArray) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsArrayOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsArrayOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsArrayOutput)
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsArray) ToOutput(ctx context.Context) pulumix.Output[[]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFields] {
	return pulumix.Output[[]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFields]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsArrayOutputWithContext(ctx).OutputState,
	}
}

// A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFields)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsOutput) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFields] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFields]{
		OutputState: o.OutputState,
	}
}

// The label key that the selector applies to.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsOutput) Key() pulumi.StringOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFields) string {
		return v.Key
	}).(pulumi.StringOutput)
}

// Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsOutput) Operator() pulumi.StringOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFields) string {
		return v.Operator
	}).(pulumi.StringOutput)
}

// An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsOutput) Values() pulumi.StringArrayOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFields) []string {
		return v.Values
	}).(pulumi.StringArrayOutput)
}

type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsArrayOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsArrayOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*[]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFields)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsArrayOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsArrayOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsArrayOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsArrayOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsArrayOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsArrayOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsArrayOutput) ToOutput(ctx context.Context) pulumix.Output[[]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFields] {
	return pulumix.Output[[]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFields]{
		OutputState: o.OutputState,
	}
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsArrayOutput) Index(i pulumi.IntInput) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsOutput {
	return pulumi.All(o, i).ApplyT(func(vs []interface{}) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFields {
		return vs[0].([]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFields)[vs[1].(int)]
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsOutput)
}

// If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecution struct {
	// Required. A list of node selector terms. The terms are ORed.
	NodeSelectorTerms []ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTerms `pulumi:"nodeSelectorTerms"`
}

// ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionInput is an input type that accepts ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionArgs and ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionInput` via:
//
//	ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionArgs{...}
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput
	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput
}

// If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionArgs struct {
	// Required. A list of node selector terms. The terms are ORed.
	NodeSelectorTerms ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsArrayInput `pulumi:"nodeSelectorTerms"`
}

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecution)(nil)).Elem()
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput {
	return i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput)
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionArgs) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecution] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecution]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutputWithContext(ctx).OutputState,
	}
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionPtrOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionPtrOutput {
	return i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionPtrOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput).ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionPtrOutputWithContext(ctx)
}

// ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionPtrInput is an input type that accepts ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionArgs, ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionPtr and ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionPtrOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionPtrInput` via:
//
//	        ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionArgs{...}
//
//	or:
//
//	        nil
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionPtrInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionPtrOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionPtrOutput
	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionPtrOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionPtrOutput
}

type clusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionPtrType ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionArgs

func ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionPtr(v *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionArgs) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionPtrInput {
	return (*clusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionPtrType)(v)
}

func (*clusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecution)(nil)).Elem()
}

func (i *clusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionPtrType) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionPtrOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionPtrOutput {
	return i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionPtrOutputWithContext(context.Background())
}

func (i *clusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionPtrType) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionPtrOutput)
}

func (i *clusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionPtrType) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecution] {
	return pulumix.Output[*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecution]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionPtrOutputWithContext(ctx).OutputState,
	}
}

// If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecution)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionPtrOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionPtrOutput {
	return o.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionPtrOutputWithContext(context.Background())
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecution) *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecution {
		return &v
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionPtrOutput)
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecution] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecution]{
		OutputState: o.OutputState,
	}
}

// Required. A list of node selector terms. The terms are ORed.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput) NodeSelectorTerms() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsArrayOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecution) []ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTerms {
		return v.NodeSelectorTerms
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsArrayOutput)
}

type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionPtrOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecution)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionPtrOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionPtrOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionPtrOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionPtrOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionPtrOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecution] {
	return pulumix.Output[*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecution]{
		OutputState: o.OutputState,
	}
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionPtrOutput) Elem() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecution) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecution {
		if v != nil {
			return *v
		}
		var ret ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecution
		return ret
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput)
}

// Required. A list of node selector terms. The terms are ORed.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionPtrOutput) NodeSelectorTerms() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsArrayOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecution) []ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTerms {
		if v == nil {
			return nil
		}
		return v.NodeSelectorTerms
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsArrayOutput)
}

// A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTerms struct {
	// A list of node selector requirements by node's labels.
	MatchExpressions []ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressions `pulumi:"matchExpressions"`
	// A list of node selector requirements by node's fields.
	MatchFields []ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFields `pulumi:"matchFields"`
}

// ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsInput is an input type that accepts ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsArgs and ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsInput` via:
//
//	ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsArgs{...}
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsOutput
	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsOutput
}

// A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsArgs struct {
	// A list of node selector requirements by node's labels.
	MatchExpressions ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsArrayInput `pulumi:"matchExpressions"`
	// A list of node selector requirements by node's fields.
	MatchFields ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsArrayInput `pulumi:"matchFields"`
}

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTerms)(nil)).Elem()
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsOutput {
	return i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsOutput)
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsArgs) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTerms] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTerms]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsOutputWithContext(ctx).OutputState,
	}
}

// ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsArrayInput is an input type that accepts ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsArray and ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsArrayOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsArrayInput` via:
//
//	ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsArray{ ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsArgs{...} }
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsArrayInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsArrayOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsArrayOutput
	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsArrayOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsArrayOutput
}

type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsArray []ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsInput

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsArray) ElementType() reflect.Type {
	return reflect.TypeOf((*[]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTerms)(nil)).Elem()
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsArray) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsArrayOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsArrayOutput {
	return i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsArrayOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsArray) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsArrayOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsArrayOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsArrayOutput)
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsArray) ToOutput(ctx context.Context) pulumix.Output[[]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTerms] {
	return pulumix.Output[[]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTerms]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsArrayOutputWithContext(ctx).OutputState,
	}
}

// A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTerms)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsOutput) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTerms] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTerms]{
		OutputState: o.OutputState,
	}
}

// A list of node selector requirements by node's labels.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsOutput) MatchExpressions() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsArrayOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTerms) []ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressions {
		return v.MatchExpressions
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsArrayOutput)
}

// A list of node selector requirements by node's fields.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsOutput) MatchFields() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsArrayOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTerms) []ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFields {
		return v.MatchFields
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsArrayOutput)
}

type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsArrayOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsArrayOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*[]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTerms)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsArrayOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsArrayOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsArrayOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsArrayOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsArrayOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsArrayOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsArrayOutput) ToOutput(ctx context.Context) pulumix.Output[[]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTerms] {
	return pulumix.Output[[]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTerms]{
		OutputState: o.OutputState,
	}
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsArrayOutput) Index(i pulumi.IntInput) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsOutput {
	return pulumi.All(o, i).ApplyT(func(vs []interface{}) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTerms {
		return vs[0].([]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTerms)[vs[1].(int)]
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsOutput)
}

// A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressions struct {
	// The label key that the selector applies to.
	Key string `pulumi:"key"`
	// Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
	Operator string `pulumi:"operator"`
	// An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.
	Values []string `pulumi:"values"`
}

// ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsInput is an input type that accepts ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsArgs and ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsInput` via:
//
//	ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsArgs{...}
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsOutput
	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsOutput
}

// A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsArgs struct {
	// The label key that the selector applies to.
	Key pulumi.StringInput `pulumi:"key"`
	// Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
	Operator pulumi.StringInput `pulumi:"operator"`
	// An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.
	Values pulumi.StringArrayInput `pulumi:"values"`
}

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressions)(nil)).Elem()
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsOutput {
	return i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsOutput)
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsArgs) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressions] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressions]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsOutputWithContext(ctx).OutputState,
	}
}

// ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsArrayInput is an input type that accepts ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsArray and ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsArrayOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsArrayInput` via:
//
//	ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsArray{ ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsArgs{...} }
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsArrayInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsArrayOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsArrayOutput
	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsArrayOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsArrayOutput
}

type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsArray []ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsInput

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsArray) ElementType() reflect.Type {
	return reflect.TypeOf((*[]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressions)(nil)).Elem()
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsArray) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsArrayOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsArrayOutput {
	return i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsArrayOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsArray) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsArrayOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsArrayOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsArrayOutput)
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsArray) ToOutput(ctx context.Context) pulumix.Output[[]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressions] {
	return pulumix.Output[[]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressions]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsArrayOutputWithContext(ctx).OutputState,
	}
}

// A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressions)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsOutput) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressions] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressions]{
		OutputState: o.OutputState,
	}
}

// The label key that the selector applies to.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsOutput) Key() pulumi.StringOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressions) string {
		return v.Key
	}).(pulumi.StringOutput)
}

// Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsOutput) Operator() pulumi.StringOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressions) string {
		return v.Operator
	}).(pulumi.StringOutput)
}

// An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsOutput) Values() pulumi.StringArrayOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressions) []string {
		return v.Values
	}).(pulumi.StringArrayOutput)
}

type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsArrayOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsArrayOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*[]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressions)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsArrayOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsArrayOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsArrayOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsArrayOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsArrayOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsArrayOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsArrayOutput) ToOutput(ctx context.Context) pulumix.Output[[]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressions] {
	return pulumix.Output[[]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressions]{
		OutputState: o.OutputState,
	}
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsArrayOutput) Index(i pulumi.IntInput) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsOutput {
	return pulumi.All(o, i).ApplyT(func(vs []interface{}) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressions {
		return vs[0].([]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressions)[vs[1].(int)]
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsOutput)
}

// A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFields struct {
	// The label key that the selector applies to.
	Key string `pulumi:"key"`
	// Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
	Operator string `pulumi:"operator"`
	// An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.
	Values []string `pulumi:"values"`
}

// ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsInput is an input type that accepts ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsArgs and ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsInput` via:
//
//	ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsArgs{...}
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsOutput
	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsOutput
}

// A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsArgs struct {
	// The label key that the selector applies to.
	Key pulumi.StringInput `pulumi:"key"`
	// Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
	Operator pulumi.StringInput `pulumi:"operator"`
	// An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.
	Values pulumi.StringArrayInput `pulumi:"values"`
}

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFields)(nil)).Elem()
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsOutput {
	return i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsOutput)
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsArgs) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFields] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFields]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsOutputWithContext(ctx).OutputState,
	}
}

// ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsArrayInput is an input type that accepts ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsArray and ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsArrayOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsArrayInput` via:
//
//	ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsArray{ ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsArgs{...} }
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsArrayInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsArrayOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsArrayOutput
	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsArrayOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsArrayOutput
}

type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsArray []ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsInput

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsArray) ElementType() reflect.Type {
	return reflect.TypeOf((*[]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFields)(nil)).Elem()
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsArray) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsArrayOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsArrayOutput {
	return i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsArrayOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsArray) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsArrayOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsArrayOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsArrayOutput)
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsArray) ToOutput(ctx context.Context) pulumix.Output[[]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFields] {
	return pulumix.Output[[]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFields]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsArrayOutputWithContext(ctx).OutputState,
	}
}

// A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFields)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsOutput) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFields] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFields]{
		OutputState: o.OutputState,
	}
}

// The label key that the selector applies to.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsOutput) Key() pulumi.StringOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFields) string {
		return v.Key
	}).(pulumi.StringOutput)
}

// Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsOutput) Operator() pulumi.StringOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFields) string {
		return v.Operator
	}).(pulumi.StringOutput)
}

// An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsOutput) Values() pulumi.StringArrayOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFields) []string {
		return v.Values
	}).(pulumi.StringArrayOutput)
}

type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsArrayOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsArrayOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*[]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFields)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsArrayOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsArrayOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsArrayOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsArrayOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsArrayOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsArrayOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsArrayOutput) ToOutput(ctx context.Context) pulumix.Output[[]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFields] {
	return pulumix.Output[[]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFields]{
		OutputState: o.OutputState,
	}
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsArrayOutput) Index(i pulumi.IntInput) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsOutput {
	return pulumi.All(o, i).ApplyT(func(vs []interface{}) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFields {
		return vs[0].([]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFields)[vs[1].(int)]
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsOutput)
}

// Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinity struct {
	// The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.
	PreferredDuringSchedulingIgnoredDuringExecution []ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecution `pulumi:"preferredDuringSchedulingIgnoredDuringExecution"`
	// If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.
	RequiredDuringSchedulingIgnoredDuringExecution []ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecution `pulumi:"requiredDuringSchedulingIgnoredDuringExecution"`
}

// ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityInput is an input type that accepts ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityArgs and ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityInput` via:
//
//	ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityArgs{...}
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityOutput
	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityOutput
}

// Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityArgs struct {
	// The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.
	PreferredDuringSchedulingIgnoredDuringExecution ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayInput `pulumi:"preferredDuringSchedulingIgnoredDuringExecution"`
	// If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.
	RequiredDuringSchedulingIgnoredDuringExecution ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayInput `pulumi:"requiredDuringSchedulingIgnoredDuringExecution"`
}

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinity)(nil)).Elem()
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityOutput {
	return i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityOutput)
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityArgs) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinity] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinity]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityOutputWithContext(ctx).OutputState,
	}
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPtrOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPtrOutput {
	return i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPtrOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityOutput).ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPtrOutputWithContext(ctx)
}

// ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPtrInput is an input type that accepts ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityArgs, ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPtr and ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPtrOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPtrInput` via:
//
//	        ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityArgs{...}
//
//	or:
//
//	        nil
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPtrInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPtrOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPtrOutput
	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPtrOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPtrOutput
}

type clusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPtrType ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityArgs

func ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPtr(v *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityArgs) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPtrInput {
	return (*clusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPtrType)(v)
}

func (*clusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinity)(nil)).Elem()
}

func (i *clusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPtrType) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPtrOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPtrOutput {
	return i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPtrOutputWithContext(context.Background())
}

func (i *clusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPtrType) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPtrOutput)
}

func (i *clusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPtrType) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinity] {
	return pulumix.Output[*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinity]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPtrOutputWithContext(ctx).OutputState,
	}
}

// Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinity)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPtrOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPtrOutput {
	return o.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPtrOutputWithContext(context.Background())
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinity) *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinity {
		return &v
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPtrOutput)
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityOutput) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinity] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinity]{
		OutputState: o.OutputState,
	}
}

// The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityOutput) PreferredDuringSchedulingIgnoredDuringExecution() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinity) []ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecution {
		return v.PreferredDuringSchedulingIgnoredDuringExecution
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput)
}

// If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityOutput) RequiredDuringSchedulingIgnoredDuringExecution() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinity) []ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecution {
		return v.RequiredDuringSchedulingIgnoredDuringExecution
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayOutput)
}

type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPtrOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinity)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPtrOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPtrOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPtrOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPtrOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPtrOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinity] {
	return pulumix.Output[*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinity]{
		OutputState: o.OutputState,
	}
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPtrOutput) Elem() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinity) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinity {
		if v != nil {
			return *v
		}
		var ret ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinity
		return ret
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityOutput)
}

// The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPtrOutput) PreferredDuringSchedulingIgnoredDuringExecution() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinity) []ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecution {
		if v == nil {
			return nil
		}
		return v.PreferredDuringSchedulingIgnoredDuringExecution
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput)
}

// If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPtrOutput) RequiredDuringSchedulingIgnoredDuringExecution() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinity) []ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecution {
		if v == nil {
			return nil
		}
		return v.RequiredDuringSchedulingIgnoredDuringExecution
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayOutput)
}

// The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecution struct {
	// Required. A pod affinity term, associated with the corresponding weight.
	PodAffinityTerm ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm `pulumi:"podAffinityTerm"`
	// weight associated with matching the corresponding podAffinityTerm, in the range 1-100.
	Weight int `pulumi:"weight"`
}

// ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionInput is an input type that accepts ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionArgs and ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionInput` via:
//
//	ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionArgs{...}
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput
	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput
}

// The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionArgs struct {
	// Required. A pod affinity term, associated with the corresponding weight.
	PodAffinityTerm ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermInput `pulumi:"podAffinityTerm"`
	// weight associated with matching the corresponding podAffinityTerm, in the range 1-100.
	Weight pulumi.IntInput `pulumi:"weight"`
}

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecution)(nil)).Elem()
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput {
	return i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput)
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionArgs) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecution] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecution]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutputWithContext(ctx).OutputState,
	}
}

// ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayInput is an input type that accepts ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionArray and ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayInput` via:
//
//	ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionArray{ ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionArgs{...} }
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput
	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput
}

type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionArray []ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionInput

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionArray) ElementType() reflect.Type {
	return reflect.TypeOf((*[]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecution)(nil)).Elem()
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionArray) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput {
	return i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionArray) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput)
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionArray) ToOutput(ctx context.Context) pulumix.Output[[]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecution] {
	return pulumix.Output[[]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecution]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutputWithContext(ctx).OutputState,
	}
}

// The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecution)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecution] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecution]{
		OutputState: o.OutputState,
	}
}

// Required. A pod affinity term, associated with the corresponding weight.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput) PodAffinityTerm() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecution) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm {
		return v.PodAffinityTerm
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermOutput)
}

// weight associated with matching the corresponding podAffinityTerm, in the range 1-100.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput) Weight() pulumi.IntOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecution) int {
		return v.Weight
	}).(pulumi.IntOutput)
}

type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*[]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecution)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput) ToOutput(ctx context.Context) pulumix.Output[[]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecution] {
	return pulumix.Output[[]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecution]{
		OutputState: o.OutputState,
	}
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput) Index(i pulumi.IntInput) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput {
	return pulumi.All(o, i).ApplyT(func(vs []interface{}) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecution {
		return vs[0].([]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecution)[vs[1].(int)]
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput)
}

// Required. A pod affinity term, associated with the corresponding weight.
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm struct {
	// A label query over a set of resources, in this case pods.
	LabelSelector *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector `pulumi:"labelSelector"`
	// A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. This field is beta-level and is only honored when PodAffinityNamespaceSelector feature is enabled.
	NamespaceSelector *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector `pulumi:"namespaceSelector"`
	// namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace"
	Namespaces []string `pulumi:"namespaces"`
	// This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.
	TopologyKey string `pulumi:"topologyKey"`
}

// ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermInput is an input type that accepts ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermArgs and ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermInput` via:
//
//	ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermArgs{...}
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermOutput
	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermOutput
}

// Required. A pod affinity term, associated with the corresponding weight.
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermArgs struct {
	// A label query over a set of resources, in this case pods.
	LabelSelector ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrInput `pulumi:"labelSelector"`
	// A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. This field is beta-level and is only honored when PodAffinityNamespaceSelector feature is enabled.
	NamespaceSelector ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrInput `pulumi:"namespaceSelector"`
	// namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace"
	Namespaces pulumi.StringArrayInput `pulumi:"namespaces"`
	// This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.
	TopologyKey pulumi.StringInput `pulumi:"topologyKey"`
}

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm)(nil)).Elem()
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermOutput {
	return i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermOutput)
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermArgs) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermOutputWithContext(ctx).OutputState,
	}
}

// Required. A pod affinity term, associated with the corresponding weight.
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermOutput) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm]{
		OutputState: o.OutputState,
	}
}

// A label query over a set of resources, in this case pods.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermOutput) LabelSelector() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm) *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector {
		return v.LabelSelector
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput)
}

// A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. This field is beta-level and is only honored when PodAffinityNamespaceSelector feature is enabled.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermOutput) NamespaceSelector() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm) *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector {
		return v.NamespaceSelector
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput)
}

// namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace"
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermOutput) Namespaces() pulumi.StringArrayOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm) []string {
		return v.Namespaces
	}).(pulumi.StringArrayOutput)
}

// This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermOutput) TopologyKey() pulumi.StringOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm) string {
		return v.TopologyKey
	}).(pulumi.StringOutput)
}

// A label query over a set of resources, in this case pods.
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector struct {
	// matchExpressions is a list of label selector requirements. The requirements are ANDed.
	MatchExpressions []ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressions `pulumi:"matchExpressions"`
	// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
	MatchLabels map[string]string `pulumi:"matchLabels"`
}

// ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorInput is an input type that accepts ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorArgs and ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorInput` via:
//
//	ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorArgs{...}
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutput
	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutput
}

// A label query over a set of resources, in this case pods.
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorArgs struct {
	// matchExpressions is a list of label selector requirements. The requirements are ANDed.
	MatchExpressions ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayInput `pulumi:"matchExpressions"`
	// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
	MatchLabels pulumi.StringMapInput `pulumi:"matchLabels"`
}

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector)(nil)).Elem()
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutput {
	return i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutput)
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorArgs) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutputWithContext(ctx).OutputState,
	}
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput {
	return i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutput).ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutputWithContext(ctx)
}

// ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrInput is an input type that accepts ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorArgs, ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtr and ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrInput` via:
//
//	        ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorArgs{...}
//
//	or:
//
//	        nil
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput
	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput
}

type clusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrType ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorArgs

func ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtr(v *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorArgs) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrInput {
	return (*clusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrType)(v)
}

func (*clusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector)(nil)).Elem()
}

func (i *clusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrType) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput {
	return i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutputWithContext(context.Background())
}

func (i *clusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrType) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput)
}

func (i *clusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrType) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector] {
	return pulumix.Output[*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutputWithContext(ctx).OutputState,
	}
}

// A label query over a set of resources, in this case pods.
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput {
	return o.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutputWithContext(context.Background())
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector) *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector {
		return &v
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput)
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutput) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector]{
		OutputState: o.OutputState,
	}
}

// matchExpressions is a list of label selector requirements. The requirements are ANDed.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutput) MatchExpressions() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector) []ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressions {
		return v.MatchExpressions
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayOutput)
}

// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutput) MatchLabels() pulumi.StringMapOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector) map[string]string {
		return v.MatchLabels
	}).(pulumi.StringMapOutput)
}

type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector] {
	return pulumix.Output[*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector]{
		OutputState: o.OutputState,
	}
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput) Elem() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector {
		if v != nil {
			return *v
		}
		var ret ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector
		return ret
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutput)
}

// matchExpressions is a list of label selector requirements. The requirements are ANDed.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput) MatchExpressions() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector) []ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressions {
		if v == nil {
			return nil
		}
		return v.MatchExpressions
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayOutput)
}

// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput) MatchLabels() pulumi.StringMapOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector) map[string]string {
		if v == nil {
			return nil
		}
		return v.MatchLabels
	}).(pulumi.StringMapOutput)
}

// A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressions struct {
	// key is the label key that the selector applies to.
	Key string `pulumi:"key"`
	// operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
	Operator string `pulumi:"operator"`
	// values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
	Values []string `pulumi:"values"`
}

// ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsInput is an input type that accepts ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArgs and ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsInput` via:
//
//	ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArgs{...}
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsOutput
	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsOutput
}

// A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArgs struct {
	// key is the label key that the selector applies to.
	Key pulumi.StringInput `pulumi:"key"`
	// operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
	Operator pulumi.StringInput `pulumi:"operator"`
	// values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
	Values pulumi.StringArrayInput `pulumi:"values"`
}

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressions)(nil)).Elem()
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsOutput {
	return i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsOutput)
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArgs) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressions] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressions]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsOutputWithContext(ctx).OutputState,
	}
}

// ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayInput is an input type that accepts ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArray and ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayInput` via:
//
//	ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArray{ ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArgs{...} }
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayOutput
	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayOutput
}

type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArray []ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsInput

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArray) ElementType() reflect.Type {
	return reflect.TypeOf((*[]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressions)(nil)).Elem()
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArray) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayOutput {
	return i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArray) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayOutput)
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArray) ToOutput(ctx context.Context) pulumix.Output[[]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressions] {
	return pulumix.Output[[]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressions]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayOutputWithContext(ctx).OutputState,
	}
}

// A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressions)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsOutput) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressions] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressions]{
		OutputState: o.OutputState,
	}
}

// key is the label key that the selector applies to.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsOutput) Key() pulumi.StringOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressions) string {
		return v.Key
	}).(pulumi.StringOutput)
}

// operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsOutput) Operator() pulumi.StringOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressions) string {
		return v.Operator
	}).(pulumi.StringOutput)
}

// values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsOutput) Values() pulumi.StringArrayOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressions) []string {
		return v.Values
	}).(pulumi.StringArrayOutput)
}

type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*[]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressions)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayOutput) ToOutput(ctx context.Context) pulumix.Output[[]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressions] {
	return pulumix.Output[[]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressions]{
		OutputState: o.OutputState,
	}
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayOutput) Index(i pulumi.IntInput) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsOutput {
	return pulumi.All(o, i).ApplyT(func(vs []interface{}) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressions {
		return vs[0].([]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressions)[vs[1].(int)]
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsOutput)
}

// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchLabels struct {
}

// A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. This field is beta-level and is only honored when PodAffinityNamespaceSelector feature is enabled.
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector struct {
	// matchExpressions is a list of label selector requirements. The requirements are ANDed.
	MatchExpressions []ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressions `pulumi:"matchExpressions"`
	// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
	MatchLabels map[string]string `pulumi:"matchLabels"`
}

// ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorInput is an input type that accepts ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorArgs and ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorInput` via:
//
//	ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorArgs{...}
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutput
	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutput
}

// A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. This field is beta-level and is only honored when PodAffinityNamespaceSelector feature is enabled.
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorArgs struct {
	// matchExpressions is a list of label selector requirements. The requirements are ANDed.
	MatchExpressions ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayInput `pulumi:"matchExpressions"`
	// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
	MatchLabels pulumi.StringMapInput `pulumi:"matchLabels"`
}

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector)(nil)).Elem()
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutput {
	return i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutput)
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorArgs) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutputWithContext(ctx).OutputState,
	}
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput {
	return i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutput).ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutputWithContext(ctx)
}

// ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrInput is an input type that accepts ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorArgs, ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtr and ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrInput` via:
//
//	        ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorArgs{...}
//
//	or:
//
//	        nil
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput
	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput
}

type clusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrType ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorArgs

func ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtr(v *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorArgs) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrInput {
	return (*clusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrType)(v)
}

func (*clusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector)(nil)).Elem()
}

func (i *clusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrType) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput {
	return i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutputWithContext(context.Background())
}

func (i *clusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrType) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput)
}

func (i *clusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrType) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector] {
	return pulumix.Output[*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutputWithContext(ctx).OutputState,
	}
}

// A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. This field is beta-level and is only honored when PodAffinityNamespaceSelector feature is enabled.
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput {
	return o.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutputWithContext(context.Background())
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector) *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector {
		return &v
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput)
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutput) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector]{
		OutputState: o.OutputState,
	}
}

// matchExpressions is a list of label selector requirements. The requirements are ANDed.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutput) MatchExpressions() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector) []ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressions {
		return v.MatchExpressions
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayOutput)
}

// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutput) MatchLabels() pulumi.StringMapOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector) map[string]string {
		return v.MatchLabels
	}).(pulumi.StringMapOutput)
}

type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector] {
	return pulumix.Output[*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector]{
		OutputState: o.OutputState,
	}
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput) Elem() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector {
		if v != nil {
			return *v
		}
		var ret ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector
		return ret
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutput)
}

// matchExpressions is a list of label selector requirements. The requirements are ANDed.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput) MatchExpressions() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector) []ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressions {
		if v == nil {
			return nil
		}
		return v.MatchExpressions
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayOutput)
}

// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput) MatchLabels() pulumi.StringMapOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector) map[string]string {
		if v == nil {
			return nil
		}
		return v.MatchLabels
	}).(pulumi.StringMapOutput)
}

// A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressions struct {
	// key is the label key that the selector applies to.
	Key string `pulumi:"key"`
	// operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
	Operator string `pulumi:"operator"`
	// values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
	Values []string `pulumi:"values"`
}

// ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsInput is an input type that accepts ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArgs and ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsInput` via:
//
//	ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArgs{...}
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsOutput
	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsOutput
}

// A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArgs struct {
	// key is the label key that the selector applies to.
	Key pulumi.StringInput `pulumi:"key"`
	// operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
	Operator pulumi.StringInput `pulumi:"operator"`
	// values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
	Values pulumi.StringArrayInput `pulumi:"values"`
}

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressions)(nil)).Elem()
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsOutput {
	return i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsOutput)
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArgs) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressions] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressions]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsOutputWithContext(ctx).OutputState,
	}
}

// ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayInput is an input type that accepts ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArray and ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayInput` via:
//
//	ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArray{ ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArgs{...} }
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayOutput
	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayOutput
}

type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArray []ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsInput

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArray) ElementType() reflect.Type {
	return reflect.TypeOf((*[]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressions)(nil)).Elem()
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArray) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayOutput {
	return i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArray) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayOutput)
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArray) ToOutput(ctx context.Context) pulumix.Output[[]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressions] {
	return pulumix.Output[[]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressions]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayOutputWithContext(ctx).OutputState,
	}
}

// A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressions)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsOutput) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressions] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressions]{
		OutputState: o.OutputState,
	}
}

// key is the label key that the selector applies to.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsOutput) Key() pulumi.StringOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressions) string {
		return v.Key
	}).(pulumi.StringOutput)
}

// operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsOutput) Operator() pulumi.StringOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressions) string {
		return v.Operator
	}).(pulumi.StringOutput)
}

// values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsOutput) Values() pulumi.StringArrayOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressions) []string {
		return v.Values
	}).(pulumi.StringArrayOutput)
}

type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*[]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressions)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayOutput) ToOutput(ctx context.Context) pulumix.Output[[]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressions] {
	return pulumix.Output[[]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressions]{
		OutputState: o.OutputState,
	}
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayOutput) Index(i pulumi.IntInput) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsOutput {
	return pulumi.All(o, i).ApplyT(func(vs []interface{}) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressions {
		return vs[0].([]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressions)[vs[1].(int)]
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsOutput)
}

// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchLabels struct {
}

// Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key <topologyKey> matches that of any node on which a pod of the set of pods is running
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecution struct {
	// A label query over a set of resources, in this case pods.
	LabelSelector *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector `pulumi:"labelSelector"`
	// A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. This field is beta-level and is only honored when PodAffinityNamespaceSelector feature is enabled.
	NamespaceSelector *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector `pulumi:"namespaceSelector"`
	// namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace"
	Namespaces []string `pulumi:"namespaces"`
	// This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.
	TopologyKey string `pulumi:"topologyKey"`
}

// ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionInput is an input type that accepts ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionArgs and ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionInput` via:
//
//	ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionArgs{...}
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput
	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput
}

// Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key <topologyKey> matches that of any node on which a pod of the set of pods is running
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionArgs struct {
	// A label query over a set of resources, in this case pods.
	LabelSelector ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrInput `pulumi:"labelSelector"`
	// A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. This field is beta-level and is only honored when PodAffinityNamespaceSelector feature is enabled.
	NamespaceSelector ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrInput `pulumi:"namespaceSelector"`
	// namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace"
	Namespaces pulumi.StringArrayInput `pulumi:"namespaces"`
	// This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.
	TopologyKey pulumi.StringInput `pulumi:"topologyKey"`
}

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecution)(nil)).Elem()
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput {
	return i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput)
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionArgs) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecution] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecution]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutputWithContext(ctx).OutputState,
	}
}

// ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayInput is an input type that accepts ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionArray and ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayInput` via:
//
//	ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionArray{ ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionArgs{...} }
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayOutput
	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayOutput
}

type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionArray []ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionInput

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionArray) ElementType() reflect.Type {
	return reflect.TypeOf((*[]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecution)(nil)).Elem()
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionArray) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayOutput {
	return i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionArray) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayOutput)
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionArray) ToOutput(ctx context.Context) pulumix.Output[[]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecution] {
	return pulumix.Output[[]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecution]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayOutputWithContext(ctx).OutputState,
	}
}

// Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key <topologyKey> matches that of any node on which a pod of the set of pods is running
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecution)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecution] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecution]{
		OutputState: o.OutputState,
	}
}

// A label query over a set of resources, in this case pods.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput) LabelSelector() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecution) *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector {
		return v.LabelSelector
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput)
}

// A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. This field is beta-level and is only honored when PodAffinityNamespaceSelector feature is enabled.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput) NamespaceSelector() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecution) *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector {
		return v.NamespaceSelector
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput)
}

// namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace"
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput) Namespaces() pulumi.StringArrayOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecution) []string {
		return v.Namespaces
	}).(pulumi.StringArrayOutput)
}

// This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput) TopologyKey() pulumi.StringOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecution) string {
		return v.TopologyKey
	}).(pulumi.StringOutput)
}

type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*[]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecution)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayOutput) ToOutput(ctx context.Context) pulumix.Output[[]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecution] {
	return pulumix.Output[[]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecution]{
		OutputState: o.OutputState,
	}
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayOutput) Index(i pulumi.IntInput) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput {
	return pulumi.All(o, i).ApplyT(func(vs []interface{}) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecution {
		return vs[0].([]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecution)[vs[1].(int)]
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput)
}

// A label query over a set of resources, in this case pods.
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector struct {
	// matchExpressions is a list of label selector requirements. The requirements are ANDed.
	MatchExpressions []ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressions `pulumi:"matchExpressions"`
	// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
	MatchLabels map[string]string `pulumi:"matchLabels"`
}

// ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorInput is an input type that accepts ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorArgs and ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorInput` via:
//
//	ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorArgs{...}
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutput
	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutput
}

// A label query over a set of resources, in this case pods.
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorArgs struct {
	// matchExpressions is a list of label selector requirements. The requirements are ANDed.
	MatchExpressions ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayInput `pulumi:"matchExpressions"`
	// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
	MatchLabels pulumi.StringMapInput `pulumi:"matchLabels"`
}

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector)(nil)).Elem()
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutput {
	return i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutput)
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorArgs) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutputWithContext(ctx).OutputState,
	}
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput {
	return i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutput).ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutputWithContext(ctx)
}

// ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrInput is an input type that accepts ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorArgs, ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtr and ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrInput` via:
//
//	        ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorArgs{...}
//
//	or:
//
//	        nil
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput
	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput
}

type clusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrType ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorArgs

func ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtr(v *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorArgs) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrInput {
	return (*clusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrType)(v)
}

func (*clusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector)(nil)).Elem()
}

func (i *clusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrType) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput {
	return i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutputWithContext(context.Background())
}

func (i *clusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrType) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput)
}

func (i *clusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrType) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector] {
	return pulumix.Output[*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutputWithContext(ctx).OutputState,
	}
}

// A label query over a set of resources, in this case pods.
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput {
	return o.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutputWithContext(context.Background())
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector) *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector {
		return &v
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput)
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutput) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector]{
		OutputState: o.OutputState,
	}
}

// matchExpressions is a list of label selector requirements. The requirements are ANDed.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutput) MatchExpressions() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector) []ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressions {
		return v.MatchExpressions
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayOutput)
}

// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutput) MatchLabels() pulumi.StringMapOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector) map[string]string {
		return v.MatchLabels
	}).(pulumi.StringMapOutput)
}

type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector] {
	return pulumix.Output[*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector]{
		OutputState: o.OutputState,
	}
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput) Elem() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector {
		if v != nil {
			return *v
		}
		var ret ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector
		return ret
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutput)
}

// matchExpressions is a list of label selector requirements. The requirements are ANDed.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput) MatchExpressions() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector) []ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressions {
		if v == nil {
			return nil
		}
		return v.MatchExpressions
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayOutput)
}

// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput) MatchLabels() pulumi.StringMapOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector) map[string]string {
		if v == nil {
			return nil
		}
		return v.MatchLabels
	}).(pulumi.StringMapOutput)
}

// A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressions struct {
	// key is the label key that the selector applies to.
	Key string `pulumi:"key"`
	// operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
	Operator string `pulumi:"operator"`
	// values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
	Values []string `pulumi:"values"`
}

// ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsInput is an input type that accepts ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArgs and ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsInput` via:
//
//	ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArgs{...}
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsOutput
	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsOutput
}

// A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArgs struct {
	// key is the label key that the selector applies to.
	Key pulumi.StringInput `pulumi:"key"`
	// operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
	Operator pulumi.StringInput `pulumi:"operator"`
	// values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
	Values pulumi.StringArrayInput `pulumi:"values"`
}

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressions)(nil)).Elem()
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsOutput {
	return i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsOutput)
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArgs) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressions] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressions]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsOutputWithContext(ctx).OutputState,
	}
}

// ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayInput is an input type that accepts ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArray and ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayInput` via:
//
//	ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArray{ ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArgs{...} }
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayOutput
	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayOutput
}

type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArray []ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsInput

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArray) ElementType() reflect.Type {
	return reflect.TypeOf((*[]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressions)(nil)).Elem()
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArray) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayOutput {
	return i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArray) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayOutput)
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArray) ToOutput(ctx context.Context) pulumix.Output[[]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressions] {
	return pulumix.Output[[]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressions]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayOutputWithContext(ctx).OutputState,
	}
}

// A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressions)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsOutput) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressions] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressions]{
		OutputState: o.OutputState,
	}
}

// key is the label key that the selector applies to.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsOutput) Key() pulumi.StringOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressions) string {
		return v.Key
	}).(pulumi.StringOutput)
}

// operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsOutput) Operator() pulumi.StringOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressions) string {
		return v.Operator
	}).(pulumi.StringOutput)
}

// values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsOutput) Values() pulumi.StringArrayOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressions) []string {
		return v.Values
	}).(pulumi.StringArrayOutput)
}

type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*[]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressions)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayOutput) ToOutput(ctx context.Context) pulumix.Output[[]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressions] {
	return pulumix.Output[[]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressions]{
		OutputState: o.OutputState,
	}
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayOutput) Index(i pulumi.IntInput) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsOutput {
	return pulumi.All(o, i).ApplyT(func(vs []interface{}) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressions {
		return vs[0].([]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressions)[vs[1].(int)]
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsOutput)
}

// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchLabels struct {
}

// A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. This field is beta-level and is only honored when PodAffinityNamespaceSelector feature is enabled.
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector struct {
	// matchExpressions is a list of label selector requirements. The requirements are ANDed.
	MatchExpressions []ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressions `pulumi:"matchExpressions"`
	// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
	MatchLabels map[string]string `pulumi:"matchLabels"`
}

// ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorInput is an input type that accepts ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorArgs and ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorInput` via:
//
//	ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorArgs{...}
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutput
	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutput
}

// A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. This field is beta-level and is only honored when PodAffinityNamespaceSelector feature is enabled.
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorArgs struct {
	// matchExpressions is a list of label selector requirements. The requirements are ANDed.
	MatchExpressions ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayInput `pulumi:"matchExpressions"`
	// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
	MatchLabels pulumi.StringMapInput `pulumi:"matchLabels"`
}

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector)(nil)).Elem()
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutput {
	return i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutput)
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorArgs) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutputWithContext(ctx).OutputState,
	}
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput {
	return i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutput).ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutputWithContext(ctx)
}

// ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrInput is an input type that accepts ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorArgs, ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtr and ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrInput` via:
//
//	        ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorArgs{...}
//
//	or:
//
//	        nil
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput
	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput
}

type clusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrType ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorArgs

func ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtr(v *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorArgs) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrInput {
	return (*clusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrType)(v)
}

func (*clusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector)(nil)).Elem()
}

func (i *clusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrType) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput {
	return i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutputWithContext(context.Background())
}

func (i *clusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrType) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput)
}

func (i *clusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrType) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector] {
	return pulumix.Output[*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutputWithContext(ctx).OutputState,
	}
}

// A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. This field is beta-level and is only honored when PodAffinityNamespaceSelector feature is enabled.
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput {
	return o.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutputWithContext(context.Background())
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector) *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector {
		return &v
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput)
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutput) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector]{
		OutputState: o.OutputState,
	}
}

// matchExpressions is a list of label selector requirements. The requirements are ANDed.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutput) MatchExpressions() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector) []ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressions {
		return v.MatchExpressions
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayOutput)
}

// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutput) MatchLabels() pulumi.StringMapOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector) map[string]string {
		return v.MatchLabels
	}).(pulumi.StringMapOutput)
}

type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector] {
	return pulumix.Output[*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector]{
		OutputState: o.OutputState,
	}
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput) Elem() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector {
		if v != nil {
			return *v
		}
		var ret ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector
		return ret
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutput)
}

// matchExpressions is a list of label selector requirements. The requirements are ANDed.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput) MatchExpressions() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector) []ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressions {
		if v == nil {
			return nil
		}
		return v.MatchExpressions
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayOutput)
}

// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput) MatchLabels() pulumi.StringMapOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector) map[string]string {
		if v == nil {
			return nil
		}
		return v.MatchLabels
	}).(pulumi.StringMapOutput)
}

// A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressions struct {
	// key is the label key that the selector applies to.
	Key string `pulumi:"key"`
	// operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
	Operator string `pulumi:"operator"`
	// values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
	Values []string `pulumi:"values"`
}

// ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsInput is an input type that accepts ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArgs and ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsInput` via:
//
//	ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArgs{...}
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsOutput
	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsOutput
}

// A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArgs struct {
	// key is the label key that the selector applies to.
	Key pulumi.StringInput `pulumi:"key"`
	// operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
	Operator pulumi.StringInput `pulumi:"operator"`
	// values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
	Values pulumi.StringArrayInput `pulumi:"values"`
}

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressions)(nil)).Elem()
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsOutput {
	return i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsOutput)
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArgs) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressions] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressions]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsOutputWithContext(ctx).OutputState,
	}
}

// ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayInput is an input type that accepts ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArray and ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayInput` via:
//
//	ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArray{ ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArgs{...} }
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayOutput
	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayOutput
}

type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArray []ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsInput

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArray) ElementType() reflect.Type {
	return reflect.TypeOf((*[]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressions)(nil)).Elem()
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArray) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayOutput {
	return i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArray) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayOutput)
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArray) ToOutput(ctx context.Context) pulumix.Output[[]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressions] {
	return pulumix.Output[[]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressions]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayOutputWithContext(ctx).OutputState,
	}
}

// A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressions)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsOutput) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressions] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressions]{
		OutputState: o.OutputState,
	}
}

// key is the label key that the selector applies to.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsOutput) Key() pulumi.StringOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressions) string {
		return v.Key
	}).(pulumi.StringOutput)
}

// operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsOutput) Operator() pulumi.StringOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressions) string {
		return v.Operator
	}).(pulumi.StringOutput)
}

// values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsOutput) Values() pulumi.StringArrayOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressions) []string {
		return v.Values
	}).(pulumi.StringArrayOutput)
}

type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*[]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressions)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayOutput) ToOutput(ctx context.Context) pulumix.Output[[]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressions] {
	return pulumix.Output[[]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressions]{
		OutputState: o.OutputState,
	}
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayOutput) Index(i pulumi.IntInput) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsOutput {
	return pulumi.All(o, i).ApplyT(func(vs []interface{}) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressions {
		return vs[0].([]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressions)[vs[1].(int)]
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsOutput)
}

// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchLabels struct {
}

// Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinity struct {
	// The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.
	PreferredDuringSchedulingIgnoredDuringExecution []ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecution `pulumi:"preferredDuringSchedulingIgnoredDuringExecution"`
	// If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.
	RequiredDuringSchedulingIgnoredDuringExecution []ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecution `pulumi:"requiredDuringSchedulingIgnoredDuringExecution"`
}

// ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityInput is an input type that accepts ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityArgs and ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityInput` via:
//
//	ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityArgs{...}
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityOutput
	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityOutput
}

// Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityArgs struct {
	// The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.
	PreferredDuringSchedulingIgnoredDuringExecution ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayInput `pulumi:"preferredDuringSchedulingIgnoredDuringExecution"`
	// If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.
	RequiredDuringSchedulingIgnoredDuringExecution ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayInput `pulumi:"requiredDuringSchedulingIgnoredDuringExecution"`
}

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinity)(nil)).Elem()
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityOutput {
	return i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityOutput)
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityArgs) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinity] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinity]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityOutputWithContext(ctx).OutputState,
	}
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPtrOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPtrOutput {
	return i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPtrOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityOutput).ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPtrOutputWithContext(ctx)
}

// ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPtrInput is an input type that accepts ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityArgs, ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPtr and ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPtrOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPtrInput` via:
//
//	        ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityArgs{...}
//
//	or:
//
//	        nil
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPtrInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPtrOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPtrOutput
	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPtrOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPtrOutput
}

type clusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPtrType ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityArgs

func ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPtr(v *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityArgs) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPtrInput {
	return (*clusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPtrType)(v)
}

func (*clusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinity)(nil)).Elem()
}

func (i *clusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPtrType) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPtrOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPtrOutput {
	return i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPtrOutputWithContext(context.Background())
}

func (i *clusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPtrType) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPtrOutput)
}

func (i *clusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPtrType) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinity] {
	return pulumix.Output[*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinity]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPtrOutputWithContext(ctx).OutputState,
	}
}

// Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinity)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPtrOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPtrOutput {
	return o.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPtrOutputWithContext(context.Background())
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinity) *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinity {
		return &v
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPtrOutput)
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityOutput) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinity] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinity]{
		OutputState: o.OutputState,
	}
}

// The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityOutput) PreferredDuringSchedulingIgnoredDuringExecution() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinity) []ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecution {
		return v.PreferredDuringSchedulingIgnoredDuringExecution
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput)
}

// If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityOutput) RequiredDuringSchedulingIgnoredDuringExecution() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinity) []ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecution {
		return v.RequiredDuringSchedulingIgnoredDuringExecution
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayOutput)
}

type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPtrOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinity)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPtrOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPtrOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPtrOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPtrOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPtrOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinity] {
	return pulumix.Output[*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinity]{
		OutputState: o.OutputState,
	}
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPtrOutput) Elem() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinity) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinity {
		if v != nil {
			return *v
		}
		var ret ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinity
		return ret
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityOutput)
}

// The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPtrOutput) PreferredDuringSchedulingIgnoredDuringExecution() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinity) []ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecution {
		if v == nil {
			return nil
		}
		return v.PreferredDuringSchedulingIgnoredDuringExecution
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput)
}

// If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPtrOutput) RequiredDuringSchedulingIgnoredDuringExecution() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinity) []ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecution {
		if v == nil {
			return nil
		}
		return v.RequiredDuringSchedulingIgnoredDuringExecution
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayOutput)
}

// The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecution struct {
	// Required. A pod affinity term, associated with the corresponding weight.
	PodAffinityTerm ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm `pulumi:"podAffinityTerm"`
	// weight associated with matching the corresponding podAffinityTerm, in the range 1-100.
	Weight int `pulumi:"weight"`
}

// ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionInput is an input type that accepts ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionArgs and ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionInput` via:
//
//	ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionArgs{...}
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput
	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput
}

// The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionArgs struct {
	// Required. A pod affinity term, associated with the corresponding weight.
	PodAffinityTerm ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermInput `pulumi:"podAffinityTerm"`
	// weight associated with matching the corresponding podAffinityTerm, in the range 1-100.
	Weight pulumi.IntInput `pulumi:"weight"`
}

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecution)(nil)).Elem()
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput {
	return i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput)
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionArgs) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecution] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecution]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutputWithContext(ctx).OutputState,
	}
}

// ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayInput is an input type that accepts ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionArray and ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayInput` via:
//
//	ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionArray{ ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionArgs{...} }
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput
	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput
}

type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionArray []ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionInput

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionArray) ElementType() reflect.Type {
	return reflect.TypeOf((*[]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecution)(nil)).Elem()
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionArray) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput {
	return i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionArray) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput)
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionArray) ToOutput(ctx context.Context) pulumix.Output[[]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecution] {
	return pulumix.Output[[]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecution]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutputWithContext(ctx).OutputState,
	}
}

// The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecution)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecution] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecution]{
		OutputState: o.OutputState,
	}
}

// Required. A pod affinity term, associated with the corresponding weight.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput) PodAffinityTerm() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecution) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm {
		return v.PodAffinityTerm
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermOutput)
}

// weight associated with matching the corresponding podAffinityTerm, in the range 1-100.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput) Weight() pulumi.IntOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecution) int {
		return v.Weight
	}).(pulumi.IntOutput)
}

type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*[]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecution)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput) ToOutput(ctx context.Context) pulumix.Output[[]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecution] {
	return pulumix.Output[[]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecution]{
		OutputState: o.OutputState,
	}
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput) Index(i pulumi.IntInput) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput {
	return pulumi.All(o, i).ApplyT(func(vs []interface{}) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecution {
		return vs[0].([]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecution)[vs[1].(int)]
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput)
}

// Required. A pod affinity term, associated with the corresponding weight.
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm struct {
	// A label query over a set of resources, in this case pods.
	LabelSelector *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector `pulumi:"labelSelector"`
	// A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. This field is beta-level and is only honored when PodAffinityNamespaceSelector feature is enabled.
	NamespaceSelector *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector `pulumi:"namespaceSelector"`
	// namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace"
	Namespaces []string `pulumi:"namespaces"`
	// This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.
	TopologyKey string `pulumi:"topologyKey"`
}

// ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermInput is an input type that accepts ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermArgs and ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermInput` via:
//
//	ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermArgs{...}
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermOutput
	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermOutput
}

// Required. A pod affinity term, associated with the corresponding weight.
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermArgs struct {
	// A label query over a set of resources, in this case pods.
	LabelSelector ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrInput `pulumi:"labelSelector"`
	// A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. This field is beta-level and is only honored when PodAffinityNamespaceSelector feature is enabled.
	NamespaceSelector ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrInput `pulumi:"namespaceSelector"`
	// namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace"
	Namespaces pulumi.StringArrayInput `pulumi:"namespaces"`
	// This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.
	TopologyKey pulumi.StringInput `pulumi:"topologyKey"`
}

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm)(nil)).Elem()
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermOutput {
	return i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermOutput)
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermArgs) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermOutputWithContext(ctx).OutputState,
	}
}

// Required. A pod affinity term, associated with the corresponding weight.
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermOutput) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm]{
		OutputState: o.OutputState,
	}
}

// A label query over a set of resources, in this case pods.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermOutput) LabelSelector() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm) *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector {
		return v.LabelSelector
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput)
}

// A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. This field is beta-level and is only honored when PodAffinityNamespaceSelector feature is enabled.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermOutput) NamespaceSelector() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm) *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector {
		return v.NamespaceSelector
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput)
}

// namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace"
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermOutput) Namespaces() pulumi.StringArrayOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm) []string {
		return v.Namespaces
	}).(pulumi.StringArrayOutput)
}

// This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermOutput) TopologyKey() pulumi.StringOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm) string {
		return v.TopologyKey
	}).(pulumi.StringOutput)
}

// A label query over a set of resources, in this case pods.
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector struct {
	// matchExpressions is a list of label selector requirements. The requirements are ANDed.
	MatchExpressions []ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressions `pulumi:"matchExpressions"`
	// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
	MatchLabels map[string]string `pulumi:"matchLabels"`
}

// ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorInput is an input type that accepts ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorArgs and ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorInput` via:
//
//	ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorArgs{...}
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutput
	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutput
}

// A label query over a set of resources, in this case pods.
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorArgs struct {
	// matchExpressions is a list of label selector requirements. The requirements are ANDed.
	MatchExpressions ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayInput `pulumi:"matchExpressions"`
	// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
	MatchLabels pulumi.StringMapInput `pulumi:"matchLabels"`
}

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector)(nil)).Elem()
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutput {
	return i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutput)
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorArgs) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutputWithContext(ctx).OutputState,
	}
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput {
	return i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutput).ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutputWithContext(ctx)
}

// ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrInput is an input type that accepts ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorArgs, ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtr and ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrInput` via:
//
//	        ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorArgs{...}
//
//	or:
//
//	        nil
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput
	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput
}

type clusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrType ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorArgs

func ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtr(v *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorArgs) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrInput {
	return (*clusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrType)(v)
}

func (*clusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector)(nil)).Elem()
}

func (i *clusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrType) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput {
	return i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutputWithContext(context.Background())
}

func (i *clusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrType) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput)
}

func (i *clusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrType) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector] {
	return pulumix.Output[*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutputWithContext(ctx).OutputState,
	}
}

// A label query over a set of resources, in this case pods.
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput {
	return o.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutputWithContext(context.Background())
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector) *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector {
		return &v
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput)
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutput) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector]{
		OutputState: o.OutputState,
	}
}

// matchExpressions is a list of label selector requirements. The requirements are ANDed.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutput) MatchExpressions() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector) []ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressions {
		return v.MatchExpressions
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayOutput)
}

// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutput) MatchLabels() pulumi.StringMapOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector) map[string]string {
		return v.MatchLabels
	}).(pulumi.StringMapOutput)
}

type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector] {
	return pulumix.Output[*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector]{
		OutputState: o.OutputState,
	}
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput) Elem() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector {
		if v != nil {
			return *v
		}
		var ret ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector
		return ret
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutput)
}

// matchExpressions is a list of label selector requirements. The requirements are ANDed.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput) MatchExpressions() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector) []ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressions {
		if v == nil {
			return nil
		}
		return v.MatchExpressions
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayOutput)
}

// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput) MatchLabels() pulumi.StringMapOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector) map[string]string {
		if v == nil {
			return nil
		}
		return v.MatchLabels
	}).(pulumi.StringMapOutput)
}

// A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressions struct {
	// key is the label key that the selector applies to.
	Key string `pulumi:"key"`
	// operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
	Operator string `pulumi:"operator"`
	// values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
	Values []string `pulumi:"values"`
}

// ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsInput is an input type that accepts ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArgs and ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsInput` via:
//
//	ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArgs{...}
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsOutput
	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsOutput
}

// A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArgs struct {
	// key is the label key that the selector applies to.
	Key pulumi.StringInput `pulumi:"key"`
	// operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
	Operator pulumi.StringInput `pulumi:"operator"`
	// values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
	Values pulumi.StringArrayInput `pulumi:"values"`
}

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressions)(nil)).Elem()
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsOutput {
	return i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsOutput)
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArgs) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressions] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressions]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsOutputWithContext(ctx).OutputState,
	}
}

// ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayInput is an input type that accepts ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArray and ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayInput` via:
//
//	ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArray{ ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArgs{...} }
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayOutput
	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayOutput
}

type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArray []ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsInput

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArray) ElementType() reflect.Type {
	return reflect.TypeOf((*[]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressions)(nil)).Elem()
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArray) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayOutput {
	return i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArray) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayOutput)
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArray) ToOutput(ctx context.Context) pulumix.Output[[]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressions] {
	return pulumix.Output[[]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressions]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayOutputWithContext(ctx).OutputState,
	}
}

// A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressions)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsOutput) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressions] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressions]{
		OutputState: o.OutputState,
	}
}

// key is the label key that the selector applies to.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsOutput) Key() pulumi.StringOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressions) string {
		return v.Key
	}).(pulumi.StringOutput)
}

// operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsOutput) Operator() pulumi.StringOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressions) string {
		return v.Operator
	}).(pulumi.StringOutput)
}

// values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsOutput) Values() pulumi.StringArrayOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressions) []string {
		return v.Values
	}).(pulumi.StringArrayOutput)
}

type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*[]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressions)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayOutput) ToOutput(ctx context.Context) pulumix.Output[[]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressions] {
	return pulumix.Output[[]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressions]{
		OutputState: o.OutputState,
	}
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayOutput) Index(i pulumi.IntInput) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsOutput {
	return pulumi.All(o, i).ApplyT(func(vs []interface{}) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressions {
		return vs[0].([]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressions)[vs[1].(int)]
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsOutput)
}

// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchLabels struct {
}

// A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. This field is beta-level and is only honored when PodAffinityNamespaceSelector feature is enabled.
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector struct {
	// matchExpressions is a list of label selector requirements. The requirements are ANDed.
	MatchExpressions []ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressions `pulumi:"matchExpressions"`
	// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
	MatchLabels map[string]string `pulumi:"matchLabels"`
}

// ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorInput is an input type that accepts ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorArgs and ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorInput` via:
//
//	ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorArgs{...}
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutput
	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutput
}

// A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. This field is beta-level and is only honored when PodAffinityNamespaceSelector feature is enabled.
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorArgs struct {
	// matchExpressions is a list of label selector requirements. The requirements are ANDed.
	MatchExpressions ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayInput `pulumi:"matchExpressions"`
	// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
	MatchLabels pulumi.StringMapInput `pulumi:"matchLabels"`
}

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector)(nil)).Elem()
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutput {
	return i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutput)
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorArgs) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutputWithContext(ctx).OutputState,
	}
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput {
	return i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutput).ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutputWithContext(ctx)
}

// ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrInput is an input type that accepts ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorArgs, ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtr and ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrInput` via:
//
//	        ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorArgs{...}
//
//	or:
//
//	        nil
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput
	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput
}

type clusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrType ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorArgs

func ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtr(v *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorArgs) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrInput {
	return (*clusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrType)(v)
}

func (*clusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector)(nil)).Elem()
}

func (i *clusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrType) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput {
	return i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutputWithContext(context.Background())
}

func (i *clusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrType) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput)
}

func (i *clusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrType) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector] {
	return pulumix.Output[*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutputWithContext(ctx).OutputState,
	}
}

// A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. This field is beta-level and is only honored when PodAffinityNamespaceSelector feature is enabled.
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput {
	return o.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutputWithContext(context.Background())
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector) *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector {
		return &v
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput)
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutput) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector]{
		OutputState: o.OutputState,
	}
}

// matchExpressions is a list of label selector requirements. The requirements are ANDed.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutput) MatchExpressions() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector) []ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressions {
		return v.MatchExpressions
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayOutput)
}

// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutput) MatchLabels() pulumi.StringMapOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector) map[string]string {
		return v.MatchLabels
	}).(pulumi.StringMapOutput)
}

type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector] {
	return pulumix.Output[*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector]{
		OutputState: o.OutputState,
	}
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput) Elem() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector {
		if v != nil {
			return *v
		}
		var ret ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector
		return ret
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutput)
}

// matchExpressions is a list of label selector requirements. The requirements are ANDed.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput) MatchExpressions() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector) []ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressions {
		if v == nil {
			return nil
		}
		return v.MatchExpressions
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayOutput)
}

// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput) MatchLabels() pulumi.StringMapOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector) map[string]string {
		if v == nil {
			return nil
		}
		return v.MatchLabels
	}).(pulumi.StringMapOutput)
}

// A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressions struct {
	// key is the label key that the selector applies to.
	Key string `pulumi:"key"`
	// operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
	Operator string `pulumi:"operator"`
	// values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
	Values []string `pulumi:"values"`
}

// ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsInput is an input type that accepts ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArgs and ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsInput` via:
//
//	ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArgs{...}
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsOutput
	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsOutput
}

// A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArgs struct {
	// key is the label key that the selector applies to.
	Key pulumi.StringInput `pulumi:"key"`
	// operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
	Operator pulumi.StringInput `pulumi:"operator"`
	// values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
	Values pulumi.StringArrayInput `pulumi:"values"`
}

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressions)(nil)).Elem()
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsOutput {
	return i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsOutput)
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArgs) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressions] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressions]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsOutputWithContext(ctx).OutputState,
	}
}

// ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayInput is an input type that accepts ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArray and ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayInput` via:
//
//	ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArray{ ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArgs{...} }
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayOutput
	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayOutput
}

type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArray []ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsInput

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArray) ElementType() reflect.Type {
	return reflect.TypeOf((*[]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressions)(nil)).Elem()
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArray) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayOutput {
	return i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArray) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayOutput)
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArray) ToOutput(ctx context.Context) pulumix.Output[[]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressions] {
	return pulumix.Output[[]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressions]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayOutputWithContext(ctx).OutputState,
	}
}

// A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressions)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsOutput) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressions] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressions]{
		OutputState: o.OutputState,
	}
}

// key is the label key that the selector applies to.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsOutput) Key() pulumi.StringOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressions) string {
		return v.Key
	}).(pulumi.StringOutput)
}

// operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsOutput) Operator() pulumi.StringOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressions) string {
		return v.Operator
	}).(pulumi.StringOutput)
}

// values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsOutput) Values() pulumi.StringArrayOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressions) []string {
		return v.Values
	}).(pulumi.StringArrayOutput)
}

type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*[]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressions)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayOutput) ToOutput(ctx context.Context) pulumix.Output[[]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressions] {
	return pulumix.Output[[]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressions]{
		OutputState: o.OutputState,
	}
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayOutput) Index(i pulumi.IntInput) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsOutput {
	return pulumi.All(o, i).ApplyT(func(vs []interface{}) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressions {
		return vs[0].([]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressions)[vs[1].(int)]
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsOutput)
}

// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchLabels struct {
}

// Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key <topologyKey> matches that of any node on which a pod of the set of pods is running
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecution struct {
	// A label query over a set of resources, in this case pods.
	LabelSelector *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector `pulumi:"labelSelector"`
	// A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. This field is beta-level and is only honored when PodAffinityNamespaceSelector feature is enabled.
	NamespaceSelector *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector `pulumi:"namespaceSelector"`
	// namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace"
	Namespaces []string `pulumi:"namespaces"`
	// This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.
	TopologyKey string `pulumi:"topologyKey"`
}

// ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionInput is an input type that accepts ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionArgs and ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionInput` via:
//
//	ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionArgs{...}
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput
	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput
}

// Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key <topologyKey> matches that of any node on which a pod of the set of pods is running
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionArgs struct {
	// A label query over a set of resources, in this case pods.
	LabelSelector ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrInput `pulumi:"labelSelector"`
	// A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. This field is beta-level and is only honored when PodAffinityNamespaceSelector feature is enabled.
	NamespaceSelector ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrInput `pulumi:"namespaceSelector"`
	// namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace"
	Namespaces pulumi.StringArrayInput `pulumi:"namespaces"`
	// This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.
	TopologyKey pulumi.StringInput `pulumi:"topologyKey"`
}

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecution)(nil)).Elem()
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput {
	return i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput)
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionArgs) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecution] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecution]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutputWithContext(ctx).OutputState,
	}
}

// ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayInput is an input type that accepts ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionArray and ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayInput` via:
//
//	ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionArray{ ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionArgs{...} }
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayOutput
	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayOutput
}

type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionArray []ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionInput

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionArray) ElementType() reflect.Type {
	return reflect.TypeOf((*[]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecution)(nil)).Elem()
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionArray) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayOutput {
	return i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionArray) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayOutput)
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionArray) ToOutput(ctx context.Context) pulumix.Output[[]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecution] {
	return pulumix.Output[[]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecution]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayOutputWithContext(ctx).OutputState,
	}
}

// Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key <topologyKey> matches that of any node on which a pod of the set of pods is running
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecution)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecution] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecution]{
		OutputState: o.OutputState,
	}
}

// A label query over a set of resources, in this case pods.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput) LabelSelector() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecution) *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector {
		return v.LabelSelector
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput)
}

// A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. This field is beta-level and is only honored when PodAffinityNamespaceSelector feature is enabled.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput) NamespaceSelector() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecution) *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector {
		return v.NamespaceSelector
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput)
}

// namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace"
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput) Namespaces() pulumi.StringArrayOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecution) []string {
		return v.Namespaces
	}).(pulumi.StringArrayOutput)
}

// This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput) TopologyKey() pulumi.StringOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecution) string {
		return v.TopologyKey
	}).(pulumi.StringOutput)
}

type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*[]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecution)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayOutput) ToOutput(ctx context.Context) pulumix.Output[[]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecution] {
	return pulumix.Output[[]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecution]{
		OutputState: o.OutputState,
	}
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayOutput) Index(i pulumi.IntInput) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput {
	return pulumi.All(o, i).ApplyT(func(vs []interface{}) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecution {
		return vs[0].([]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecution)[vs[1].(int)]
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput)
}

// A label query over a set of resources, in this case pods.
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector struct {
	// matchExpressions is a list of label selector requirements. The requirements are ANDed.
	MatchExpressions []ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressions `pulumi:"matchExpressions"`
	// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
	MatchLabels map[string]string `pulumi:"matchLabels"`
}

// ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorInput is an input type that accepts ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorArgs and ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorInput` via:
//
//	ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorArgs{...}
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutput
	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutput
}

// A label query over a set of resources, in this case pods.
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorArgs struct {
	// matchExpressions is a list of label selector requirements. The requirements are ANDed.
	MatchExpressions ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayInput `pulumi:"matchExpressions"`
	// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
	MatchLabels pulumi.StringMapInput `pulumi:"matchLabels"`
}

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector)(nil)).Elem()
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutput {
	return i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutput)
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorArgs) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutputWithContext(ctx).OutputState,
	}
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput {
	return i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutput).ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutputWithContext(ctx)
}

// ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrInput is an input type that accepts ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorArgs, ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtr and ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrInput` via:
//
//	        ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorArgs{...}
//
//	or:
//
//	        nil
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput
	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput
}

type clusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrType ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorArgs

func ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtr(v *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorArgs) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrInput {
	return (*clusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrType)(v)
}

func (*clusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector)(nil)).Elem()
}

func (i *clusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrType) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput {
	return i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutputWithContext(context.Background())
}

func (i *clusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrType) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput)
}

func (i *clusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrType) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector] {
	return pulumix.Output[*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutputWithContext(ctx).OutputState,
	}
}

// A label query over a set of resources, in this case pods.
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput {
	return o.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutputWithContext(context.Background())
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector) *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector {
		return &v
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput)
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutput) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector]{
		OutputState: o.OutputState,
	}
}

// matchExpressions is a list of label selector requirements. The requirements are ANDed.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutput) MatchExpressions() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector) []ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressions {
		return v.MatchExpressions
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayOutput)
}

// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutput) MatchLabels() pulumi.StringMapOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector) map[string]string {
		return v.MatchLabels
	}).(pulumi.StringMapOutput)
}

type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector] {
	return pulumix.Output[*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector]{
		OutputState: o.OutputState,
	}
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput) Elem() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector {
		if v != nil {
			return *v
		}
		var ret ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector
		return ret
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutput)
}

// matchExpressions is a list of label selector requirements. The requirements are ANDed.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput) MatchExpressions() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector) []ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressions {
		if v == nil {
			return nil
		}
		return v.MatchExpressions
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayOutput)
}

// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput) MatchLabels() pulumi.StringMapOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector) map[string]string {
		if v == nil {
			return nil
		}
		return v.MatchLabels
	}).(pulumi.StringMapOutput)
}

// A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressions struct {
	// key is the label key that the selector applies to.
	Key string `pulumi:"key"`
	// operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
	Operator string `pulumi:"operator"`
	// values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
	Values []string `pulumi:"values"`
}

// ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsInput is an input type that accepts ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArgs and ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsInput` via:
//
//	ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArgs{...}
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsOutput
	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsOutput
}

// A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArgs struct {
	// key is the label key that the selector applies to.
	Key pulumi.StringInput `pulumi:"key"`
	// operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
	Operator pulumi.StringInput `pulumi:"operator"`
	// values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
	Values pulumi.StringArrayInput `pulumi:"values"`
}

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressions)(nil)).Elem()
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsOutput {
	return i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsOutput)
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArgs) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressions] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressions]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsOutputWithContext(ctx).OutputState,
	}
}

// ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayInput is an input type that accepts ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArray and ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayInput` via:
//
//	ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArray{ ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArgs{...} }
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayOutput
	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayOutput
}

type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArray []ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsInput

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArray) ElementType() reflect.Type {
	return reflect.TypeOf((*[]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressions)(nil)).Elem()
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArray) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayOutput {
	return i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArray) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayOutput)
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArray) ToOutput(ctx context.Context) pulumix.Output[[]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressions] {
	return pulumix.Output[[]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressions]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayOutputWithContext(ctx).OutputState,
	}
}

// A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressions)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsOutput) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressions] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressions]{
		OutputState: o.OutputState,
	}
}

// key is the label key that the selector applies to.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsOutput) Key() pulumi.StringOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressions) string {
		return v.Key
	}).(pulumi.StringOutput)
}

// operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsOutput) Operator() pulumi.StringOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressions) string {
		return v.Operator
	}).(pulumi.StringOutput)
}

// values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsOutput) Values() pulumi.StringArrayOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressions) []string {
		return v.Values
	}).(pulumi.StringArrayOutput)
}

type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*[]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressions)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayOutput) ToOutput(ctx context.Context) pulumix.Output[[]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressions] {
	return pulumix.Output[[]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressions]{
		OutputState: o.OutputState,
	}
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayOutput) Index(i pulumi.IntInput) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsOutput {
	return pulumi.All(o, i).ApplyT(func(vs []interface{}) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressions {
		return vs[0].([]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressions)[vs[1].(int)]
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsOutput)
}

// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchLabels struct {
}

// A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. This field is beta-level and is only honored when PodAffinityNamespaceSelector feature is enabled.
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector struct {
	// matchExpressions is a list of label selector requirements. The requirements are ANDed.
	MatchExpressions []ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressions `pulumi:"matchExpressions"`
	// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
	MatchLabels map[string]string `pulumi:"matchLabels"`
}

// ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorInput is an input type that accepts ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorArgs and ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorInput` via:
//
//	ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorArgs{...}
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutput
	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutput
}

// A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. This field is beta-level and is only honored when PodAffinityNamespaceSelector feature is enabled.
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorArgs struct {
	// matchExpressions is a list of label selector requirements. The requirements are ANDed.
	MatchExpressions ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayInput `pulumi:"matchExpressions"`
	// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
	MatchLabels pulumi.StringMapInput `pulumi:"matchLabels"`
}

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector)(nil)).Elem()
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutput {
	return i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutput)
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorArgs) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutputWithContext(ctx).OutputState,
	}
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput {
	return i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutput).ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutputWithContext(ctx)
}

// ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrInput is an input type that accepts ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorArgs, ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtr and ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrInput` via:
//
//	        ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorArgs{...}
//
//	or:
//
//	        nil
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput
	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput
}

type clusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrType ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorArgs

func ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtr(v *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorArgs) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrInput {
	return (*clusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrType)(v)
}

func (*clusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector)(nil)).Elem()
}

func (i *clusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrType) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput {
	return i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutputWithContext(context.Background())
}

func (i *clusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrType) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput)
}

func (i *clusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrType) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector] {
	return pulumix.Output[*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutputWithContext(ctx).OutputState,
	}
}

// A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. This field is beta-level and is only honored when PodAffinityNamespaceSelector feature is enabled.
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput {
	return o.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutputWithContext(context.Background())
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector) *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector {
		return &v
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput)
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutput) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector]{
		OutputState: o.OutputState,
	}
}

// matchExpressions is a list of label selector requirements. The requirements are ANDed.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutput) MatchExpressions() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector) []ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressions {
		return v.MatchExpressions
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayOutput)
}

// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutput) MatchLabels() pulumi.StringMapOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector) map[string]string {
		return v.MatchLabels
	}).(pulumi.StringMapOutput)
}

type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector] {
	return pulumix.Output[*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector]{
		OutputState: o.OutputState,
	}
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput) Elem() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector {
		if v != nil {
			return *v
		}
		var ret ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector
		return ret
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutput)
}

// matchExpressions is a list of label selector requirements. The requirements are ANDed.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput) MatchExpressions() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector) []ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressions {
		if v == nil {
			return nil
		}
		return v.MatchExpressions
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayOutput)
}

// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput) MatchLabels() pulumi.StringMapOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector) map[string]string {
		if v == nil {
			return nil
		}
		return v.MatchLabels
	}).(pulumi.StringMapOutput)
}

// A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressions struct {
	// key is the label key that the selector applies to.
	Key string `pulumi:"key"`
	// operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
	Operator string `pulumi:"operator"`
	// values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
	Values []string `pulumi:"values"`
}

// ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsInput is an input type that accepts ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArgs and ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsInput` via:
//
//	ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArgs{...}
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsOutput
	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsOutput
}

// A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArgs struct {
	// key is the label key that the selector applies to.
	Key pulumi.StringInput `pulumi:"key"`
	// operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
	Operator pulumi.StringInput `pulumi:"operator"`
	// values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
	Values pulumi.StringArrayInput `pulumi:"values"`
}

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressions)(nil)).Elem()
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsOutput {
	return i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsOutput)
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArgs) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressions] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressions]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsOutputWithContext(ctx).OutputState,
	}
}

// ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayInput is an input type that accepts ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArray and ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayInput` via:
//
//	ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArray{ ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArgs{...} }
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayOutput
	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayOutput
}

type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArray []ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsInput

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArray) ElementType() reflect.Type {
	return reflect.TypeOf((*[]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressions)(nil)).Elem()
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArray) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayOutput {
	return i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArray) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayOutput)
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArray) ToOutput(ctx context.Context) pulumix.Output[[]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressions] {
	return pulumix.Output[[]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressions]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayOutputWithContext(ctx).OutputState,
	}
}

// A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressions)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsOutput) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressions] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressions]{
		OutputState: o.OutputState,
	}
}

// key is the label key that the selector applies to.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsOutput) Key() pulumi.StringOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressions) string {
		return v.Key
	}).(pulumi.StringOutput)
}

// operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsOutput) Operator() pulumi.StringOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressions) string {
		return v.Operator
	}).(pulumi.StringOutput)
}

// values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsOutput) Values() pulumi.StringArrayOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressions) []string {
		return v.Values
	}).(pulumi.StringArrayOutput)
}

type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*[]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressions)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayOutput) ToOutput(ctx context.Context) pulumix.Output[[]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressions] {
	return pulumix.Output[[]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressions]{
		OutputState: o.OutputState,
	}
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayOutput) Index(i pulumi.IntInput) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsOutput {
	return pulumi.All(o, i).ApplyT(func(vs []interface{}) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressions {
		return vs[0].([]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressions)[vs[1].(int)]
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsOutput)
}

// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchLabels struct {
}

// NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecNodeSelector struct {
}

// The pod this Toleration is attached to tolerates any taint that matches the triple <key,value,effect> using the matching operator <operator>.
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerations struct {
	// Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.
	Effect *string `pulumi:"effect"`
	// Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys.
	Key *string `pulumi:"key"`
	// Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category.
	Operator *string `pulumi:"operator"`
	// TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system.
	TolerationSeconds *int `pulumi:"tolerationSeconds"`
	// Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.
	Value *string `pulumi:"value"`
}

// ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsInput is an input type that accepts ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsArgs and ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsInput` via:
//
//	ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsArgs{...}
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsOutput
	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsOutput
}

// The pod this Toleration is attached to tolerates any taint that matches the triple <key,value,effect> using the matching operator <operator>.
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsArgs struct {
	// Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.
	Effect pulumi.StringPtrInput `pulumi:"effect"`
	// Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys.
	Key pulumi.StringPtrInput `pulumi:"key"`
	// Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category.
	Operator pulumi.StringPtrInput `pulumi:"operator"`
	// TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system.
	TolerationSeconds pulumi.IntPtrInput `pulumi:"tolerationSeconds"`
	// Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.
	Value pulumi.StringPtrInput `pulumi:"value"`
}

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerations)(nil)).Elem()
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsOutput {
	return i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsArgs) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsOutput)
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsArgs) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerations] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerations]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsOutputWithContext(ctx).OutputState,
	}
}

// ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsArrayInput is an input type that accepts ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsArray and ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsArrayOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsArrayInput` via:
//
//	ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsArray{ ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsArgs{...} }
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsArrayInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsArrayOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsArrayOutput
	ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsArrayOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsArrayOutput
}

type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsArray []ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsInput

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsArray) ElementType() reflect.Type {
	return reflect.TypeOf((*[]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerations)(nil)).Elem()
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsArray) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsArrayOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsArrayOutput {
	return i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsArrayOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsArray) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsArrayOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsArrayOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsArrayOutput)
}

func (i ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsArray) ToOutput(ctx context.Context) pulumix.Output[[]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerations] {
	return pulumix.Output[[]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerations]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsArrayOutputWithContext(ctx).OutputState,
	}
}

// The pod this Toleration is attached to tolerates any taint that matches the triple <key,value,effect> using the matching operator <operator>.
type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerations)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsOutput) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerations] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerations]{
		OutputState: o.OutputState,
	}
}

// Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsOutput) Effect() pulumi.StringPtrOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerations) *string { return v.Effect }).(pulumi.StringPtrOutput)
}

// Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsOutput) Key() pulumi.StringPtrOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerations) *string { return v.Key }).(pulumi.StringPtrOutput)
}

// Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsOutput) Operator() pulumi.StringPtrOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerations) *string { return v.Operator }).(pulumi.StringPtrOutput)
}

// TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsOutput) TolerationSeconds() pulumi.IntPtrOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerations) *int {
		return v.TolerationSeconds
	}).(pulumi.IntPtrOutput)
}

// Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.
func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsOutput) Value() pulumi.StringPtrOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerations) *string { return v.Value }).(pulumi.StringPtrOutput)
}

type ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsArrayOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsArrayOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*[]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerations)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsArrayOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsArrayOutput() ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsArrayOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsArrayOutput) ToClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsArrayOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsArrayOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsArrayOutput) ToOutput(ctx context.Context) pulumix.Output[[]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerations] {
	return pulumix.Output[[]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerations]{
		OutputState: o.OutputState,
	}
}

func (o ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsArrayOutput) Index(i pulumi.IntInput) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsOutput {
	return pulumi.All(o, i).ApplyT(func(vs []interface{}) ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerations {
		return vs[0].([]ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerations)[vs[1].(int)]
	}).(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsOutput)
}

// Selector selects a set of DNSNames on the Certificate resource that should be solved using this challenge solver. If not specified, the solver will be treated as the 'default' solver with the lowest priority, i.e. if any other solver has a more specific match, it will be used instead.
type ClusterIssuerSpecAcmeSolversSelector struct {
	// List of DNSNames that this solver will be used to solve. If specified and a match is found, a dnsNames selector will take precedence over a dnsZones selector. If multiple solvers match with the same dnsNames value, the solver with the most matching labels in matchLabels will be selected. If neither has more matches, the solver defined earlier in the list will be selected.
	DnsNames []string `pulumi:"dnsNames"`
	// List of DNSZones that this solver will be used to solve. The most specific DNS zone match specified here will take precedence over other DNS zone matches, so a solver specifying sys.example.com will be selected over one specifying example.com for the domain www.sys.example.com. If multiple solvers match with the same dnsZones value, the solver with the most matching labels in matchLabels will be selected. If neither has more matches, the solver defined earlier in the list will be selected.
	DnsZones []string `pulumi:"dnsZones"`
	// A label selector that is used to refine the set of certificate's that this challenge solver will apply to.
	MatchLabels map[string]string `pulumi:"matchLabels"`
}

// ClusterIssuerSpecAcmeSolversSelectorInput is an input type that accepts ClusterIssuerSpecAcmeSolversSelectorArgs and ClusterIssuerSpecAcmeSolversSelectorOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversSelectorInput` via:
//
//	ClusterIssuerSpecAcmeSolversSelectorArgs{...}
type ClusterIssuerSpecAcmeSolversSelectorInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversSelectorOutput() ClusterIssuerSpecAcmeSolversSelectorOutput
	ToClusterIssuerSpecAcmeSolversSelectorOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversSelectorOutput
}

// Selector selects a set of DNSNames on the Certificate resource that should be solved using this challenge solver. If not specified, the solver will be treated as the 'default' solver with the lowest priority, i.e. if any other solver has a more specific match, it will be used instead.
type ClusterIssuerSpecAcmeSolversSelectorArgs struct {
	// List of DNSNames that this solver will be used to solve. If specified and a match is found, a dnsNames selector will take precedence over a dnsZones selector. If multiple solvers match with the same dnsNames value, the solver with the most matching labels in matchLabels will be selected. If neither has more matches, the solver defined earlier in the list will be selected.
	DnsNames pulumi.StringArrayInput `pulumi:"dnsNames"`
	// List of DNSZones that this solver will be used to solve. The most specific DNS zone match specified here will take precedence over other DNS zone matches, so a solver specifying sys.example.com will be selected over one specifying example.com for the domain www.sys.example.com. If multiple solvers match with the same dnsZones value, the solver with the most matching labels in matchLabels will be selected. If neither has more matches, the solver defined earlier in the list will be selected.
	DnsZones pulumi.StringArrayInput `pulumi:"dnsZones"`
	// A label selector that is used to refine the set of certificate's that this challenge solver will apply to.
	MatchLabels pulumi.StringMapInput `pulumi:"matchLabels"`
}

func (ClusterIssuerSpecAcmeSolversSelectorArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversSelector)(nil)).Elem()
}

func (i ClusterIssuerSpecAcmeSolversSelectorArgs) ToClusterIssuerSpecAcmeSolversSelectorOutput() ClusterIssuerSpecAcmeSolversSelectorOutput {
	return i.ToClusterIssuerSpecAcmeSolversSelectorOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversSelectorArgs) ToClusterIssuerSpecAcmeSolversSelectorOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversSelectorOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversSelectorOutput)
}

func (i ClusterIssuerSpecAcmeSolversSelectorArgs) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversSelector] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversSelector]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversSelectorOutputWithContext(ctx).OutputState,
	}
}

func (i ClusterIssuerSpecAcmeSolversSelectorArgs) ToClusterIssuerSpecAcmeSolversSelectorPtrOutput() ClusterIssuerSpecAcmeSolversSelectorPtrOutput {
	return i.ToClusterIssuerSpecAcmeSolversSelectorPtrOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecAcmeSolversSelectorArgs) ToClusterIssuerSpecAcmeSolversSelectorPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversSelectorPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversSelectorOutput).ToClusterIssuerSpecAcmeSolversSelectorPtrOutputWithContext(ctx)
}

// ClusterIssuerSpecAcmeSolversSelectorPtrInput is an input type that accepts ClusterIssuerSpecAcmeSolversSelectorArgs, ClusterIssuerSpecAcmeSolversSelectorPtr and ClusterIssuerSpecAcmeSolversSelectorPtrOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecAcmeSolversSelectorPtrInput` via:
//
//	        ClusterIssuerSpecAcmeSolversSelectorArgs{...}
//
//	or:
//
//	        nil
type ClusterIssuerSpecAcmeSolversSelectorPtrInput interface {
	pulumi.Input

	ToClusterIssuerSpecAcmeSolversSelectorPtrOutput() ClusterIssuerSpecAcmeSolversSelectorPtrOutput
	ToClusterIssuerSpecAcmeSolversSelectorPtrOutputWithContext(context.Context) ClusterIssuerSpecAcmeSolversSelectorPtrOutput
}

type clusterIssuerSpecAcmeSolversSelectorPtrType ClusterIssuerSpecAcmeSolversSelectorArgs

func ClusterIssuerSpecAcmeSolversSelectorPtr(v *ClusterIssuerSpecAcmeSolversSelectorArgs) ClusterIssuerSpecAcmeSolversSelectorPtrInput {
	return (*clusterIssuerSpecAcmeSolversSelectorPtrType)(v)
}

func (*clusterIssuerSpecAcmeSolversSelectorPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecAcmeSolversSelector)(nil)).Elem()
}

func (i *clusterIssuerSpecAcmeSolversSelectorPtrType) ToClusterIssuerSpecAcmeSolversSelectorPtrOutput() ClusterIssuerSpecAcmeSolversSelectorPtrOutput {
	return i.ToClusterIssuerSpecAcmeSolversSelectorPtrOutputWithContext(context.Background())
}

func (i *clusterIssuerSpecAcmeSolversSelectorPtrType) ToClusterIssuerSpecAcmeSolversSelectorPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversSelectorPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecAcmeSolversSelectorPtrOutput)
}

func (i *clusterIssuerSpecAcmeSolversSelectorPtrType) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecAcmeSolversSelector] {
	return pulumix.Output[*ClusterIssuerSpecAcmeSolversSelector]{
		OutputState: i.ToClusterIssuerSpecAcmeSolversSelectorPtrOutputWithContext(ctx).OutputState,
	}
}

// Selector selects a set of DNSNames on the Certificate resource that should be solved using this challenge solver. If not specified, the solver will be treated as the 'default' solver with the lowest priority, i.e. if any other solver has a more specific match, it will be used instead.
type ClusterIssuerSpecAcmeSolversSelectorOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversSelectorOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecAcmeSolversSelector)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversSelectorOutput) ToClusterIssuerSpecAcmeSolversSelectorOutput() ClusterIssuerSpecAcmeSolversSelectorOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversSelectorOutput) ToClusterIssuerSpecAcmeSolversSelectorOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversSelectorOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversSelectorOutput) ToClusterIssuerSpecAcmeSolversSelectorPtrOutput() ClusterIssuerSpecAcmeSolversSelectorPtrOutput {
	return o.ToClusterIssuerSpecAcmeSolversSelectorPtrOutputWithContext(context.Background())
}

func (o ClusterIssuerSpecAcmeSolversSelectorOutput) ToClusterIssuerSpecAcmeSolversSelectorPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversSelectorPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v ClusterIssuerSpecAcmeSolversSelector) *ClusterIssuerSpecAcmeSolversSelector {
		return &v
	}).(ClusterIssuerSpecAcmeSolversSelectorPtrOutput)
}

func (o ClusterIssuerSpecAcmeSolversSelectorOutput) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecAcmeSolversSelector] {
	return pulumix.Output[ClusterIssuerSpecAcmeSolversSelector]{
		OutputState: o.OutputState,
	}
}

// List of DNSNames that this solver will be used to solve. If specified and a match is found, a dnsNames selector will take precedence over a dnsZones selector. If multiple solvers match with the same dnsNames value, the solver with the most matching labels in matchLabels will be selected. If neither has more matches, the solver defined earlier in the list will be selected.
func (o ClusterIssuerSpecAcmeSolversSelectorOutput) DnsNames() pulumi.StringArrayOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversSelector) []string { return v.DnsNames }).(pulumi.StringArrayOutput)
}

// List of DNSZones that this solver will be used to solve. The most specific DNS zone match specified here will take precedence over other DNS zone matches, so a solver specifying sys.example.com will be selected over one specifying example.com for the domain www.sys.example.com. If multiple solvers match with the same dnsZones value, the solver with the most matching labels in matchLabels will be selected. If neither has more matches, the solver defined earlier in the list will be selected.
func (o ClusterIssuerSpecAcmeSolversSelectorOutput) DnsZones() pulumi.StringArrayOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversSelector) []string { return v.DnsZones }).(pulumi.StringArrayOutput)
}

// A label selector that is used to refine the set of certificate's that this challenge solver will apply to.
func (o ClusterIssuerSpecAcmeSolversSelectorOutput) MatchLabels() pulumi.StringMapOutput {
	return o.ApplyT(func(v ClusterIssuerSpecAcmeSolversSelector) map[string]string { return v.MatchLabels }).(pulumi.StringMapOutput)
}

type ClusterIssuerSpecAcmeSolversSelectorPtrOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecAcmeSolversSelectorPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecAcmeSolversSelector)(nil)).Elem()
}

func (o ClusterIssuerSpecAcmeSolversSelectorPtrOutput) ToClusterIssuerSpecAcmeSolversSelectorPtrOutput() ClusterIssuerSpecAcmeSolversSelectorPtrOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversSelectorPtrOutput) ToClusterIssuerSpecAcmeSolversSelectorPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecAcmeSolversSelectorPtrOutput {
	return o
}

func (o ClusterIssuerSpecAcmeSolversSelectorPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecAcmeSolversSelector] {
	return pulumix.Output[*ClusterIssuerSpecAcmeSolversSelector]{
		OutputState: o.OutputState,
	}
}

func (o ClusterIssuerSpecAcmeSolversSelectorPtrOutput) Elem() ClusterIssuerSpecAcmeSolversSelectorOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversSelector) ClusterIssuerSpecAcmeSolversSelector {
		if v != nil {
			return *v
		}
		var ret ClusterIssuerSpecAcmeSolversSelector
		return ret
	}).(ClusterIssuerSpecAcmeSolversSelectorOutput)
}

// List of DNSNames that this solver will be used to solve. If specified and a match is found, a dnsNames selector will take precedence over a dnsZones selector. If multiple solvers match with the same dnsNames value, the solver with the most matching labels in matchLabels will be selected. If neither has more matches, the solver defined earlier in the list will be selected.
func (o ClusterIssuerSpecAcmeSolversSelectorPtrOutput) DnsNames() pulumi.StringArrayOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversSelector) []string {
		if v == nil {
			return nil
		}
		return v.DnsNames
	}).(pulumi.StringArrayOutput)
}

// List of DNSZones that this solver will be used to solve. The most specific DNS zone match specified here will take precedence over other DNS zone matches, so a solver specifying sys.example.com will be selected over one specifying example.com for the domain www.sys.example.com. If multiple solvers match with the same dnsZones value, the solver with the most matching labels in matchLabels will be selected. If neither has more matches, the solver defined earlier in the list will be selected.
func (o ClusterIssuerSpecAcmeSolversSelectorPtrOutput) DnsZones() pulumi.StringArrayOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversSelector) []string {
		if v == nil {
			return nil
		}
		return v.DnsZones
	}).(pulumi.StringArrayOutput)
}

// A label selector that is used to refine the set of certificate's that this challenge solver will apply to.
func (o ClusterIssuerSpecAcmeSolversSelectorPtrOutput) MatchLabels() pulumi.StringMapOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecAcmeSolversSelector) map[string]string {
		if v == nil {
			return nil
		}
		return v.MatchLabels
	}).(pulumi.StringMapOutput)
}

// A label selector that is used to refine the set of certificate's that this challenge solver will apply to.
type ClusterIssuerSpecAcmeSolversSelectorMatchLabels struct {
}

// CA configures this issuer to sign certificates using a signing CA keypair stored in a Secret resource. This is used to build internal PKIs that are managed by cert-manager.
type ClusterIssuerSpecCa struct {
	// The CRL distribution points is an X.509 v3 certificate extension which identifies the location of the CRL from which the revocation of this certificate can be checked. If not set, certificates will be issued without distribution points set.
	CrlDistributionPoints []string `pulumi:"crlDistributionPoints"`
	// The OCSP server list is an X.509 v3 extension that defines a list of URLs of OCSP responders. The OCSP responders can be queried for the revocation status of an issued certificate. If not set, the certificate will be issued with no OCSP servers set. For example, an OCSP server URL could be "http://ocsp.int-x3.letsencrypt.org".
	OcspServers []string `pulumi:"ocspServers"`
	// SecretName is the name of the secret used to sign Certificates issued by this Issuer.
	SecretName string `pulumi:"secretName"`
}

// ClusterIssuerSpecCaInput is an input type that accepts ClusterIssuerSpecCaArgs and ClusterIssuerSpecCaOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecCaInput` via:
//
//	ClusterIssuerSpecCaArgs{...}
type ClusterIssuerSpecCaInput interface {
	pulumi.Input

	ToClusterIssuerSpecCaOutput() ClusterIssuerSpecCaOutput
	ToClusterIssuerSpecCaOutputWithContext(context.Context) ClusterIssuerSpecCaOutput
}

// CA configures this issuer to sign certificates using a signing CA keypair stored in a Secret resource. This is used to build internal PKIs that are managed by cert-manager.
type ClusterIssuerSpecCaArgs struct {
	// The CRL distribution points is an X.509 v3 certificate extension which identifies the location of the CRL from which the revocation of this certificate can be checked. If not set, certificates will be issued without distribution points set.
	CrlDistributionPoints pulumi.StringArrayInput `pulumi:"crlDistributionPoints"`
	// The OCSP server list is an X.509 v3 extension that defines a list of URLs of OCSP responders. The OCSP responders can be queried for the revocation status of an issued certificate. If not set, the certificate will be issued with no OCSP servers set. For example, an OCSP server URL could be "http://ocsp.int-x3.letsencrypt.org".
	OcspServers pulumi.StringArrayInput `pulumi:"ocspServers"`
	// SecretName is the name of the secret used to sign Certificates issued by this Issuer.
	SecretName pulumi.StringInput `pulumi:"secretName"`
}

func (ClusterIssuerSpecCaArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecCa)(nil)).Elem()
}

func (i ClusterIssuerSpecCaArgs) ToClusterIssuerSpecCaOutput() ClusterIssuerSpecCaOutput {
	return i.ToClusterIssuerSpecCaOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecCaArgs) ToClusterIssuerSpecCaOutputWithContext(ctx context.Context) ClusterIssuerSpecCaOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecCaOutput)
}

func (i ClusterIssuerSpecCaArgs) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecCa] {
	return pulumix.Output[ClusterIssuerSpecCa]{
		OutputState: i.ToClusterIssuerSpecCaOutputWithContext(ctx).OutputState,
	}
}

func (i ClusterIssuerSpecCaArgs) ToClusterIssuerSpecCaPtrOutput() ClusterIssuerSpecCaPtrOutput {
	return i.ToClusterIssuerSpecCaPtrOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecCaArgs) ToClusterIssuerSpecCaPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecCaPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecCaOutput).ToClusterIssuerSpecCaPtrOutputWithContext(ctx)
}

// ClusterIssuerSpecCaPtrInput is an input type that accepts ClusterIssuerSpecCaArgs, ClusterIssuerSpecCaPtr and ClusterIssuerSpecCaPtrOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecCaPtrInput` via:
//
//	        ClusterIssuerSpecCaArgs{...}
//
//	or:
//
//	        nil
type ClusterIssuerSpecCaPtrInput interface {
	pulumi.Input

	ToClusterIssuerSpecCaPtrOutput() ClusterIssuerSpecCaPtrOutput
	ToClusterIssuerSpecCaPtrOutputWithContext(context.Context) ClusterIssuerSpecCaPtrOutput
}

type clusterIssuerSpecCaPtrType ClusterIssuerSpecCaArgs

func ClusterIssuerSpecCaPtr(v *ClusterIssuerSpecCaArgs) ClusterIssuerSpecCaPtrInput {
	return (*clusterIssuerSpecCaPtrType)(v)
}

func (*clusterIssuerSpecCaPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecCa)(nil)).Elem()
}

func (i *clusterIssuerSpecCaPtrType) ToClusterIssuerSpecCaPtrOutput() ClusterIssuerSpecCaPtrOutput {
	return i.ToClusterIssuerSpecCaPtrOutputWithContext(context.Background())
}

func (i *clusterIssuerSpecCaPtrType) ToClusterIssuerSpecCaPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecCaPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecCaPtrOutput)
}

func (i *clusterIssuerSpecCaPtrType) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecCa] {
	return pulumix.Output[*ClusterIssuerSpecCa]{
		OutputState: i.ToClusterIssuerSpecCaPtrOutputWithContext(ctx).OutputState,
	}
}

// CA configures this issuer to sign certificates using a signing CA keypair stored in a Secret resource. This is used to build internal PKIs that are managed by cert-manager.
type ClusterIssuerSpecCaOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecCaOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecCa)(nil)).Elem()
}

func (o ClusterIssuerSpecCaOutput) ToClusterIssuerSpecCaOutput() ClusterIssuerSpecCaOutput {
	return o
}

func (o ClusterIssuerSpecCaOutput) ToClusterIssuerSpecCaOutputWithContext(ctx context.Context) ClusterIssuerSpecCaOutput {
	return o
}

func (o ClusterIssuerSpecCaOutput) ToClusterIssuerSpecCaPtrOutput() ClusterIssuerSpecCaPtrOutput {
	return o.ToClusterIssuerSpecCaPtrOutputWithContext(context.Background())
}

func (o ClusterIssuerSpecCaOutput) ToClusterIssuerSpecCaPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecCaPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v ClusterIssuerSpecCa) *ClusterIssuerSpecCa {
		return &v
	}).(ClusterIssuerSpecCaPtrOutput)
}

func (o ClusterIssuerSpecCaOutput) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecCa] {
	return pulumix.Output[ClusterIssuerSpecCa]{
		OutputState: o.OutputState,
	}
}

// The CRL distribution points is an X.509 v3 certificate extension which identifies the location of the CRL from which the revocation of this certificate can be checked. If not set, certificates will be issued without distribution points set.
func (o ClusterIssuerSpecCaOutput) CrlDistributionPoints() pulumi.StringArrayOutput {
	return o.ApplyT(func(v ClusterIssuerSpecCa) []string { return v.CrlDistributionPoints }).(pulumi.StringArrayOutput)
}

// The OCSP server list is an X.509 v3 extension that defines a list of URLs of OCSP responders. The OCSP responders can be queried for the revocation status of an issued certificate. If not set, the certificate will be issued with no OCSP servers set. For example, an OCSP server URL could be "http://ocsp.int-x3.letsencrypt.org".
func (o ClusterIssuerSpecCaOutput) OcspServers() pulumi.StringArrayOutput {
	return o.ApplyT(func(v ClusterIssuerSpecCa) []string { return v.OcspServers }).(pulumi.StringArrayOutput)
}

// SecretName is the name of the secret used to sign Certificates issued by this Issuer.
func (o ClusterIssuerSpecCaOutput) SecretName() pulumi.StringOutput {
	return o.ApplyT(func(v ClusterIssuerSpecCa) string { return v.SecretName }).(pulumi.StringOutput)
}

type ClusterIssuerSpecCaPtrOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecCaPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecCa)(nil)).Elem()
}

func (o ClusterIssuerSpecCaPtrOutput) ToClusterIssuerSpecCaPtrOutput() ClusterIssuerSpecCaPtrOutput {
	return o
}

func (o ClusterIssuerSpecCaPtrOutput) ToClusterIssuerSpecCaPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecCaPtrOutput {
	return o
}

func (o ClusterIssuerSpecCaPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecCa] {
	return pulumix.Output[*ClusterIssuerSpecCa]{
		OutputState: o.OutputState,
	}
}

func (o ClusterIssuerSpecCaPtrOutput) Elem() ClusterIssuerSpecCaOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecCa) ClusterIssuerSpecCa {
		if v != nil {
			return *v
		}
		var ret ClusterIssuerSpecCa
		return ret
	}).(ClusterIssuerSpecCaOutput)
}

// The CRL distribution points is an X.509 v3 certificate extension which identifies the location of the CRL from which the revocation of this certificate can be checked. If not set, certificates will be issued without distribution points set.
func (o ClusterIssuerSpecCaPtrOutput) CrlDistributionPoints() pulumi.StringArrayOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecCa) []string {
		if v == nil {
			return nil
		}
		return v.CrlDistributionPoints
	}).(pulumi.StringArrayOutput)
}

// The OCSP server list is an X.509 v3 extension that defines a list of URLs of OCSP responders. The OCSP responders can be queried for the revocation status of an issued certificate. If not set, the certificate will be issued with no OCSP servers set. For example, an OCSP server URL could be "http://ocsp.int-x3.letsencrypt.org".
func (o ClusterIssuerSpecCaPtrOutput) OcspServers() pulumi.StringArrayOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecCa) []string {
		if v == nil {
			return nil
		}
		return v.OcspServers
	}).(pulumi.StringArrayOutput)
}

// SecretName is the name of the secret used to sign Certificates issued by this Issuer.
func (o ClusterIssuerSpecCaPtrOutput) SecretName() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecCa) *string {
		if v == nil {
			return nil
		}
		return &v.SecretName
	}).(pulumi.StringPtrOutput)
}

// SelfSigned configures this issuer to 'self sign' certificates using the private key used to create the CertificateRequest object.
type ClusterIssuerSpecSelfSigned struct {
	// The CRL distribution points is an X.509 v3 certificate extension which identifies the location of the CRL from which the revocation of this certificate can be checked. If not set certificate will be issued without CDP. Values are strings.
	CrlDistributionPoints []string `pulumi:"crlDistributionPoints"`
}

// ClusterIssuerSpecSelfSignedInput is an input type that accepts ClusterIssuerSpecSelfSignedArgs and ClusterIssuerSpecSelfSignedOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecSelfSignedInput` via:
//
//	ClusterIssuerSpecSelfSignedArgs{...}
type ClusterIssuerSpecSelfSignedInput interface {
	pulumi.Input

	ToClusterIssuerSpecSelfSignedOutput() ClusterIssuerSpecSelfSignedOutput
	ToClusterIssuerSpecSelfSignedOutputWithContext(context.Context) ClusterIssuerSpecSelfSignedOutput
}

// SelfSigned configures this issuer to 'self sign' certificates using the private key used to create the CertificateRequest object.
type ClusterIssuerSpecSelfSignedArgs struct {
	// The CRL distribution points is an X.509 v3 certificate extension which identifies the location of the CRL from which the revocation of this certificate can be checked. If not set certificate will be issued without CDP. Values are strings.
	CrlDistributionPoints pulumi.StringArrayInput `pulumi:"crlDistributionPoints"`
}

func (ClusterIssuerSpecSelfSignedArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecSelfSigned)(nil)).Elem()
}

func (i ClusterIssuerSpecSelfSignedArgs) ToClusterIssuerSpecSelfSignedOutput() ClusterIssuerSpecSelfSignedOutput {
	return i.ToClusterIssuerSpecSelfSignedOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecSelfSignedArgs) ToClusterIssuerSpecSelfSignedOutputWithContext(ctx context.Context) ClusterIssuerSpecSelfSignedOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecSelfSignedOutput)
}

func (i ClusterIssuerSpecSelfSignedArgs) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecSelfSigned] {
	return pulumix.Output[ClusterIssuerSpecSelfSigned]{
		OutputState: i.ToClusterIssuerSpecSelfSignedOutputWithContext(ctx).OutputState,
	}
}

func (i ClusterIssuerSpecSelfSignedArgs) ToClusterIssuerSpecSelfSignedPtrOutput() ClusterIssuerSpecSelfSignedPtrOutput {
	return i.ToClusterIssuerSpecSelfSignedPtrOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecSelfSignedArgs) ToClusterIssuerSpecSelfSignedPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecSelfSignedPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecSelfSignedOutput).ToClusterIssuerSpecSelfSignedPtrOutputWithContext(ctx)
}

// ClusterIssuerSpecSelfSignedPtrInput is an input type that accepts ClusterIssuerSpecSelfSignedArgs, ClusterIssuerSpecSelfSignedPtr and ClusterIssuerSpecSelfSignedPtrOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecSelfSignedPtrInput` via:
//
//	        ClusterIssuerSpecSelfSignedArgs{...}
//
//	or:
//
//	        nil
type ClusterIssuerSpecSelfSignedPtrInput interface {
	pulumi.Input

	ToClusterIssuerSpecSelfSignedPtrOutput() ClusterIssuerSpecSelfSignedPtrOutput
	ToClusterIssuerSpecSelfSignedPtrOutputWithContext(context.Context) ClusterIssuerSpecSelfSignedPtrOutput
}

type clusterIssuerSpecSelfSignedPtrType ClusterIssuerSpecSelfSignedArgs

func ClusterIssuerSpecSelfSignedPtr(v *ClusterIssuerSpecSelfSignedArgs) ClusterIssuerSpecSelfSignedPtrInput {
	return (*clusterIssuerSpecSelfSignedPtrType)(v)
}

func (*clusterIssuerSpecSelfSignedPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecSelfSigned)(nil)).Elem()
}

func (i *clusterIssuerSpecSelfSignedPtrType) ToClusterIssuerSpecSelfSignedPtrOutput() ClusterIssuerSpecSelfSignedPtrOutput {
	return i.ToClusterIssuerSpecSelfSignedPtrOutputWithContext(context.Background())
}

func (i *clusterIssuerSpecSelfSignedPtrType) ToClusterIssuerSpecSelfSignedPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecSelfSignedPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecSelfSignedPtrOutput)
}

func (i *clusterIssuerSpecSelfSignedPtrType) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecSelfSigned] {
	return pulumix.Output[*ClusterIssuerSpecSelfSigned]{
		OutputState: i.ToClusterIssuerSpecSelfSignedPtrOutputWithContext(ctx).OutputState,
	}
}

// SelfSigned configures this issuer to 'self sign' certificates using the private key used to create the CertificateRequest object.
type ClusterIssuerSpecSelfSignedOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecSelfSignedOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecSelfSigned)(nil)).Elem()
}

func (o ClusterIssuerSpecSelfSignedOutput) ToClusterIssuerSpecSelfSignedOutput() ClusterIssuerSpecSelfSignedOutput {
	return o
}

func (o ClusterIssuerSpecSelfSignedOutput) ToClusterIssuerSpecSelfSignedOutputWithContext(ctx context.Context) ClusterIssuerSpecSelfSignedOutput {
	return o
}

func (o ClusterIssuerSpecSelfSignedOutput) ToClusterIssuerSpecSelfSignedPtrOutput() ClusterIssuerSpecSelfSignedPtrOutput {
	return o.ToClusterIssuerSpecSelfSignedPtrOutputWithContext(context.Background())
}

func (o ClusterIssuerSpecSelfSignedOutput) ToClusterIssuerSpecSelfSignedPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecSelfSignedPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v ClusterIssuerSpecSelfSigned) *ClusterIssuerSpecSelfSigned {
		return &v
	}).(ClusterIssuerSpecSelfSignedPtrOutput)
}

func (o ClusterIssuerSpecSelfSignedOutput) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecSelfSigned] {
	return pulumix.Output[ClusterIssuerSpecSelfSigned]{
		OutputState: o.OutputState,
	}
}

// The CRL distribution points is an X.509 v3 certificate extension which identifies the location of the CRL from which the revocation of this certificate can be checked. If not set certificate will be issued without CDP. Values are strings.
func (o ClusterIssuerSpecSelfSignedOutput) CrlDistributionPoints() pulumi.StringArrayOutput {
	return o.ApplyT(func(v ClusterIssuerSpecSelfSigned) []string { return v.CrlDistributionPoints }).(pulumi.StringArrayOutput)
}

type ClusterIssuerSpecSelfSignedPtrOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecSelfSignedPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecSelfSigned)(nil)).Elem()
}

func (o ClusterIssuerSpecSelfSignedPtrOutput) ToClusterIssuerSpecSelfSignedPtrOutput() ClusterIssuerSpecSelfSignedPtrOutput {
	return o
}

func (o ClusterIssuerSpecSelfSignedPtrOutput) ToClusterIssuerSpecSelfSignedPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecSelfSignedPtrOutput {
	return o
}

func (o ClusterIssuerSpecSelfSignedPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecSelfSigned] {
	return pulumix.Output[*ClusterIssuerSpecSelfSigned]{
		OutputState: o.OutputState,
	}
}

func (o ClusterIssuerSpecSelfSignedPtrOutput) Elem() ClusterIssuerSpecSelfSignedOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecSelfSigned) ClusterIssuerSpecSelfSigned {
		if v != nil {
			return *v
		}
		var ret ClusterIssuerSpecSelfSigned
		return ret
	}).(ClusterIssuerSpecSelfSignedOutput)
}

// The CRL distribution points is an X.509 v3 certificate extension which identifies the location of the CRL from which the revocation of this certificate can be checked. If not set certificate will be issued without CDP. Values are strings.
func (o ClusterIssuerSpecSelfSignedPtrOutput) CrlDistributionPoints() pulumi.StringArrayOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecSelfSigned) []string {
		if v == nil {
			return nil
		}
		return v.CrlDistributionPoints
	}).(pulumi.StringArrayOutput)
}

// Vault configures this issuer to sign certificates using a HashiCorp Vault PKI backend.
type ClusterIssuerSpecVault struct {
	// Auth configures how cert-manager authenticates with the Vault server.
	Auth ClusterIssuerSpecVaultAuth `pulumi:"auth"`
	// PEM-encoded CA bundle (base64-encoded) used to validate Vault server certificate. Only used if the Server URL is using HTTPS protocol. This parameter is ignored for plain HTTP protocol connection. If not set the system root certificates are used to validate the TLS connection.
	CaBundle *string `pulumi:"caBundle"`
	// Name of the vault namespace. Namespaces is a set of features within Vault Enterprise that allows Vault environments to support Secure Multi-tenancy. e.g: "ns1" More about namespaces can be found here https://www.vaultproject.io/docs/enterprise/namespaces
	Namespace *string `pulumi:"namespace"`
	// Path is the mount path of the Vault PKI backend's `sign` endpoint, e.g: "my_pki_mount/sign/my-role-name".
	Path string `pulumi:"path"`
	// Server is the connection address for the Vault server, e.g: "https://vault.example.com:8200".
	Server string `pulumi:"server"`
}

// ClusterIssuerSpecVaultInput is an input type that accepts ClusterIssuerSpecVaultArgs and ClusterIssuerSpecVaultOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecVaultInput` via:
//
//	ClusterIssuerSpecVaultArgs{...}
type ClusterIssuerSpecVaultInput interface {
	pulumi.Input

	ToClusterIssuerSpecVaultOutput() ClusterIssuerSpecVaultOutput
	ToClusterIssuerSpecVaultOutputWithContext(context.Context) ClusterIssuerSpecVaultOutput
}

// Vault configures this issuer to sign certificates using a HashiCorp Vault PKI backend.
type ClusterIssuerSpecVaultArgs struct {
	// Auth configures how cert-manager authenticates with the Vault server.
	Auth ClusterIssuerSpecVaultAuthInput `pulumi:"auth"`
	// PEM-encoded CA bundle (base64-encoded) used to validate Vault server certificate. Only used if the Server URL is using HTTPS protocol. This parameter is ignored for plain HTTP protocol connection. If not set the system root certificates are used to validate the TLS connection.
	CaBundle pulumi.StringPtrInput `pulumi:"caBundle"`
	// Name of the vault namespace. Namespaces is a set of features within Vault Enterprise that allows Vault environments to support Secure Multi-tenancy. e.g: "ns1" More about namespaces can be found here https://www.vaultproject.io/docs/enterprise/namespaces
	Namespace pulumi.StringPtrInput `pulumi:"namespace"`
	// Path is the mount path of the Vault PKI backend's `sign` endpoint, e.g: "my_pki_mount/sign/my-role-name".
	Path pulumi.StringInput `pulumi:"path"`
	// Server is the connection address for the Vault server, e.g: "https://vault.example.com:8200".
	Server pulumi.StringInput `pulumi:"server"`
}

func (ClusterIssuerSpecVaultArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecVault)(nil)).Elem()
}

func (i ClusterIssuerSpecVaultArgs) ToClusterIssuerSpecVaultOutput() ClusterIssuerSpecVaultOutput {
	return i.ToClusterIssuerSpecVaultOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecVaultArgs) ToClusterIssuerSpecVaultOutputWithContext(ctx context.Context) ClusterIssuerSpecVaultOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecVaultOutput)
}

func (i ClusterIssuerSpecVaultArgs) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecVault] {
	return pulumix.Output[ClusterIssuerSpecVault]{
		OutputState: i.ToClusterIssuerSpecVaultOutputWithContext(ctx).OutputState,
	}
}

func (i ClusterIssuerSpecVaultArgs) ToClusterIssuerSpecVaultPtrOutput() ClusterIssuerSpecVaultPtrOutput {
	return i.ToClusterIssuerSpecVaultPtrOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecVaultArgs) ToClusterIssuerSpecVaultPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecVaultPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecVaultOutput).ToClusterIssuerSpecVaultPtrOutputWithContext(ctx)
}

// ClusterIssuerSpecVaultPtrInput is an input type that accepts ClusterIssuerSpecVaultArgs, ClusterIssuerSpecVaultPtr and ClusterIssuerSpecVaultPtrOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecVaultPtrInput` via:
//
//	        ClusterIssuerSpecVaultArgs{...}
//
//	or:
//
//	        nil
type ClusterIssuerSpecVaultPtrInput interface {
	pulumi.Input

	ToClusterIssuerSpecVaultPtrOutput() ClusterIssuerSpecVaultPtrOutput
	ToClusterIssuerSpecVaultPtrOutputWithContext(context.Context) ClusterIssuerSpecVaultPtrOutput
}

type clusterIssuerSpecVaultPtrType ClusterIssuerSpecVaultArgs

func ClusterIssuerSpecVaultPtr(v *ClusterIssuerSpecVaultArgs) ClusterIssuerSpecVaultPtrInput {
	return (*clusterIssuerSpecVaultPtrType)(v)
}

func (*clusterIssuerSpecVaultPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecVault)(nil)).Elem()
}

func (i *clusterIssuerSpecVaultPtrType) ToClusterIssuerSpecVaultPtrOutput() ClusterIssuerSpecVaultPtrOutput {
	return i.ToClusterIssuerSpecVaultPtrOutputWithContext(context.Background())
}

func (i *clusterIssuerSpecVaultPtrType) ToClusterIssuerSpecVaultPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecVaultPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecVaultPtrOutput)
}

func (i *clusterIssuerSpecVaultPtrType) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecVault] {
	return pulumix.Output[*ClusterIssuerSpecVault]{
		OutputState: i.ToClusterIssuerSpecVaultPtrOutputWithContext(ctx).OutputState,
	}
}

// Vault configures this issuer to sign certificates using a HashiCorp Vault PKI backend.
type ClusterIssuerSpecVaultOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecVaultOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecVault)(nil)).Elem()
}

func (o ClusterIssuerSpecVaultOutput) ToClusterIssuerSpecVaultOutput() ClusterIssuerSpecVaultOutput {
	return o
}

func (o ClusterIssuerSpecVaultOutput) ToClusterIssuerSpecVaultOutputWithContext(ctx context.Context) ClusterIssuerSpecVaultOutput {
	return o
}

func (o ClusterIssuerSpecVaultOutput) ToClusterIssuerSpecVaultPtrOutput() ClusterIssuerSpecVaultPtrOutput {
	return o.ToClusterIssuerSpecVaultPtrOutputWithContext(context.Background())
}

func (o ClusterIssuerSpecVaultOutput) ToClusterIssuerSpecVaultPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecVaultPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v ClusterIssuerSpecVault) *ClusterIssuerSpecVault {
		return &v
	}).(ClusterIssuerSpecVaultPtrOutput)
}

func (o ClusterIssuerSpecVaultOutput) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecVault] {
	return pulumix.Output[ClusterIssuerSpecVault]{
		OutputState: o.OutputState,
	}
}

// Auth configures how cert-manager authenticates with the Vault server.
func (o ClusterIssuerSpecVaultOutput) Auth() ClusterIssuerSpecVaultAuthOutput {
	return o.ApplyT(func(v ClusterIssuerSpecVault) ClusterIssuerSpecVaultAuth { return v.Auth }).(ClusterIssuerSpecVaultAuthOutput)
}

// PEM-encoded CA bundle (base64-encoded) used to validate Vault server certificate. Only used if the Server URL is using HTTPS protocol. This parameter is ignored for plain HTTP protocol connection. If not set the system root certificates are used to validate the TLS connection.
func (o ClusterIssuerSpecVaultOutput) CaBundle() pulumi.StringPtrOutput {
	return o.ApplyT(func(v ClusterIssuerSpecVault) *string { return v.CaBundle }).(pulumi.StringPtrOutput)
}

// Name of the vault namespace. Namespaces is a set of features within Vault Enterprise that allows Vault environments to support Secure Multi-tenancy. e.g: "ns1" More about namespaces can be found here https://www.vaultproject.io/docs/enterprise/namespaces
func (o ClusterIssuerSpecVaultOutput) Namespace() pulumi.StringPtrOutput {
	return o.ApplyT(func(v ClusterIssuerSpecVault) *string { return v.Namespace }).(pulumi.StringPtrOutput)
}

// Path is the mount path of the Vault PKI backend's `sign` endpoint, e.g: "my_pki_mount/sign/my-role-name".
func (o ClusterIssuerSpecVaultOutput) Path() pulumi.StringOutput {
	return o.ApplyT(func(v ClusterIssuerSpecVault) string { return v.Path }).(pulumi.StringOutput)
}

// Server is the connection address for the Vault server, e.g: "https://vault.example.com:8200".
func (o ClusterIssuerSpecVaultOutput) Server() pulumi.StringOutput {
	return o.ApplyT(func(v ClusterIssuerSpecVault) string { return v.Server }).(pulumi.StringOutput)
}

type ClusterIssuerSpecVaultPtrOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecVaultPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecVault)(nil)).Elem()
}

func (o ClusterIssuerSpecVaultPtrOutput) ToClusterIssuerSpecVaultPtrOutput() ClusterIssuerSpecVaultPtrOutput {
	return o
}

func (o ClusterIssuerSpecVaultPtrOutput) ToClusterIssuerSpecVaultPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecVaultPtrOutput {
	return o
}

func (o ClusterIssuerSpecVaultPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecVault] {
	return pulumix.Output[*ClusterIssuerSpecVault]{
		OutputState: o.OutputState,
	}
}

func (o ClusterIssuerSpecVaultPtrOutput) Elem() ClusterIssuerSpecVaultOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecVault) ClusterIssuerSpecVault {
		if v != nil {
			return *v
		}
		var ret ClusterIssuerSpecVault
		return ret
	}).(ClusterIssuerSpecVaultOutput)
}

// Auth configures how cert-manager authenticates with the Vault server.
func (o ClusterIssuerSpecVaultPtrOutput) Auth() ClusterIssuerSpecVaultAuthPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecVault) *ClusterIssuerSpecVaultAuth {
		if v == nil {
			return nil
		}
		return &v.Auth
	}).(ClusterIssuerSpecVaultAuthPtrOutput)
}

// PEM-encoded CA bundle (base64-encoded) used to validate Vault server certificate. Only used if the Server URL is using HTTPS protocol. This parameter is ignored for plain HTTP protocol connection. If not set the system root certificates are used to validate the TLS connection.
func (o ClusterIssuerSpecVaultPtrOutput) CaBundle() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecVault) *string {
		if v == nil {
			return nil
		}
		return v.CaBundle
	}).(pulumi.StringPtrOutput)
}

// Name of the vault namespace. Namespaces is a set of features within Vault Enterprise that allows Vault environments to support Secure Multi-tenancy. e.g: "ns1" More about namespaces can be found here https://www.vaultproject.io/docs/enterprise/namespaces
func (o ClusterIssuerSpecVaultPtrOutput) Namespace() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecVault) *string {
		if v == nil {
			return nil
		}
		return v.Namespace
	}).(pulumi.StringPtrOutput)
}

// Path is the mount path of the Vault PKI backend's `sign` endpoint, e.g: "my_pki_mount/sign/my-role-name".
func (o ClusterIssuerSpecVaultPtrOutput) Path() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecVault) *string {
		if v == nil {
			return nil
		}
		return &v.Path
	}).(pulumi.StringPtrOutput)
}

// Server is the connection address for the Vault server, e.g: "https://vault.example.com:8200".
func (o ClusterIssuerSpecVaultPtrOutput) Server() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecVault) *string {
		if v == nil {
			return nil
		}
		return &v.Server
	}).(pulumi.StringPtrOutput)
}

// Auth configures how cert-manager authenticates with the Vault server.
type ClusterIssuerSpecVaultAuth struct {
	// AppRole authenticates with Vault using the App Role auth mechanism, with the role and secret stored in a Kubernetes Secret resource.
	AppRole *ClusterIssuerSpecVaultAuthAppRole `pulumi:"appRole"`
	// Kubernetes authenticates with Vault by passing the ServiceAccount token stored in the named Secret resource to the Vault server.
	Kubernetes *ClusterIssuerSpecVaultAuthKubernetes `pulumi:"kubernetes"`
	// TokenSecretRef authenticates with Vault by presenting a token.
	TokenSecretRef *ClusterIssuerSpecVaultAuthTokenSecretRef `pulumi:"tokenSecretRef"`
}

// ClusterIssuerSpecVaultAuthInput is an input type that accepts ClusterIssuerSpecVaultAuthArgs and ClusterIssuerSpecVaultAuthOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecVaultAuthInput` via:
//
//	ClusterIssuerSpecVaultAuthArgs{...}
type ClusterIssuerSpecVaultAuthInput interface {
	pulumi.Input

	ToClusterIssuerSpecVaultAuthOutput() ClusterIssuerSpecVaultAuthOutput
	ToClusterIssuerSpecVaultAuthOutputWithContext(context.Context) ClusterIssuerSpecVaultAuthOutput
}

// Auth configures how cert-manager authenticates with the Vault server.
type ClusterIssuerSpecVaultAuthArgs struct {
	// AppRole authenticates with Vault using the App Role auth mechanism, with the role and secret stored in a Kubernetes Secret resource.
	AppRole ClusterIssuerSpecVaultAuthAppRolePtrInput `pulumi:"appRole"`
	// Kubernetes authenticates with Vault by passing the ServiceAccount token stored in the named Secret resource to the Vault server.
	Kubernetes ClusterIssuerSpecVaultAuthKubernetesPtrInput `pulumi:"kubernetes"`
	// TokenSecretRef authenticates with Vault by presenting a token.
	TokenSecretRef ClusterIssuerSpecVaultAuthTokenSecretRefPtrInput `pulumi:"tokenSecretRef"`
}

func (ClusterIssuerSpecVaultAuthArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecVaultAuth)(nil)).Elem()
}

func (i ClusterIssuerSpecVaultAuthArgs) ToClusterIssuerSpecVaultAuthOutput() ClusterIssuerSpecVaultAuthOutput {
	return i.ToClusterIssuerSpecVaultAuthOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecVaultAuthArgs) ToClusterIssuerSpecVaultAuthOutputWithContext(ctx context.Context) ClusterIssuerSpecVaultAuthOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecVaultAuthOutput)
}

func (i ClusterIssuerSpecVaultAuthArgs) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecVaultAuth] {
	return pulumix.Output[ClusterIssuerSpecVaultAuth]{
		OutputState: i.ToClusterIssuerSpecVaultAuthOutputWithContext(ctx).OutputState,
	}
}

func (i ClusterIssuerSpecVaultAuthArgs) ToClusterIssuerSpecVaultAuthPtrOutput() ClusterIssuerSpecVaultAuthPtrOutput {
	return i.ToClusterIssuerSpecVaultAuthPtrOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecVaultAuthArgs) ToClusterIssuerSpecVaultAuthPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecVaultAuthPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecVaultAuthOutput).ToClusterIssuerSpecVaultAuthPtrOutputWithContext(ctx)
}

// ClusterIssuerSpecVaultAuthPtrInput is an input type that accepts ClusterIssuerSpecVaultAuthArgs, ClusterIssuerSpecVaultAuthPtr and ClusterIssuerSpecVaultAuthPtrOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecVaultAuthPtrInput` via:
//
//	        ClusterIssuerSpecVaultAuthArgs{...}
//
//	or:
//
//	        nil
type ClusterIssuerSpecVaultAuthPtrInput interface {
	pulumi.Input

	ToClusterIssuerSpecVaultAuthPtrOutput() ClusterIssuerSpecVaultAuthPtrOutput
	ToClusterIssuerSpecVaultAuthPtrOutputWithContext(context.Context) ClusterIssuerSpecVaultAuthPtrOutput
}

type clusterIssuerSpecVaultAuthPtrType ClusterIssuerSpecVaultAuthArgs

func ClusterIssuerSpecVaultAuthPtr(v *ClusterIssuerSpecVaultAuthArgs) ClusterIssuerSpecVaultAuthPtrInput {
	return (*clusterIssuerSpecVaultAuthPtrType)(v)
}

func (*clusterIssuerSpecVaultAuthPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecVaultAuth)(nil)).Elem()
}

func (i *clusterIssuerSpecVaultAuthPtrType) ToClusterIssuerSpecVaultAuthPtrOutput() ClusterIssuerSpecVaultAuthPtrOutput {
	return i.ToClusterIssuerSpecVaultAuthPtrOutputWithContext(context.Background())
}

func (i *clusterIssuerSpecVaultAuthPtrType) ToClusterIssuerSpecVaultAuthPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecVaultAuthPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecVaultAuthPtrOutput)
}

func (i *clusterIssuerSpecVaultAuthPtrType) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecVaultAuth] {
	return pulumix.Output[*ClusterIssuerSpecVaultAuth]{
		OutputState: i.ToClusterIssuerSpecVaultAuthPtrOutputWithContext(ctx).OutputState,
	}
}

// Auth configures how cert-manager authenticates with the Vault server.
type ClusterIssuerSpecVaultAuthOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecVaultAuthOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecVaultAuth)(nil)).Elem()
}

func (o ClusterIssuerSpecVaultAuthOutput) ToClusterIssuerSpecVaultAuthOutput() ClusterIssuerSpecVaultAuthOutput {
	return o
}

func (o ClusterIssuerSpecVaultAuthOutput) ToClusterIssuerSpecVaultAuthOutputWithContext(ctx context.Context) ClusterIssuerSpecVaultAuthOutput {
	return o
}

func (o ClusterIssuerSpecVaultAuthOutput) ToClusterIssuerSpecVaultAuthPtrOutput() ClusterIssuerSpecVaultAuthPtrOutput {
	return o.ToClusterIssuerSpecVaultAuthPtrOutputWithContext(context.Background())
}

func (o ClusterIssuerSpecVaultAuthOutput) ToClusterIssuerSpecVaultAuthPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecVaultAuthPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v ClusterIssuerSpecVaultAuth) *ClusterIssuerSpecVaultAuth {
		return &v
	}).(ClusterIssuerSpecVaultAuthPtrOutput)
}

func (o ClusterIssuerSpecVaultAuthOutput) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecVaultAuth] {
	return pulumix.Output[ClusterIssuerSpecVaultAuth]{
		OutputState: o.OutputState,
	}
}

// AppRole authenticates with Vault using the App Role auth mechanism, with the role and secret stored in a Kubernetes Secret resource.
func (o ClusterIssuerSpecVaultAuthOutput) AppRole() ClusterIssuerSpecVaultAuthAppRolePtrOutput {
	return o.ApplyT(func(v ClusterIssuerSpecVaultAuth) *ClusterIssuerSpecVaultAuthAppRole { return v.AppRole }).(ClusterIssuerSpecVaultAuthAppRolePtrOutput)
}

// Kubernetes authenticates with Vault by passing the ServiceAccount token stored in the named Secret resource to the Vault server.
func (o ClusterIssuerSpecVaultAuthOutput) Kubernetes() ClusterIssuerSpecVaultAuthKubernetesPtrOutput {
	return o.ApplyT(func(v ClusterIssuerSpecVaultAuth) *ClusterIssuerSpecVaultAuthKubernetes { return v.Kubernetes }).(ClusterIssuerSpecVaultAuthKubernetesPtrOutput)
}

// TokenSecretRef authenticates with Vault by presenting a token.
func (o ClusterIssuerSpecVaultAuthOutput) TokenSecretRef() ClusterIssuerSpecVaultAuthTokenSecretRefPtrOutput {
	return o.ApplyT(func(v ClusterIssuerSpecVaultAuth) *ClusterIssuerSpecVaultAuthTokenSecretRef { return v.TokenSecretRef }).(ClusterIssuerSpecVaultAuthTokenSecretRefPtrOutput)
}

type ClusterIssuerSpecVaultAuthPtrOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecVaultAuthPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecVaultAuth)(nil)).Elem()
}

func (o ClusterIssuerSpecVaultAuthPtrOutput) ToClusterIssuerSpecVaultAuthPtrOutput() ClusterIssuerSpecVaultAuthPtrOutput {
	return o
}

func (o ClusterIssuerSpecVaultAuthPtrOutput) ToClusterIssuerSpecVaultAuthPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecVaultAuthPtrOutput {
	return o
}

func (o ClusterIssuerSpecVaultAuthPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecVaultAuth] {
	return pulumix.Output[*ClusterIssuerSpecVaultAuth]{
		OutputState: o.OutputState,
	}
}

func (o ClusterIssuerSpecVaultAuthPtrOutput) Elem() ClusterIssuerSpecVaultAuthOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecVaultAuth) ClusterIssuerSpecVaultAuth {
		if v != nil {
			return *v
		}
		var ret ClusterIssuerSpecVaultAuth
		return ret
	}).(ClusterIssuerSpecVaultAuthOutput)
}

// AppRole authenticates with Vault using the App Role auth mechanism, with the role and secret stored in a Kubernetes Secret resource.
func (o ClusterIssuerSpecVaultAuthPtrOutput) AppRole() ClusterIssuerSpecVaultAuthAppRolePtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecVaultAuth) *ClusterIssuerSpecVaultAuthAppRole {
		if v == nil {
			return nil
		}
		return v.AppRole
	}).(ClusterIssuerSpecVaultAuthAppRolePtrOutput)
}

// Kubernetes authenticates with Vault by passing the ServiceAccount token stored in the named Secret resource to the Vault server.
func (o ClusterIssuerSpecVaultAuthPtrOutput) Kubernetes() ClusterIssuerSpecVaultAuthKubernetesPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecVaultAuth) *ClusterIssuerSpecVaultAuthKubernetes {
		if v == nil {
			return nil
		}
		return v.Kubernetes
	}).(ClusterIssuerSpecVaultAuthKubernetesPtrOutput)
}

// TokenSecretRef authenticates with Vault by presenting a token.
func (o ClusterIssuerSpecVaultAuthPtrOutput) TokenSecretRef() ClusterIssuerSpecVaultAuthTokenSecretRefPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecVaultAuth) *ClusterIssuerSpecVaultAuthTokenSecretRef {
		if v == nil {
			return nil
		}
		return v.TokenSecretRef
	}).(ClusterIssuerSpecVaultAuthTokenSecretRefPtrOutput)
}

// AppRole authenticates with Vault using the App Role auth mechanism, with the role and secret stored in a Kubernetes Secret resource.
type ClusterIssuerSpecVaultAuthAppRole struct {
	// Path where the App Role authentication backend is mounted in Vault, e.g: "approle"
	Path string `pulumi:"path"`
	// RoleID configured in the App Role authentication backend when setting up the authentication backend in Vault.
	RoleId string `pulumi:"roleId"`
	// Reference to a key in a Secret that contains the App Role secret used to authenticate with Vault. The `key` field must be specified and denotes which entry within the Secret resource is used as the app role secret.
	SecretRef ClusterIssuerSpecVaultAuthAppRoleSecretRef `pulumi:"secretRef"`
}

// ClusterIssuerSpecVaultAuthAppRoleInput is an input type that accepts ClusterIssuerSpecVaultAuthAppRoleArgs and ClusterIssuerSpecVaultAuthAppRoleOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecVaultAuthAppRoleInput` via:
//
//	ClusterIssuerSpecVaultAuthAppRoleArgs{...}
type ClusterIssuerSpecVaultAuthAppRoleInput interface {
	pulumi.Input

	ToClusterIssuerSpecVaultAuthAppRoleOutput() ClusterIssuerSpecVaultAuthAppRoleOutput
	ToClusterIssuerSpecVaultAuthAppRoleOutputWithContext(context.Context) ClusterIssuerSpecVaultAuthAppRoleOutput
}

// AppRole authenticates with Vault using the App Role auth mechanism, with the role and secret stored in a Kubernetes Secret resource.
type ClusterIssuerSpecVaultAuthAppRoleArgs struct {
	// Path where the App Role authentication backend is mounted in Vault, e.g: "approle"
	Path pulumi.StringInput `pulumi:"path"`
	// RoleID configured in the App Role authentication backend when setting up the authentication backend in Vault.
	RoleId pulumi.StringInput `pulumi:"roleId"`
	// Reference to a key in a Secret that contains the App Role secret used to authenticate with Vault. The `key` field must be specified and denotes which entry within the Secret resource is used as the app role secret.
	SecretRef ClusterIssuerSpecVaultAuthAppRoleSecretRefInput `pulumi:"secretRef"`
}

func (ClusterIssuerSpecVaultAuthAppRoleArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecVaultAuthAppRole)(nil)).Elem()
}

func (i ClusterIssuerSpecVaultAuthAppRoleArgs) ToClusterIssuerSpecVaultAuthAppRoleOutput() ClusterIssuerSpecVaultAuthAppRoleOutput {
	return i.ToClusterIssuerSpecVaultAuthAppRoleOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecVaultAuthAppRoleArgs) ToClusterIssuerSpecVaultAuthAppRoleOutputWithContext(ctx context.Context) ClusterIssuerSpecVaultAuthAppRoleOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecVaultAuthAppRoleOutput)
}

func (i ClusterIssuerSpecVaultAuthAppRoleArgs) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecVaultAuthAppRole] {
	return pulumix.Output[ClusterIssuerSpecVaultAuthAppRole]{
		OutputState: i.ToClusterIssuerSpecVaultAuthAppRoleOutputWithContext(ctx).OutputState,
	}
}

func (i ClusterIssuerSpecVaultAuthAppRoleArgs) ToClusterIssuerSpecVaultAuthAppRolePtrOutput() ClusterIssuerSpecVaultAuthAppRolePtrOutput {
	return i.ToClusterIssuerSpecVaultAuthAppRolePtrOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecVaultAuthAppRoleArgs) ToClusterIssuerSpecVaultAuthAppRolePtrOutputWithContext(ctx context.Context) ClusterIssuerSpecVaultAuthAppRolePtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecVaultAuthAppRoleOutput).ToClusterIssuerSpecVaultAuthAppRolePtrOutputWithContext(ctx)
}

// ClusterIssuerSpecVaultAuthAppRolePtrInput is an input type that accepts ClusterIssuerSpecVaultAuthAppRoleArgs, ClusterIssuerSpecVaultAuthAppRolePtr and ClusterIssuerSpecVaultAuthAppRolePtrOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecVaultAuthAppRolePtrInput` via:
//
//	        ClusterIssuerSpecVaultAuthAppRoleArgs{...}
//
//	or:
//
//	        nil
type ClusterIssuerSpecVaultAuthAppRolePtrInput interface {
	pulumi.Input

	ToClusterIssuerSpecVaultAuthAppRolePtrOutput() ClusterIssuerSpecVaultAuthAppRolePtrOutput
	ToClusterIssuerSpecVaultAuthAppRolePtrOutputWithContext(context.Context) ClusterIssuerSpecVaultAuthAppRolePtrOutput
}

type clusterIssuerSpecVaultAuthAppRolePtrType ClusterIssuerSpecVaultAuthAppRoleArgs

func ClusterIssuerSpecVaultAuthAppRolePtr(v *ClusterIssuerSpecVaultAuthAppRoleArgs) ClusterIssuerSpecVaultAuthAppRolePtrInput {
	return (*clusterIssuerSpecVaultAuthAppRolePtrType)(v)
}

func (*clusterIssuerSpecVaultAuthAppRolePtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecVaultAuthAppRole)(nil)).Elem()
}

func (i *clusterIssuerSpecVaultAuthAppRolePtrType) ToClusterIssuerSpecVaultAuthAppRolePtrOutput() ClusterIssuerSpecVaultAuthAppRolePtrOutput {
	return i.ToClusterIssuerSpecVaultAuthAppRolePtrOutputWithContext(context.Background())
}

func (i *clusterIssuerSpecVaultAuthAppRolePtrType) ToClusterIssuerSpecVaultAuthAppRolePtrOutputWithContext(ctx context.Context) ClusterIssuerSpecVaultAuthAppRolePtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecVaultAuthAppRolePtrOutput)
}

func (i *clusterIssuerSpecVaultAuthAppRolePtrType) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecVaultAuthAppRole] {
	return pulumix.Output[*ClusterIssuerSpecVaultAuthAppRole]{
		OutputState: i.ToClusterIssuerSpecVaultAuthAppRolePtrOutputWithContext(ctx).OutputState,
	}
}

// AppRole authenticates with Vault using the App Role auth mechanism, with the role and secret stored in a Kubernetes Secret resource.
type ClusterIssuerSpecVaultAuthAppRoleOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecVaultAuthAppRoleOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecVaultAuthAppRole)(nil)).Elem()
}

func (o ClusterIssuerSpecVaultAuthAppRoleOutput) ToClusterIssuerSpecVaultAuthAppRoleOutput() ClusterIssuerSpecVaultAuthAppRoleOutput {
	return o
}

func (o ClusterIssuerSpecVaultAuthAppRoleOutput) ToClusterIssuerSpecVaultAuthAppRoleOutputWithContext(ctx context.Context) ClusterIssuerSpecVaultAuthAppRoleOutput {
	return o
}

func (o ClusterIssuerSpecVaultAuthAppRoleOutput) ToClusterIssuerSpecVaultAuthAppRolePtrOutput() ClusterIssuerSpecVaultAuthAppRolePtrOutput {
	return o.ToClusterIssuerSpecVaultAuthAppRolePtrOutputWithContext(context.Background())
}

func (o ClusterIssuerSpecVaultAuthAppRoleOutput) ToClusterIssuerSpecVaultAuthAppRolePtrOutputWithContext(ctx context.Context) ClusterIssuerSpecVaultAuthAppRolePtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v ClusterIssuerSpecVaultAuthAppRole) *ClusterIssuerSpecVaultAuthAppRole {
		return &v
	}).(ClusterIssuerSpecVaultAuthAppRolePtrOutput)
}

func (o ClusterIssuerSpecVaultAuthAppRoleOutput) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecVaultAuthAppRole] {
	return pulumix.Output[ClusterIssuerSpecVaultAuthAppRole]{
		OutputState: o.OutputState,
	}
}

// Path where the App Role authentication backend is mounted in Vault, e.g: "approle"
func (o ClusterIssuerSpecVaultAuthAppRoleOutput) Path() pulumi.StringOutput {
	return o.ApplyT(func(v ClusterIssuerSpecVaultAuthAppRole) string { return v.Path }).(pulumi.StringOutput)
}

// RoleID configured in the App Role authentication backend when setting up the authentication backend in Vault.
func (o ClusterIssuerSpecVaultAuthAppRoleOutput) RoleId() pulumi.StringOutput {
	return o.ApplyT(func(v ClusterIssuerSpecVaultAuthAppRole) string { return v.RoleId }).(pulumi.StringOutput)
}

// Reference to a key in a Secret that contains the App Role secret used to authenticate with Vault. The `key` field must be specified and denotes which entry within the Secret resource is used as the app role secret.
func (o ClusterIssuerSpecVaultAuthAppRoleOutput) SecretRef() ClusterIssuerSpecVaultAuthAppRoleSecretRefOutput {
	return o.ApplyT(func(v ClusterIssuerSpecVaultAuthAppRole) ClusterIssuerSpecVaultAuthAppRoleSecretRef {
		return v.SecretRef
	}).(ClusterIssuerSpecVaultAuthAppRoleSecretRefOutput)
}

type ClusterIssuerSpecVaultAuthAppRolePtrOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecVaultAuthAppRolePtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecVaultAuthAppRole)(nil)).Elem()
}

func (o ClusterIssuerSpecVaultAuthAppRolePtrOutput) ToClusterIssuerSpecVaultAuthAppRolePtrOutput() ClusterIssuerSpecVaultAuthAppRolePtrOutput {
	return o
}

func (o ClusterIssuerSpecVaultAuthAppRolePtrOutput) ToClusterIssuerSpecVaultAuthAppRolePtrOutputWithContext(ctx context.Context) ClusterIssuerSpecVaultAuthAppRolePtrOutput {
	return o
}

func (o ClusterIssuerSpecVaultAuthAppRolePtrOutput) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecVaultAuthAppRole] {
	return pulumix.Output[*ClusterIssuerSpecVaultAuthAppRole]{
		OutputState: o.OutputState,
	}
}

func (o ClusterIssuerSpecVaultAuthAppRolePtrOutput) Elem() ClusterIssuerSpecVaultAuthAppRoleOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecVaultAuthAppRole) ClusterIssuerSpecVaultAuthAppRole {
		if v != nil {
			return *v
		}
		var ret ClusterIssuerSpecVaultAuthAppRole
		return ret
	}).(ClusterIssuerSpecVaultAuthAppRoleOutput)
}

// Path where the App Role authentication backend is mounted in Vault, e.g: "approle"
func (o ClusterIssuerSpecVaultAuthAppRolePtrOutput) Path() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecVaultAuthAppRole) *string {
		if v == nil {
			return nil
		}
		return &v.Path
	}).(pulumi.StringPtrOutput)
}

// RoleID configured in the App Role authentication backend when setting up the authentication backend in Vault.
func (o ClusterIssuerSpecVaultAuthAppRolePtrOutput) RoleId() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecVaultAuthAppRole) *string {
		if v == nil {
			return nil
		}
		return &v.RoleId
	}).(pulumi.StringPtrOutput)
}

// Reference to a key in a Secret that contains the App Role secret used to authenticate with Vault. The `key` field must be specified and denotes which entry within the Secret resource is used as the app role secret.
func (o ClusterIssuerSpecVaultAuthAppRolePtrOutput) SecretRef() ClusterIssuerSpecVaultAuthAppRoleSecretRefPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecVaultAuthAppRole) *ClusterIssuerSpecVaultAuthAppRoleSecretRef {
		if v == nil {
			return nil
		}
		return &v.SecretRef
	}).(ClusterIssuerSpecVaultAuthAppRoleSecretRefPtrOutput)
}

// Reference to a key in a Secret that contains the App Role secret used to authenticate with Vault. The `key` field must be specified and denotes which entry within the Secret resource is used as the app role secret.
type ClusterIssuerSpecVaultAuthAppRoleSecretRef struct {
	// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
	Key *string `pulumi:"key"`
	// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
	Name string `pulumi:"name"`
}

// ClusterIssuerSpecVaultAuthAppRoleSecretRefInput is an input type that accepts ClusterIssuerSpecVaultAuthAppRoleSecretRefArgs and ClusterIssuerSpecVaultAuthAppRoleSecretRefOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecVaultAuthAppRoleSecretRefInput` via:
//
//	ClusterIssuerSpecVaultAuthAppRoleSecretRefArgs{...}
type ClusterIssuerSpecVaultAuthAppRoleSecretRefInput interface {
	pulumi.Input

	ToClusterIssuerSpecVaultAuthAppRoleSecretRefOutput() ClusterIssuerSpecVaultAuthAppRoleSecretRefOutput
	ToClusterIssuerSpecVaultAuthAppRoleSecretRefOutputWithContext(context.Context) ClusterIssuerSpecVaultAuthAppRoleSecretRefOutput
}

// Reference to a key in a Secret that contains the App Role secret used to authenticate with Vault. The `key` field must be specified and denotes which entry within the Secret resource is used as the app role secret.
type ClusterIssuerSpecVaultAuthAppRoleSecretRefArgs struct {
	// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
	Key pulumi.StringPtrInput `pulumi:"key"`
	// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
	Name pulumi.StringInput `pulumi:"name"`
}

func (ClusterIssuerSpecVaultAuthAppRoleSecretRefArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecVaultAuthAppRoleSecretRef)(nil)).Elem()
}

func (i ClusterIssuerSpecVaultAuthAppRoleSecretRefArgs) ToClusterIssuerSpecVaultAuthAppRoleSecretRefOutput() ClusterIssuerSpecVaultAuthAppRoleSecretRefOutput {
	return i.ToClusterIssuerSpecVaultAuthAppRoleSecretRefOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecVaultAuthAppRoleSecretRefArgs) ToClusterIssuerSpecVaultAuthAppRoleSecretRefOutputWithContext(ctx context.Context) ClusterIssuerSpecVaultAuthAppRoleSecretRefOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecVaultAuthAppRoleSecretRefOutput)
}

func (i ClusterIssuerSpecVaultAuthAppRoleSecretRefArgs) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecVaultAuthAppRoleSecretRef] {
	return pulumix.Output[ClusterIssuerSpecVaultAuthAppRoleSecretRef]{
		OutputState: i.ToClusterIssuerSpecVaultAuthAppRoleSecretRefOutputWithContext(ctx).OutputState,
	}
}

func (i ClusterIssuerSpecVaultAuthAppRoleSecretRefArgs) ToClusterIssuerSpecVaultAuthAppRoleSecretRefPtrOutput() ClusterIssuerSpecVaultAuthAppRoleSecretRefPtrOutput {
	return i.ToClusterIssuerSpecVaultAuthAppRoleSecretRefPtrOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecVaultAuthAppRoleSecretRefArgs) ToClusterIssuerSpecVaultAuthAppRoleSecretRefPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecVaultAuthAppRoleSecretRefPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecVaultAuthAppRoleSecretRefOutput).ToClusterIssuerSpecVaultAuthAppRoleSecretRefPtrOutputWithContext(ctx)
}

// ClusterIssuerSpecVaultAuthAppRoleSecretRefPtrInput is an input type that accepts ClusterIssuerSpecVaultAuthAppRoleSecretRefArgs, ClusterIssuerSpecVaultAuthAppRoleSecretRefPtr and ClusterIssuerSpecVaultAuthAppRoleSecretRefPtrOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecVaultAuthAppRoleSecretRefPtrInput` via:
//
//	        ClusterIssuerSpecVaultAuthAppRoleSecretRefArgs{...}
//
//	or:
//
//	        nil
type ClusterIssuerSpecVaultAuthAppRoleSecretRefPtrInput interface {
	pulumi.Input

	ToClusterIssuerSpecVaultAuthAppRoleSecretRefPtrOutput() ClusterIssuerSpecVaultAuthAppRoleSecretRefPtrOutput
	ToClusterIssuerSpecVaultAuthAppRoleSecretRefPtrOutputWithContext(context.Context) ClusterIssuerSpecVaultAuthAppRoleSecretRefPtrOutput
}

type clusterIssuerSpecVaultAuthAppRoleSecretRefPtrType ClusterIssuerSpecVaultAuthAppRoleSecretRefArgs

func ClusterIssuerSpecVaultAuthAppRoleSecretRefPtr(v *ClusterIssuerSpecVaultAuthAppRoleSecretRefArgs) ClusterIssuerSpecVaultAuthAppRoleSecretRefPtrInput {
	return (*clusterIssuerSpecVaultAuthAppRoleSecretRefPtrType)(v)
}

func (*clusterIssuerSpecVaultAuthAppRoleSecretRefPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecVaultAuthAppRoleSecretRef)(nil)).Elem()
}

func (i *clusterIssuerSpecVaultAuthAppRoleSecretRefPtrType) ToClusterIssuerSpecVaultAuthAppRoleSecretRefPtrOutput() ClusterIssuerSpecVaultAuthAppRoleSecretRefPtrOutput {
	return i.ToClusterIssuerSpecVaultAuthAppRoleSecretRefPtrOutputWithContext(context.Background())
}

func (i *clusterIssuerSpecVaultAuthAppRoleSecretRefPtrType) ToClusterIssuerSpecVaultAuthAppRoleSecretRefPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecVaultAuthAppRoleSecretRefPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecVaultAuthAppRoleSecretRefPtrOutput)
}

func (i *clusterIssuerSpecVaultAuthAppRoleSecretRefPtrType) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecVaultAuthAppRoleSecretRef] {
	return pulumix.Output[*ClusterIssuerSpecVaultAuthAppRoleSecretRef]{
		OutputState: i.ToClusterIssuerSpecVaultAuthAppRoleSecretRefPtrOutputWithContext(ctx).OutputState,
	}
}

// Reference to a key in a Secret that contains the App Role secret used to authenticate with Vault. The `key` field must be specified and denotes which entry within the Secret resource is used as the app role secret.
type ClusterIssuerSpecVaultAuthAppRoleSecretRefOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecVaultAuthAppRoleSecretRefOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecVaultAuthAppRoleSecretRef)(nil)).Elem()
}

func (o ClusterIssuerSpecVaultAuthAppRoleSecretRefOutput) ToClusterIssuerSpecVaultAuthAppRoleSecretRefOutput() ClusterIssuerSpecVaultAuthAppRoleSecretRefOutput {
	return o
}

func (o ClusterIssuerSpecVaultAuthAppRoleSecretRefOutput) ToClusterIssuerSpecVaultAuthAppRoleSecretRefOutputWithContext(ctx context.Context) ClusterIssuerSpecVaultAuthAppRoleSecretRefOutput {
	return o
}

func (o ClusterIssuerSpecVaultAuthAppRoleSecretRefOutput) ToClusterIssuerSpecVaultAuthAppRoleSecretRefPtrOutput() ClusterIssuerSpecVaultAuthAppRoleSecretRefPtrOutput {
	return o.ToClusterIssuerSpecVaultAuthAppRoleSecretRefPtrOutputWithContext(context.Background())
}

func (o ClusterIssuerSpecVaultAuthAppRoleSecretRefOutput) ToClusterIssuerSpecVaultAuthAppRoleSecretRefPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecVaultAuthAppRoleSecretRefPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v ClusterIssuerSpecVaultAuthAppRoleSecretRef) *ClusterIssuerSpecVaultAuthAppRoleSecretRef {
		return &v
	}).(ClusterIssuerSpecVaultAuthAppRoleSecretRefPtrOutput)
}

func (o ClusterIssuerSpecVaultAuthAppRoleSecretRefOutput) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecVaultAuthAppRoleSecretRef] {
	return pulumix.Output[ClusterIssuerSpecVaultAuthAppRoleSecretRef]{
		OutputState: o.OutputState,
	}
}

// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
func (o ClusterIssuerSpecVaultAuthAppRoleSecretRefOutput) Key() pulumi.StringPtrOutput {
	return o.ApplyT(func(v ClusterIssuerSpecVaultAuthAppRoleSecretRef) *string { return v.Key }).(pulumi.StringPtrOutput)
}

// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
func (o ClusterIssuerSpecVaultAuthAppRoleSecretRefOutput) Name() pulumi.StringOutput {
	return o.ApplyT(func(v ClusterIssuerSpecVaultAuthAppRoleSecretRef) string { return v.Name }).(pulumi.StringOutput)
}

type ClusterIssuerSpecVaultAuthAppRoleSecretRefPtrOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecVaultAuthAppRoleSecretRefPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecVaultAuthAppRoleSecretRef)(nil)).Elem()
}

func (o ClusterIssuerSpecVaultAuthAppRoleSecretRefPtrOutput) ToClusterIssuerSpecVaultAuthAppRoleSecretRefPtrOutput() ClusterIssuerSpecVaultAuthAppRoleSecretRefPtrOutput {
	return o
}

func (o ClusterIssuerSpecVaultAuthAppRoleSecretRefPtrOutput) ToClusterIssuerSpecVaultAuthAppRoleSecretRefPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecVaultAuthAppRoleSecretRefPtrOutput {
	return o
}

func (o ClusterIssuerSpecVaultAuthAppRoleSecretRefPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecVaultAuthAppRoleSecretRef] {
	return pulumix.Output[*ClusterIssuerSpecVaultAuthAppRoleSecretRef]{
		OutputState: o.OutputState,
	}
}

func (o ClusterIssuerSpecVaultAuthAppRoleSecretRefPtrOutput) Elem() ClusterIssuerSpecVaultAuthAppRoleSecretRefOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecVaultAuthAppRoleSecretRef) ClusterIssuerSpecVaultAuthAppRoleSecretRef {
		if v != nil {
			return *v
		}
		var ret ClusterIssuerSpecVaultAuthAppRoleSecretRef
		return ret
	}).(ClusterIssuerSpecVaultAuthAppRoleSecretRefOutput)
}

// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
func (o ClusterIssuerSpecVaultAuthAppRoleSecretRefPtrOutput) Key() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecVaultAuthAppRoleSecretRef) *string {
		if v == nil {
			return nil
		}
		return v.Key
	}).(pulumi.StringPtrOutput)
}

// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
func (o ClusterIssuerSpecVaultAuthAppRoleSecretRefPtrOutput) Name() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecVaultAuthAppRoleSecretRef) *string {
		if v == nil {
			return nil
		}
		return &v.Name
	}).(pulumi.StringPtrOutput)
}

// Kubernetes authenticates with Vault by passing the ServiceAccount token stored in the named Secret resource to the Vault server.
type ClusterIssuerSpecVaultAuthKubernetes struct {
	// The Vault mountPath here is the mount path to use when authenticating with Vault. For example, setting a value to `/v1/auth/foo`, will use the path `/v1/auth/foo/login` to authenticate with Vault. If unspecified, the default value "/v1/auth/kubernetes" will be used.
	MountPath *string `pulumi:"mountPath"`
	// A required field containing the Vault Role to assume. A Role binds a Kubernetes ServiceAccount with a set of Vault policies.
	Role string `pulumi:"role"`
	// The required Secret field containing a Kubernetes ServiceAccount JWT used for authenticating with Vault. Use of 'ambient credentials' is not supported.
	SecretRef ClusterIssuerSpecVaultAuthKubernetesSecretRef `pulumi:"secretRef"`
}

// ClusterIssuerSpecVaultAuthKubernetesInput is an input type that accepts ClusterIssuerSpecVaultAuthKubernetesArgs and ClusterIssuerSpecVaultAuthKubernetesOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecVaultAuthKubernetesInput` via:
//
//	ClusterIssuerSpecVaultAuthKubernetesArgs{...}
type ClusterIssuerSpecVaultAuthKubernetesInput interface {
	pulumi.Input

	ToClusterIssuerSpecVaultAuthKubernetesOutput() ClusterIssuerSpecVaultAuthKubernetesOutput
	ToClusterIssuerSpecVaultAuthKubernetesOutputWithContext(context.Context) ClusterIssuerSpecVaultAuthKubernetesOutput
}

// Kubernetes authenticates with Vault by passing the ServiceAccount token stored in the named Secret resource to the Vault server.
type ClusterIssuerSpecVaultAuthKubernetesArgs struct {
	// The Vault mountPath here is the mount path to use when authenticating with Vault. For example, setting a value to `/v1/auth/foo`, will use the path `/v1/auth/foo/login` to authenticate with Vault. If unspecified, the default value "/v1/auth/kubernetes" will be used.
	MountPath pulumi.StringPtrInput `pulumi:"mountPath"`
	// A required field containing the Vault Role to assume. A Role binds a Kubernetes ServiceAccount with a set of Vault policies.
	Role pulumi.StringInput `pulumi:"role"`
	// The required Secret field containing a Kubernetes ServiceAccount JWT used for authenticating with Vault. Use of 'ambient credentials' is not supported.
	SecretRef ClusterIssuerSpecVaultAuthKubernetesSecretRefInput `pulumi:"secretRef"`
}

func (ClusterIssuerSpecVaultAuthKubernetesArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecVaultAuthKubernetes)(nil)).Elem()
}

func (i ClusterIssuerSpecVaultAuthKubernetesArgs) ToClusterIssuerSpecVaultAuthKubernetesOutput() ClusterIssuerSpecVaultAuthKubernetesOutput {
	return i.ToClusterIssuerSpecVaultAuthKubernetesOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecVaultAuthKubernetesArgs) ToClusterIssuerSpecVaultAuthKubernetesOutputWithContext(ctx context.Context) ClusterIssuerSpecVaultAuthKubernetesOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecVaultAuthKubernetesOutput)
}

func (i ClusterIssuerSpecVaultAuthKubernetesArgs) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecVaultAuthKubernetes] {
	return pulumix.Output[ClusterIssuerSpecVaultAuthKubernetes]{
		OutputState: i.ToClusterIssuerSpecVaultAuthKubernetesOutputWithContext(ctx).OutputState,
	}
}

func (i ClusterIssuerSpecVaultAuthKubernetesArgs) ToClusterIssuerSpecVaultAuthKubernetesPtrOutput() ClusterIssuerSpecVaultAuthKubernetesPtrOutput {
	return i.ToClusterIssuerSpecVaultAuthKubernetesPtrOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecVaultAuthKubernetesArgs) ToClusterIssuerSpecVaultAuthKubernetesPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecVaultAuthKubernetesPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecVaultAuthKubernetesOutput).ToClusterIssuerSpecVaultAuthKubernetesPtrOutputWithContext(ctx)
}

// ClusterIssuerSpecVaultAuthKubernetesPtrInput is an input type that accepts ClusterIssuerSpecVaultAuthKubernetesArgs, ClusterIssuerSpecVaultAuthKubernetesPtr and ClusterIssuerSpecVaultAuthKubernetesPtrOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecVaultAuthKubernetesPtrInput` via:
//
//	        ClusterIssuerSpecVaultAuthKubernetesArgs{...}
//
//	or:
//
//	        nil
type ClusterIssuerSpecVaultAuthKubernetesPtrInput interface {
	pulumi.Input

	ToClusterIssuerSpecVaultAuthKubernetesPtrOutput() ClusterIssuerSpecVaultAuthKubernetesPtrOutput
	ToClusterIssuerSpecVaultAuthKubernetesPtrOutputWithContext(context.Context) ClusterIssuerSpecVaultAuthKubernetesPtrOutput
}

type clusterIssuerSpecVaultAuthKubernetesPtrType ClusterIssuerSpecVaultAuthKubernetesArgs

func ClusterIssuerSpecVaultAuthKubernetesPtr(v *ClusterIssuerSpecVaultAuthKubernetesArgs) ClusterIssuerSpecVaultAuthKubernetesPtrInput {
	return (*clusterIssuerSpecVaultAuthKubernetesPtrType)(v)
}

func (*clusterIssuerSpecVaultAuthKubernetesPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecVaultAuthKubernetes)(nil)).Elem()
}

func (i *clusterIssuerSpecVaultAuthKubernetesPtrType) ToClusterIssuerSpecVaultAuthKubernetesPtrOutput() ClusterIssuerSpecVaultAuthKubernetesPtrOutput {
	return i.ToClusterIssuerSpecVaultAuthKubernetesPtrOutputWithContext(context.Background())
}

func (i *clusterIssuerSpecVaultAuthKubernetesPtrType) ToClusterIssuerSpecVaultAuthKubernetesPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecVaultAuthKubernetesPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecVaultAuthKubernetesPtrOutput)
}

func (i *clusterIssuerSpecVaultAuthKubernetesPtrType) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecVaultAuthKubernetes] {
	return pulumix.Output[*ClusterIssuerSpecVaultAuthKubernetes]{
		OutputState: i.ToClusterIssuerSpecVaultAuthKubernetesPtrOutputWithContext(ctx).OutputState,
	}
}

// Kubernetes authenticates with Vault by passing the ServiceAccount token stored in the named Secret resource to the Vault server.
type ClusterIssuerSpecVaultAuthKubernetesOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecVaultAuthKubernetesOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecVaultAuthKubernetes)(nil)).Elem()
}

func (o ClusterIssuerSpecVaultAuthKubernetesOutput) ToClusterIssuerSpecVaultAuthKubernetesOutput() ClusterIssuerSpecVaultAuthKubernetesOutput {
	return o
}

func (o ClusterIssuerSpecVaultAuthKubernetesOutput) ToClusterIssuerSpecVaultAuthKubernetesOutputWithContext(ctx context.Context) ClusterIssuerSpecVaultAuthKubernetesOutput {
	return o
}

func (o ClusterIssuerSpecVaultAuthKubernetesOutput) ToClusterIssuerSpecVaultAuthKubernetesPtrOutput() ClusterIssuerSpecVaultAuthKubernetesPtrOutput {
	return o.ToClusterIssuerSpecVaultAuthKubernetesPtrOutputWithContext(context.Background())
}

func (o ClusterIssuerSpecVaultAuthKubernetesOutput) ToClusterIssuerSpecVaultAuthKubernetesPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecVaultAuthKubernetesPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v ClusterIssuerSpecVaultAuthKubernetes) *ClusterIssuerSpecVaultAuthKubernetes {
		return &v
	}).(ClusterIssuerSpecVaultAuthKubernetesPtrOutput)
}

func (o ClusterIssuerSpecVaultAuthKubernetesOutput) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecVaultAuthKubernetes] {
	return pulumix.Output[ClusterIssuerSpecVaultAuthKubernetes]{
		OutputState: o.OutputState,
	}
}

// The Vault mountPath here is the mount path to use when authenticating with Vault. For example, setting a value to `/v1/auth/foo`, will use the path `/v1/auth/foo/login` to authenticate with Vault. If unspecified, the default value "/v1/auth/kubernetes" will be used.
func (o ClusterIssuerSpecVaultAuthKubernetesOutput) MountPath() pulumi.StringPtrOutput {
	return o.ApplyT(func(v ClusterIssuerSpecVaultAuthKubernetes) *string { return v.MountPath }).(pulumi.StringPtrOutput)
}

// A required field containing the Vault Role to assume. A Role binds a Kubernetes ServiceAccount with a set of Vault policies.
func (o ClusterIssuerSpecVaultAuthKubernetesOutput) Role() pulumi.StringOutput {
	return o.ApplyT(func(v ClusterIssuerSpecVaultAuthKubernetes) string { return v.Role }).(pulumi.StringOutput)
}

// The required Secret field containing a Kubernetes ServiceAccount JWT used for authenticating with Vault. Use of 'ambient credentials' is not supported.
func (o ClusterIssuerSpecVaultAuthKubernetesOutput) SecretRef() ClusterIssuerSpecVaultAuthKubernetesSecretRefOutput {
	return o.ApplyT(func(v ClusterIssuerSpecVaultAuthKubernetes) ClusterIssuerSpecVaultAuthKubernetesSecretRef {
		return v.SecretRef
	}).(ClusterIssuerSpecVaultAuthKubernetesSecretRefOutput)
}

type ClusterIssuerSpecVaultAuthKubernetesPtrOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecVaultAuthKubernetesPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecVaultAuthKubernetes)(nil)).Elem()
}

func (o ClusterIssuerSpecVaultAuthKubernetesPtrOutput) ToClusterIssuerSpecVaultAuthKubernetesPtrOutput() ClusterIssuerSpecVaultAuthKubernetesPtrOutput {
	return o
}

func (o ClusterIssuerSpecVaultAuthKubernetesPtrOutput) ToClusterIssuerSpecVaultAuthKubernetesPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecVaultAuthKubernetesPtrOutput {
	return o
}

func (o ClusterIssuerSpecVaultAuthKubernetesPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecVaultAuthKubernetes] {
	return pulumix.Output[*ClusterIssuerSpecVaultAuthKubernetes]{
		OutputState: o.OutputState,
	}
}

func (o ClusterIssuerSpecVaultAuthKubernetesPtrOutput) Elem() ClusterIssuerSpecVaultAuthKubernetesOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecVaultAuthKubernetes) ClusterIssuerSpecVaultAuthKubernetes {
		if v != nil {
			return *v
		}
		var ret ClusterIssuerSpecVaultAuthKubernetes
		return ret
	}).(ClusterIssuerSpecVaultAuthKubernetesOutput)
}

// The Vault mountPath here is the mount path to use when authenticating with Vault. For example, setting a value to `/v1/auth/foo`, will use the path `/v1/auth/foo/login` to authenticate with Vault. If unspecified, the default value "/v1/auth/kubernetes" will be used.
func (o ClusterIssuerSpecVaultAuthKubernetesPtrOutput) MountPath() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecVaultAuthKubernetes) *string {
		if v == nil {
			return nil
		}
		return v.MountPath
	}).(pulumi.StringPtrOutput)
}

// A required field containing the Vault Role to assume. A Role binds a Kubernetes ServiceAccount with a set of Vault policies.
func (o ClusterIssuerSpecVaultAuthKubernetesPtrOutput) Role() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecVaultAuthKubernetes) *string {
		if v == nil {
			return nil
		}
		return &v.Role
	}).(pulumi.StringPtrOutput)
}

// The required Secret field containing a Kubernetes ServiceAccount JWT used for authenticating with Vault. Use of 'ambient credentials' is not supported.
func (o ClusterIssuerSpecVaultAuthKubernetesPtrOutput) SecretRef() ClusterIssuerSpecVaultAuthKubernetesSecretRefPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecVaultAuthKubernetes) *ClusterIssuerSpecVaultAuthKubernetesSecretRef {
		if v == nil {
			return nil
		}
		return &v.SecretRef
	}).(ClusterIssuerSpecVaultAuthKubernetesSecretRefPtrOutput)
}

// The required Secret field containing a Kubernetes ServiceAccount JWT used for authenticating with Vault. Use of 'ambient credentials' is not supported.
type ClusterIssuerSpecVaultAuthKubernetesSecretRef struct {
	// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
	Key *string `pulumi:"key"`
	// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
	Name string `pulumi:"name"`
}

// ClusterIssuerSpecVaultAuthKubernetesSecretRefInput is an input type that accepts ClusterIssuerSpecVaultAuthKubernetesSecretRefArgs and ClusterIssuerSpecVaultAuthKubernetesSecretRefOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecVaultAuthKubernetesSecretRefInput` via:
//
//	ClusterIssuerSpecVaultAuthKubernetesSecretRefArgs{...}
type ClusterIssuerSpecVaultAuthKubernetesSecretRefInput interface {
	pulumi.Input

	ToClusterIssuerSpecVaultAuthKubernetesSecretRefOutput() ClusterIssuerSpecVaultAuthKubernetesSecretRefOutput
	ToClusterIssuerSpecVaultAuthKubernetesSecretRefOutputWithContext(context.Context) ClusterIssuerSpecVaultAuthKubernetesSecretRefOutput
}

// The required Secret field containing a Kubernetes ServiceAccount JWT used for authenticating with Vault. Use of 'ambient credentials' is not supported.
type ClusterIssuerSpecVaultAuthKubernetesSecretRefArgs struct {
	// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
	Key pulumi.StringPtrInput `pulumi:"key"`
	// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
	Name pulumi.StringInput `pulumi:"name"`
}

func (ClusterIssuerSpecVaultAuthKubernetesSecretRefArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecVaultAuthKubernetesSecretRef)(nil)).Elem()
}

func (i ClusterIssuerSpecVaultAuthKubernetesSecretRefArgs) ToClusterIssuerSpecVaultAuthKubernetesSecretRefOutput() ClusterIssuerSpecVaultAuthKubernetesSecretRefOutput {
	return i.ToClusterIssuerSpecVaultAuthKubernetesSecretRefOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecVaultAuthKubernetesSecretRefArgs) ToClusterIssuerSpecVaultAuthKubernetesSecretRefOutputWithContext(ctx context.Context) ClusterIssuerSpecVaultAuthKubernetesSecretRefOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecVaultAuthKubernetesSecretRefOutput)
}

func (i ClusterIssuerSpecVaultAuthKubernetesSecretRefArgs) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecVaultAuthKubernetesSecretRef] {
	return pulumix.Output[ClusterIssuerSpecVaultAuthKubernetesSecretRef]{
		OutputState: i.ToClusterIssuerSpecVaultAuthKubernetesSecretRefOutputWithContext(ctx).OutputState,
	}
}

func (i ClusterIssuerSpecVaultAuthKubernetesSecretRefArgs) ToClusterIssuerSpecVaultAuthKubernetesSecretRefPtrOutput() ClusterIssuerSpecVaultAuthKubernetesSecretRefPtrOutput {
	return i.ToClusterIssuerSpecVaultAuthKubernetesSecretRefPtrOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecVaultAuthKubernetesSecretRefArgs) ToClusterIssuerSpecVaultAuthKubernetesSecretRefPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecVaultAuthKubernetesSecretRefPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecVaultAuthKubernetesSecretRefOutput).ToClusterIssuerSpecVaultAuthKubernetesSecretRefPtrOutputWithContext(ctx)
}

// ClusterIssuerSpecVaultAuthKubernetesSecretRefPtrInput is an input type that accepts ClusterIssuerSpecVaultAuthKubernetesSecretRefArgs, ClusterIssuerSpecVaultAuthKubernetesSecretRefPtr and ClusterIssuerSpecVaultAuthKubernetesSecretRefPtrOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecVaultAuthKubernetesSecretRefPtrInput` via:
//
//	        ClusterIssuerSpecVaultAuthKubernetesSecretRefArgs{...}
//
//	or:
//
//	        nil
type ClusterIssuerSpecVaultAuthKubernetesSecretRefPtrInput interface {
	pulumi.Input

	ToClusterIssuerSpecVaultAuthKubernetesSecretRefPtrOutput() ClusterIssuerSpecVaultAuthKubernetesSecretRefPtrOutput
	ToClusterIssuerSpecVaultAuthKubernetesSecretRefPtrOutputWithContext(context.Context) ClusterIssuerSpecVaultAuthKubernetesSecretRefPtrOutput
}

type clusterIssuerSpecVaultAuthKubernetesSecretRefPtrType ClusterIssuerSpecVaultAuthKubernetesSecretRefArgs

func ClusterIssuerSpecVaultAuthKubernetesSecretRefPtr(v *ClusterIssuerSpecVaultAuthKubernetesSecretRefArgs) ClusterIssuerSpecVaultAuthKubernetesSecretRefPtrInput {
	return (*clusterIssuerSpecVaultAuthKubernetesSecretRefPtrType)(v)
}

func (*clusterIssuerSpecVaultAuthKubernetesSecretRefPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecVaultAuthKubernetesSecretRef)(nil)).Elem()
}

func (i *clusterIssuerSpecVaultAuthKubernetesSecretRefPtrType) ToClusterIssuerSpecVaultAuthKubernetesSecretRefPtrOutput() ClusterIssuerSpecVaultAuthKubernetesSecretRefPtrOutput {
	return i.ToClusterIssuerSpecVaultAuthKubernetesSecretRefPtrOutputWithContext(context.Background())
}

func (i *clusterIssuerSpecVaultAuthKubernetesSecretRefPtrType) ToClusterIssuerSpecVaultAuthKubernetesSecretRefPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecVaultAuthKubernetesSecretRefPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecVaultAuthKubernetesSecretRefPtrOutput)
}

func (i *clusterIssuerSpecVaultAuthKubernetesSecretRefPtrType) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecVaultAuthKubernetesSecretRef] {
	return pulumix.Output[*ClusterIssuerSpecVaultAuthKubernetesSecretRef]{
		OutputState: i.ToClusterIssuerSpecVaultAuthKubernetesSecretRefPtrOutputWithContext(ctx).OutputState,
	}
}

// The required Secret field containing a Kubernetes ServiceAccount JWT used for authenticating with Vault. Use of 'ambient credentials' is not supported.
type ClusterIssuerSpecVaultAuthKubernetesSecretRefOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecVaultAuthKubernetesSecretRefOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecVaultAuthKubernetesSecretRef)(nil)).Elem()
}

func (o ClusterIssuerSpecVaultAuthKubernetesSecretRefOutput) ToClusterIssuerSpecVaultAuthKubernetesSecretRefOutput() ClusterIssuerSpecVaultAuthKubernetesSecretRefOutput {
	return o
}

func (o ClusterIssuerSpecVaultAuthKubernetesSecretRefOutput) ToClusterIssuerSpecVaultAuthKubernetesSecretRefOutputWithContext(ctx context.Context) ClusterIssuerSpecVaultAuthKubernetesSecretRefOutput {
	return o
}

func (o ClusterIssuerSpecVaultAuthKubernetesSecretRefOutput) ToClusterIssuerSpecVaultAuthKubernetesSecretRefPtrOutput() ClusterIssuerSpecVaultAuthKubernetesSecretRefPtrOutput {
	return o.ToClusterIssuerSpecVaultAuthKubernetesSecretRefPtrOutputWithContext(context.Background())
}

func (o ClusterIssuerSpecVaultAuthKubernetesSecretRefOutput) ToClusterIssuerSpecVaultAuthKubernetesSecretRefPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecVaultAuthKubernetesSecretRefPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v ClusterIssuerSpecVaultAuthKubernetesSecretRef) *ClusterIssuerSpecVaultAuthKubernetesSecretRef {
		return &v
	}).(ClusterIssuerSpecVaultAuthKubernetesSecretRefPtrOutput)
}

func (o ClusterIssuerSpecVaultAuthKubernetesSecretRefOutput) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecVaultAuthKubernetesSecretRef] {
	return pulumix.Output[ClusterIssuerSpecVaultAuthKubernetesSecretRef]{
		OutputState: o.OutputState,
	}
}

// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
func (o ClusterIssuerSpecVaultAuthKubernetesSecretRefOutput) Key() pulumi.StringPtrOutput {
	return o.ApplyT(func(v ClusterIssuerSpecVaultAuthKubernetesSecretRef) *string { return v.Key }).(pulumi.StringPtrOutput)
}

// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
func (o ClusterIssuerSpecVaultAuthKubernetesSecretRefOutput) Name() pulumi.StringOutput {
	return o.ApplyT(func(v ClusterIssuerSpecVaultAuthKubernetesSecretRef) string { return v.Name }).(pulumi.StringOutput)
}

type ClusterIssuerSpecVaultAuthKubernetesSecretRefPtrOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecVaultAuthKubernetesSecretRefPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecVaultAuthKubernetesSecretRef)(nil)).Elem()
}

func (o ClusterIssuerSpecVaultAuthKubernetesSecretRefPtrOutput) ToClusterIssuerSpecVaultAuthKubernetesSecretRefPtrOutput() ClusterIssuerSpecVaultAuthKubernetesSecretRefPtrOutput {
	return o
}

func (o ClusterIssuerSpecVaultAuthKubernetesSecretRefPtrOutput) ToClusterIssuerSpecVaultAuthKubernetesSecretRefPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecVaultAuthKubernetesSecretRefPtrOutput {
	return o
}

func (o ClusterIssuerSpecVaultAuthKubernetesSecretRefPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecVaultAuthKubernetesSecretRef] {
	return pulumix.Output[*ClusterIssuerSpecVaultAuthKubernetesSecretRef]{
		OutputState: o.OutputState,
	}
}

func (o ClusterIssuerSpecVaultAuthKubernetesSecretRefPtrOutput) Elem() ClusterIssuerSpecVaultAuthKubernetesSecretRefOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecVaultAuthKubernetesSecretRef) ClusterIssuerSpecVaultAuthKubernetesSecretRef {
		if v != nil {
			return *v
		}
		var ret ClusterIssuerSpecVaultAuthKubernetesSecretRef
		return ret
	}).(ClusterIssuerSpecVaultAuthKubernetesSecretRefOutput)
}

// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
func (o ClusterIssuerSpecVaultAuthKubernetesSecretRefPtrOutput) Key() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecVaultAuthKubernetesSecretRef) *string {
		if v == nil {
			return nil
		}
		return v.Key
	}).(pulumi.StringPtrOutput)
}

// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
func (o ClusterIssuerSpecVaultAuthKubernetesSecretRefPtrOutput) Name() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecVaultAuthKubernetesSecretRef) *string {
		if v == nil {
			return nil
		}
		return &v.Name
	}).(pulumi.StringPtrOutput)
}

// TokenSecretRef authenticates with Vault by presenting a token.
type ClusterIssuerSpecVaultAuthTokenSecretRef struct {
	// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
	Key *string `pulumi:"key"`
	// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
	Name string `pulumi:"name"`
}

// ClusterIssuerSpecVaultAuthTokenSecretRefInput is an input type that accepts ClusterIssuerSpecVaultAuthTokenSecretRefArgs and ClusterIssuerSpecVaultAuthTokenSecretRefOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecVaultAuthTokenSecretRefInput` via:
//
//	ClusterIssuerSpecVaultAuthTokenSecretRefArgs{...}
type ClusterIssuerSpecVaultAuthTokenSecretRefInput interface {
	pulumi.Input

	ToClusterIssuerSpecVaultAuthTokenSecretRefOutput() ClusterIssuerSpecVaultAuthTokenSecretRefOutput
	ToClusterIssuerSpecVaultAuthTokenSecretRefOutputWithContext(context.Context) ClusterIssuerSpecVaultAuthTokenSecretRefOutput
}

// TokenSecretRef authenticates with Vault by presenting a token.
type ClusterIssuerSpecVaultAuthTokenSecretRefArgs struct {
	// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
	Key pulumi.StringPtrInput `pulumi:"key"`
	// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
	Name pulumi.StringInput `pulumi:"name"`
}

func (ClusterIssuerSpecVaultAuthTokenSecretRefArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecVaultAuthTokenSecretRef)(nil)).Elem()
}

func (i ClusterIssuerSpecVaultAuthTokenSecretRefArgs) ToClusterIssuerSpecVaultAuthTokenSecretRefOutput() ClusterIssuerSpecVaultAuthTokenSecretRefOutput {
	return i.ToClusterIssuerSpecVaultAuthTokenSecretRefOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecVaultAuthTokenSecretRefArgs) ToClusterIssuerSpecVaultAuthTokenSecretRefOutputWithContext(ctx context.Context) ClusterIssuerSpecVaultAuthTokenSecretRefOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecVaultAuthTokenSecretRefOutput)
}

func (i ClusterIssuerSpecVaultAuthTokenSecretRefArgs) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecVaultAuthTokenSecretRef] {
	return pulumix.Output[ClusterIssuerSpecVaultAuthTokenSecretRef]{
		OutputState: i.ToClusterIssuerSpecVaultAuthTokenSecretRefOutputWithContext(ctx).OutputState,
	}
}

func (i ClusterIssuerSpecVaultAuthTokenSecretRefArgs) ToClusterIssuerSpecVaultAuthTokenSecretRefPtrOutput() ClusterIssuerSpecVaultAuthTokenSecretRefPtrOutput {
	return i.ToClusterIssuerSpecVaultAuthTokenSecretRefPtrOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecVaultAuthTokenSecretRefArgs) ToClusterIssuerSpecVaultAuthTokenSecretRefPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecVaultAuthTokenSecretRefPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecVaultAuthTokenSecretRefOutput).ToClusterIssuerSpecVaultAuthTokenSecretRefPtrOutputWithContext(ctx)
}

// ClusterIssuerSpecVaultAuthTokenSecretRefPtrInput is an input type that accepts ClusterIssuerSpecVaultAuthTokenSecretRefArgs, ClusterIssuerSpecVaultAuthTokenSecretRefPtr and ClusterIssuerSpecVaultAuthTokenSecretRefPtrOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecVaultAuthTokenSecretRefPtrInput` via:
//
//	        ClusterIssuerSpecVaultAuthTokenSecretRefArgs{...}
//
//	or:
//
//	        nil
type ClusterIssuerSpecVaultAuthTokenSecretRefPtrInput interface {
	pulumi.Input

	ToClusterIssuerSpecVaultAuthTokenSecretRefPtrOutput() ClusterIssuerSpecVaultAuthTokenSecretRefPtrOutput
	ToClusterIssuerSpecVaultAuthTokenSecretRefPtrOutputWithContext(context.Context) ClusterIssuerSpecVaultAuthTokenSecretRefPtrOutput
}

type clusterIssuerSpecVaultAuthTokenSecretRefPtrType ClusterIssuerSpecVaultAuthTokenSecretRefArgs

func ClusterIssuerSpecVaultAuthTokenSecretRefPtr(v *ClusterIssuerSpecVaultAuthTokenSecretRefArgs) ClusterIssuerSpecVaultAuthTokenSecretRefPtrInput {
	return (*clusterIssuerSpecVaultAuthTokenSecretRefPtrType)(v)
}

func (*clusterIssuerSpecVaultAuthTokenSecretRefPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecVaultAuthTokenSecretRef)(nil)).Elem()
}

func (i *clusterIssuerSpecVaultAuthTokenSecretRefPtrType) ToClusterIssuerSpecVaultAuthTokenSecretRefPtrOutput() ClusterIssuerSpecVaultAuthTokenSecretRefPtrOutput {
	return i.ToClusterIssuerSpecVaultAuthTokenSecretRefPtrOutputWithContext(context.Background())
}

func (i *clusterIssuerSpecVaultAuthTokenSecretRefPtrType) ToClusterIssuerSpecVaultAuthTokenSecretRefPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecVaultAuthTokenSecretRefPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecVaultAuthTokenSecretRefPtrOutput)
}

func (i *clusterIssuerSpecVaultAuthTokenSecretRefPtrType) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecVaultAuthTokenSecretRef] {
	return pulumix.Output[*ClusterIssuerSpecVaultAuthTokenSecretRef]{
		OutputState: i.ToClusterIssuerSpecVaultAuthTokenSecretRefPtrOutputWithContext(ctx).OutputState,
	}
}

// TokenSecretRef authenticates with Vault by presenting a token.
type ClusterIssuerSpecVaultAuthTokenSecretRefOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecVaultAuthTokenSecretRefOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecVaultAuthTokenSecretRef)(nil)).Elem()
}

func (o ClusterIssuerSpecVaultAuthTokenSecretRefOutput) ToClusterIssuerSpecVaultAuthTokenSecretRefOutput() ClusterIssuerSpecVaultAuthTokenSecretRefOutput {
	return o
}

func (o ClusterIssuerSpecVaultAuthTokenSecretRefOutput) ToClusterIssuerSpecVaultAuthTokenSecretRefOutputWithContext(ctx context.Context) ClusterIssuerSpecVaultAuthTokenSecretRefOutput {
	return o
}

func (o ClusterIssuerSpecVaultAuthTokenSecretRefOutput) ToClusterIssuerSpecVaultAuthTokenSecretRefPtrOutput() ClusterIssuerSpecVaultAuthTokenSecretRefPtrOutput {
	return o.ToClusterIssuerSpecVaultAuthTokenSecretRefPtrOutputWithContext(context.Background())
}

func (o ClusterIssuerSpecVaultAuthTokenSecretRefOutput) ToClusterIssuerSpecVaultAuthTokenSecretRefPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecVaultAuthTokenSecretRefPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v ClusterIssuerSpecVaultAuthTokenSecretRef) *ClusterIssuerSpecVaultAuthTokenSecretRef {
		return &v
	}).(ClusterIssuerSpecVaultAuthTokenSecretRefPtrOutput)
}

func (o ClusterIssuerSpecVaultAuthTokenSecretRefOutput) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecVaultAuthTokenSecretRef] {
	return pulumix.Output[ClusterIssuerSpecVaultAuthTokenSecretRef]{
		OutputState: o.OutputState,
	}
}

// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
func (o ClusterIssuerSpecVaultAuthTokenSecretRefOutput) Key() pulumi.StringPtrOutput {
	return o.ApplyT(func(v ClusterIssuerSpecVaultAuthTokenSecretRef) *string { return v.Key }).(pulumi.StringPtrOutput)
}

// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
func (o ClusterIssuerSpecVaultAuthTokenSecretRefOutput) Name() pulumi.StringOutput {
	return o.ApplyT(func(v ClusterIssuerSpecVaultAuthTokenSecretRef) string { return v.Name }).(pulumi.StringOutput)
}

type ClusterIssuerSpecVaultAuthTokenSecretRefPtrOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecVaultAuthTokenSecretRefPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecVaultAuthTokenSecretRef)(nil)).Elem()
}

func (o ClusterIssuerSpecVaultAuthTokenSecretRefPtrOutput) ToClusterIssuerSpecVaultAuthTokenSecretRefPtrOutput() ClusterIssuerSpecVaultAuthTokenSecretRefPtrOutput {
	return o
}

func (o ClusterIssuerSpecVaultAuthTokenSecretRefPtrOutput) ToClusterIssuerSpecVaultAuthTokenSecretRefPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecVaultAuthTokenSecretRefPtrOutput {
	return o
}

func (o ClusterIssuerSpecVaultAuthTokenSecretRefPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecVaultAuthTokenSecretRef] {
	return pulumix.Output[*ClusterIssuerSpecVaultAuthTokenSecretRef]{
		OutputState: o.OutputState,
	}
}

func (o ClusterIssuerSpecVaultAuthTokenSecretRefPtrOutput) Elem() ClusterIssuerSpecVaultAuthTokenSecretRefOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecVaultAuthTokenSecretRef) ClusterIssuerSpecVaultAuthTokenSecretRef {
		if v != nil {
			return *v
		}
		var ret ClusterIssuerSpecVaultAuthTokenSecretRef
		return ret
	}).(ClusterIssuerSpecVaultAuthTokenSecretRefOutput)
}

// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
func (o ClusterIssuerSpecVaultAuthTokenSecretRefPtrOutput) Key() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecVaultAuthTokenSecretRef) *string {
		if v == nil {
			return nil
		}
		return v.Key
	}).(pulumi.StringPtrOutput)
}

// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
func (o ClusterIssuerSpecVaultAuthTokenSecretRefPtrOutput) Name() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecVaultAuthTokenSecretRef) *string {
		if v == nil {
			return nil
		}
		return &v.Name
	}).(pulumi.StringPtrOutput)
}

// Venafi configures this issuer to sign certificates using a Venafi TPP or Venafi Cloud policy zone.
type ClusterIssuerSpecVenafi struct {
	// Cloud specifies the Venafi cloud configuration settings. Only one of TPP or Cloud may be specified.
	Cloud *ClusterIssuerSpecVenafiCloud `pulumi:"cloud"`
	// TPP specifies Trust Protection Platform configuration settings. Only one of TPP or Cloud may be specified.
	Tpp *ClusterIssuerSpecVenafiTpp `pulumi:"tpp"`
	// Zone is the Venafi Policy Zone to use for this issuer. All requests made to the Venafi platform will be restricted by the named zone policy. This field is required.
	Zone string `pulumi:"zone"`
}

// ClusterIssuerSpecVenafiInput is an input type that accepts ClusterIssuerSpecVenafiArgs and ClusterIssuerSpecVenafiOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecVenafiInput` via:
//
//	ClusterIssuerSpecVenafiArgs{...}
type ClusterIssuerSpecVenafiInput interface {
	pulumi.Input

	ToClusterIssuerSpecVenafiOutput() ClusterIssuerSpecVenafiOutput
	ToClusterIssuerSpecVenafiOutputWithContext(context.Context) ClusterIssuerSpecVenafiOutput
}

// Venafi configures this issuer to sign certificates using a Venafi TPP or Venafi Cloud policy zone.
type ClusterIssuerSpecVenafiArgs struct {
	// Cloud specifies the Venafi cloud configuration settings. Only one of TPP or Cloud may be specified.
	Cloud ClusterIssuerSpecVenafiCloudPtrInput `pulumi:"cloud"`
	// TPP specifies Trust Protection Platform configuration settings. Only one of TPP or Cloud may be specified.
	Tpp ClusterIssuerSpecVenafiTppPtrInput `pulumi:"tpp"`
	// Zone is the Venafi Policy Zone to use for this issuer. All requests made to the Venafi platform will be restricted by the named zone policy. This field is required.
	Zone pulumi.StringInput `pulumi:"zone"`
}

func (ClusterIssuerSpecVenafiArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecVenafi)(nil)).Elem()
}

func (i ClusterIssuerSpecVenafiArgs) ToClusterIssuerSpecVenafiOutput() ClusterIssuerSpecVenafiOutput {
	return i.ToClusterIssuerSpecVenafiOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecVenafiArgs) ToClusterIssuerSpecVenafiOutputWithContext(ctx context.Context) ClusterIssuerSpecVenafiOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecVenafiOutput)
}

func (i ClusterIssuerSpecVenafiArgs) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecVenafi] {
	return pulumix.Output[ClusterIssuerSpecVenafi]{
		OutputState: i.ToClusterIssuerSpecVenafiOutputWithContext(ctx).OutputState,
	}
}

func (i ClusterIssuerSpecVenafiArgs) ToClusterIssuerSpecVenafiPtrOutput() ClusterIssuerSpecVenafiPtrOutput {
	return i.ToClusterIssuerSpecVenafiPtrOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecVenafiArgs) ToClusterIssuerSpecVenafiPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecVenafiPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecVenafiOutput).ToClusterIssuerSpecVenafiPtrOutputWithContext(ctx)
}

// ClusterIssuerSpecVenafiPtrInput is an input type that accepts ClusterIssuerSpecVenafiArgs, ClusterIssuerSpecVenafiPtr and ClusterIssuerSpecVenafiPtrOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecVenafiPtrInput` via:
//
//	        ClusterIssuerSpecVenafiArgs{...}
//
//	or:
//
//	        nil
type ClusterIssuerSpecVenafiPtrInput interface {
	pulumi.Input

	ToClusterIssuerSpecVenafiPtrOutput() ClusterIssuerSpecVenafiPtrOutput
	ToClusterIssuerSpecVenafiPtrOutputWithContext(context.Context) ClusterIssuerSpecVenafiPtrOutput
}

type clusterIssuerSpecVenafiPtrType ClusterIssuerSpecVenafiArgs

func ClusterIssuerSpecVenafiPtr(v *ClusterIssuerSpecVenafiArgs) ClusterIssuerSpecVenafiPtrInput {
	return (*clusterIssuerSpecVenafiPtrType)(v)
}

func (*clusterIssuerSpecVenafiPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecVenafi)(nil)).Elem()
}

func (i *clusterIssuerSpecVenafiPtrType) ToClusterIssuerSpecVenafiPtrOutput() ClusterIssuerSpecVenafiPtrOutput {
	return i.ToClusterIssuerSpecVenafiPtrOutputWithContext(context.Background())
}

func (i *clusterIssuerSpecVenafiPtrType) ToClusterIssuerSpecVenafiPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecVenafiPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecVenafiPtrOutput)
}

func (i *clusterIssuerSpecVenafiPtrType) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecVenafi] {
	return pulumix.Output[*ClusterIssuerSpecVenafi]{
		OutputState: i.ToClusterIssuerSpecVenafiPtrOutputWithContext(ctx).OutputState,
	}
}

// Venafi configures this issuer to sign certificates using a Venafi TPP or Venafi Cloud policy zone.
type ClusterIssuerSpecVenafiOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecVenafiOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecVenafi)(nil)).Elem()
}

func (o ClusterIssuerSpecVenafiOutput) ToClusterIssuerSpecVenafiOutput() ClusterIssuerSpecVenafiOutput {
	return o
}

func (o ClusterIssuerSpecVenafiOutput) ToClusterIssuerSpecVenafiOutputWithContext(ctx context.Context) ClusterIssuerSpecVenafiOutput {
	return o
}

func (o ClusterIssuerSpecVenafiOutput) ToClusterIssuerSpecVenafiPtrOutput() ClusterIssuerSpecVenafiPtrOutput {
	return o.ToClusterIssuerSpecVenafiPtrOutputWithContext(context.Background())
}

func (o ClusterIssuerSpecVenafiOutput) ToClusterIssuerSpecVenafiPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecVenafiPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v ClusterIssuerSpecVenafi) *ClusterIssuerSpecVenafi {
		return &v
	}).(ClusterIssuerSpecVenafiPtrOutput)
}

func (o ClusterIssuerSpecVenafiOutput) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecVenafi] {
	return pulumix.Output[ClusterIssuerSpecVenafi]{
		OutputState: o.OutputState,
	}
}

// Cloud specifies the Venafi cloud configuration settings. Only one of TPP or Cloud may be specified.
func (o ClusterIssuerSpecVenafiOutput) Cloud() ClusterIssuerSpecVenafiCloudPtrOutput {
	return o.ApplyT(func(v ClusterIssuerSpecVenafi) *ClusterIssuerSpecVenafiCloud { return v.Cloud }).(ClusterIssuerSpecVenafiCloudPtrOutput)
}

// TPP specifies Trust Protection Platform configuration settings. Only one of TPP or Cloud may be specified.
func (o ClusterIssuerSpecVenafiOutput) Tpp() ClusterIssuerSpecVenafiTppPtrOutput {
	return o.ApplyT(func(v ClusterIssuerSpecVenafi) *ClusterIssuerSpecVenafiTpp { return v.Tpp }).(ClusterIssuerSpecVenafiTppPtrOutput)
}

// Zone is the Venafi Policy Zone to use for this issuer. All requests made to the Venafi platform will be restricted by the named zone policy. This field is required.
func (o ClusterIssuerSpecVenafiOutput) Zone() pulumi.StringOutput {
	return o.ApplyT(func(v ClusterIssuerSpecVenafi) string { return v.Zone }).(pulumi.StringOutput)
}

type ClusterIssuerSpecVenafiPtrOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecVenafiPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecVenafi)(nil)).Elem()
}

func (o ClusterIssuerSpecVenafiPtrOutput) ToClusterIssuerSpecVenafiPtrOutput() ClusterIssuerSpecVenafiPtrOutput {
	return o
}

func (o ClusterIssuerSpecVenafiPtrOutput) ToClusterIssuerSpecVenafiPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecVenafiPtrOutput {
	return o
}

func (o ClusterIssuerSpecVenafiPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecVenafi] {
	return pulumix.Output[*ClusterIssuerSpecVenafi]{
		OutputState: o.OutputState,
	}
}

func (o ClusterIssuerSpecVenafiPtrOutput) Elem() ClusterIssuerSpecVenafiOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecVenafi) ClusterIssuerSpecVenafi {
		if v != nil {
			return *v
		}
		var ret ClusterIssuerSpecVenafi
		return ret
	}).(ClusterIssuerSpecVenafiOutput)
}

// Cloud specifies the Venafi cloud configuration settings. Only one of TPP or Cloud may be specified.
func (o ClusterIssuerSpecVenafiPtrOutput) Cloud() ClusterIssuerSpecVenafiCloudPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecVenafi) *ClusterIssuerSpecVenafiCloud {
		if v == nil {
			return nil
		}
		return v.Cloud
	}).(ClusterIssuerSpecVenafiCloudPtrOutput)
}

// TPP specifies Trust Protection Platform configuration settings. Only one of TPP or Cloud may be specified.
func (o ClusterIssuerSpecVenafiPtrOutput) Tpp() ClusterIssuerSpecVenafiTppPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecVenafi) *ClusterIssuerSpecVenafiTpp {
		if v == nil {
			return nil
		}
		return v.Tpp
	}).(ClusterIssuerSpecVenafiTppPtrOutput)
}

// Zone is the Venafi Policy Zone to use for this issuer. All requests made to the Venafi platform will be restricted by the named zone policy. This field is required.
func (o ClusterIssuerSpecVenafiPtrOutput) Zone() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecVenafi) *string {
		if v == nil {
			return nil
		}
		return &v.Zone
	}).(pulumi.StringPtrOutput)
}

// Cloud specifies the Venafi cloud configuration settings. Only one of TPP or Cloud may be specified.
type ClusterIssuerSpecVenafiCloud struct {
	// APITokenSecretRef is a secret key selector for the Venafi Cloud API token.
	ApiTokenSecretRef ClusterIssuerSpecVenafiCloudApiTokenSecretRef `pulumi:"apiTokenSecretRef"`
	// URL is the base URL for Venafi Cloud. Defaults to "https://api.venafi.cloud/v1".
	Url *string `pulumi:"url"`
}

// ClusterIssuerSpecVenafiCloudInput is an input type that accepts ClusterIssuerSpecVenafiCloudArgs and ClusterIssuerSpecVenafiCloudOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecVenafiCloudInput` via:
//
//	ClusterIssuerSpecVenafiCloudArgs{...}
type ClusterIssuerSpecVenafiCloudInput interface {
	pulumi.Input

	ToClusterIssuerSpecVenafiCloudOutput() ClusterIssuerSpecVenafiCloudOutput
	ToClusterIssuerSpecVenafiCloudOutputWithContext(context.Context) ClusterIssuerSpecVenafiCloudOutput
}

// Cloud specifies the Venafi cloud configuration settings. Only one of TPP or Cloud may be specified.
type ClusterIssuerSpecVenafiCloudArgs struct {
	// APITokenSecretRef is a secret key selector for the Venafi Cloud API token.
	ApiTokenSecretRef ClusterIssuerSpecVenafiCloudApiTokenSecretRefInput `pulumi:"apiTokenSecretRef"`
	// URL is the base URL for Venafi Cloud. Defaults to "https://api.venafi.cloud/v1".
	Url pulumi.StringPtrInput `pulumi:"url"`
}

func (ClusterIssuerSpecVenafiCloudArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecVenafiCloud)(nil)).Elem()
}

func (i ClusterIssuerSpecVenafiCloudArgs) ToClusterIssuerSpecVenafiCloudOutput() ClusterIssuerSpecVenafiCloudOutput {
	return i.ToClusterIssuerSpecVenafiCloudOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecVenafiCloudArgs) ToClusterIssuerSpecVenafiCloudOutputWithContext(ctx context.Context) ClusterIssuerSpecVenafiCloudOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecVenafiCloudOutput)
}

func (i ClusterIssuerSpecVenafiCloudArgs) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecVenafiCloud] {
	return pulumix.Output[ClusterIssuerSpecVenafiCloud]{
		OutputState: i.ToClusterIssuerSpecVenafiCloudOutputWithContext(ctx).OutputState,
	}
}

func (i ClusterIssuerSpecVenafiCloudArgs) ToClusterIssuerSpecVenafiCloudPtrOutput() ClusterIssuerSpecVenafiCloudPtrOutput {
	return i.ToClusterIssuerSpecVenafiCloudPtrOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecVenafiCloudArgs) ToClusterIssuerSpecVenafiCloudPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecVenafiCloudPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecVenafiCloudOutput).ToClusterIssuerSpecVenafiCloudPtrOutputWithContext(ctx)
}

// ClusterIssuerSpecVenafiCloudPtrInput is an input type that accepts ClusterIssuerSpecVenafiCloudArgs, ClusterIssuerSpecVenafiCloudPtr and ClusterIssuerSpecVenafiCloudPtrOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecVenafiCloudPtrInput` via:
//
//	        ClusterIssuerSpecVenafiCloudArgs{...}
//
//	or:
//
//	        nil
type ClusterIssuerSpecVenafiCloudPtrInput interface {
	pulumi.Input

	ToClusterIssuerSpecVenafiCloudPtrOutput() ClusterIssuerSpecVenafiCloudPtrOutput
	ToClusterIssuerSpecVenafiCloudPtrOutputWithContext(context.Context) ClusterIssuerSpecVenafiCloudPtrOutput
}

type clusterIssuerSpecVenafiCloudPtrType ClusterIssuerSpecVenafiCloudArgs

func ClusterIssuerSpecVenafiCloudPtr(v *ClusterIssuerSpecVenafiCloudArgs) ClusterIssuerSpecVenafiCloudPtrInput {
	return (*clusterIssuerSpecVenafiCloudPtrType)(v)
}

func (*clusterIssuerSpecVenafiCloudPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecVenafiCloud)(nil)).Elem()
}

func (i *clusterIssuerSpecVenafiCloudPtrType) ToClusterIssuerSpecVenafiCloudPtrOutput() ClusterIssuerSpecVenafiCloudPtrOutput {
	return i.ToClusterIssuerSpecVenafiCloudPtrOutputWithContext(context.Background())
}

func (i *clusterIssuerSpecVenafiCloudPtrType) ToClusterIssuerSpecVenafiCloudPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecVenafiCloudPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecVenafiCloudPtrOutput)
}

func (i *clusterIssuerSpecVenafiCloudPtrType) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecVenafiCloud] {
	return pulumix.Output[*ClusterIssuerSpecVenafiCloud]{
		OutputState: i.ToClusterIssuerSpecVenafiCloudPtrOutputWithContext(ctx).OutputState,
	}
}

// Cloud specifies the Venafi cloud configuration settings. Only one of TPP or Cloud may be specified.
type ClusterIssuerSpecVenafiCloudOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecVenafiCloudOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecVenafiCloud)(nil)).Elem()
}

func (o ClusterIssuerSpecVenafiCloudOutput) ToClusterIssuerSpecVenafiCloudOutput() ClusterIssuerSpecVenafiCloudOutput {
	return o
}

func (o ClusterIssuerSpecVenafiCloudOutput) ToClusterIssuerSpecVenafiCloudOutputWithContext(ctx context.Context) ClusterIssuerSpecVenafiCloudOutput {
	return o
}

func (o ClusterIssuerSpecVenafiCloudOutput) ToClusterIssuerSpecVenafiCloudPtrOutput() ClusterIssuerSpecVenafiCloudPtrOutput {
	return o.ToClusterIssuerSpecVenafiCloudPtrOutputWithContext(context.Background())
}

func (o ClusterIssuerSpecVenafiCloudOutput) ToClusterIssuerSpecVenafiCloudPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecVenafiCloudPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v ClusterIssuerSpecVenafiCloud) *ClusterIssuerSpecVenafiCloud {
		return &v
	}).(ClusterIssuerSpecVenafiCloudPtrOutput)
}

func (o ClusterIssuerSpecVenafiCloudOutput) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecVenafiCloud] {
	return pulumix.Output[ClusterIssuerSpecVenafiCloud]{
		OutputState: o.OutputState,
	}
}

// APITokenSecretRef is a secret key selector for the Venafi Cloud API token.
func (o ClusterIssuerSpecVenafiCloudOutput) ApiTokenSecretRef() ClusterIssuerSpecVenafiCloudApiTokenSecretRefOutput {
	return o.ApplyT(func(v ClusterIssuerSpecVenafiCloud) ClusterIssuerSpecVenafiCloudApiTokenSecretRef {
		return v.ApiTokenSecretRef
	}).(ClusterIssuerSpecVenafiCloudApiTokenSecretRefOutput)
}

// URL is the base URL for Venafi Cloud. Defaults to "https://api.venafi.cloud/v1".
func (o ClusterIssuerSpecVenafiCloudOutput) Url() pulumi.StringPtrOutput {
	return o.ApplyT(func(v ClusterIssuerSpecVenafiCloud) *string { return v.Url }).(pulumi.StringPtrOutput)
}

type ClusterIssuerSpecVenafiCloudPtrOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecVenafiCloudPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecVenafiCloud)(nil)).Elem()
}

func (o ClusterIssuerSpecVenafiCloudPtrOutput) ToClusterIssuerSpecVenafiCloudPtrOutput() ClusterIssuerSpecVenafiCloudPtrOutput {
	return o
}

func (o ClusterIssuerSpecVenafiCloudPtrOutput) ToClusterIssuerSpecVenafiCloudPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecVenafiCloudPtrOutput {
	return o
}

func (o ClusterIssuerSpecVenafiCloudPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecVenafiCloud] {
	return pulumix.Output[*ClusterIssuerSpecVenafiCloud]{
		OutputState: o.OutputState,
	}
}

func (o ClusterIssuerSpecVenafiCloudPtrOutput) Elem() ClusterIssuerSpecVenafiCloudOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecVenafiCloud) ClusterIssuerSpecVenafiCloud {
		if v != nil {
			return *v
		}
		var ret ClusterIssuerSpecVenafiCloud
		return ret
	}).(ClusterIssuerSpecVenafiCloudOutput)
}

// APITokenSecretRef is a secret key selector for the Venafi Cloud API token.
func (o ClusterIssuerSpecVenafiCloudPtrOutput) ApiTokenSecretRef() ClusterIssuerSpecVenafiCloudApiTokenSecretRefPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecVenafiCloud) *ClusterIssuerSpecVenafiCloudApiTokenSecretRef {
		if v == nil {
			return nil
		}
		return &v.ApiTokenSecretRef
	}).(ClusterIssuerSpecVenafiCloudApiTokenSecretRefPtrOutput)
}

// URL is the base URL for Venafi Cloud. Defaults to "https://api.venafi.cloud/v1".
func (o ClusterIssuerSpecVenafiCloudPtrOutput) Url() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecVenafiCloud) *string {
		if v == nil {
			return nil
		}
		return v.Url
	}).(pulumi.StringPtrOutput)
}

// APITokenSecretRef is a secret key selector for the Venafi Cloud API token.
type ClusterIssuerSpecVenafiCloudApiTokenSecretRef struct {
	// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
	Key *string `pulumi:"key"`
	// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
	Name string `pulumi:"name"`
}

// ClusterIssuerSpecVenafiCloudApiTokenSecretRefInput is an input type that accepts ClusterIssuerSpecVenafiCloudApiTokenSecretRefArgs and ClusterIssuerSpecVenafiCloudApiTokenSecretRefOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecVenafiCloudApiTokenSecretRefInput` via:
//
//	ClusterIssuerSpecVenafiCloudApiTokenSecretRefArgs{...}
type ClusterIssuerSpecVenafiCloudApiTokenSecretRefInput interface {
	pulumi.Input

	ToClusterIssuerSpecVenafiCloudApiTokenSecretRefOutput() ClusterIssuerSpecVenafiCloudApiTokenSecretRefOutput
	ToClusterIssuerSpecVenafiCloudApiTokenSecretRefOutputWithContext(context.Context) ClusterIssuerSpecVenafiCloudApiTokenSecretRefOutput
}

// APITokenSecretRef is a secret key selector for the Venafi Cloud API token.
type ClusterIssuerSpecVenafiCloudApiTokenSecretRefArgs struct {
	// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
	Key pulumi.StringPtrInput `pulumi:"key"`
	// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
	Name pulumi.StringInput `pulumi:"name"`
}

func (ClusterIssuerSpecVenafiCloudApiTokenSecretRefArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecVenafiCloudApiTokenSecretRef)(nil)).Elem()
}

func (i ClusterIssuerSpecVenafiCloudApiTokenSecretRefArgs) ToClusterIssuerSpecVenafiCloudApiTokenSecretRefOutput() ClusterIssuerSpecVenafiCloudApiTokenSecretRefOutput {
	return i.ToClusterIssuerSpecVenafiCloudApiTokenSecretRefOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecVenafiCloudApiTokenSecretRefArgs) ToClusterIssuerSpecVenafiCloudApiTokenSecretRefOutputWithContext(ctx context.Context) ClusterIssuerSpecVenafiCloudApiTokenSecretRefOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecVenafiCloudApiTokenSecretRefOutput)
}

func (i ClusterIssuerSpecVenafiCloudApiTokenSecretRefArgs) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecVenafiCloudApiTokenSecretRef] {
	return pulumix.Output[ClusterIssuerSpecVenafiCloudApiTokenSecretRef]{
		OutputState: i.ToClusterIssuerSpecVenafiCloudApiTokenSecretRefOutputWithContext(ctx).OutputState,
	}
}

func (i ClusterIssuerSpecVenafiCloudApiTokenSecretRefArgs) ToClusterIssuerSpecVenafiCloudApiTokenSecretRefPtrOutput() ClusterIssuerSpecVenafiCloudApiTokenSecretRefPtrOutput {
	return i.ToClusterIssuerSpecVenafiCloudApiTokenSecretRefPtrOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecVenafiCloudApiTokenSecretRefArgs) ToClusterIssuerSpecVenafiCloudApiTokenSecretRefPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecVenafiCloudApiTokenSecretRefPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecVenafiCloudApiTokenSecretRefOutput).ToClusterIssuerSpecVenafiCloudApiTokenSecretRefPtrOutputWithContext(ctx)
}

// ClusterIssuerSpecVenafiCloudApiTokenSecretRefPtrInput is an input type that accepts ClusterIssuerSpecVenafiCloudApiTokenSecretRefArgs, ClusterIssuerSpecVenafiCloudApiTokenSecretRefPtr and ClusterIssuerSpecVenafiCloudApiTokenSecretRefPtrOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecVenafiCloudApiTokenSecretRefPtrInput` via:
//
//	        ClusterIssuerSpecVenafiCloudApiTokenSecretRefArgs{...}
//
//	or:
//
//	        nil
type ClusterIssuerSpecVenafiCloudApiTokenSecretRefPtrInput interface {
	pulumi.Input

	ToClusterIssuerSpecVenafiCloudApiTokenSecretRefPtrOutput() ClusterIssuerSpecVenafiCloudApiTokenSecretRefPtrOutput
	ToClusterIssuerSpecVenafiCloudApiTokenSecretRefPtrOutputWithContext(context.Context) ClusterIssuerSpecVenafiCloudApiTokenSecretRefPtrOutput
}

type clusterIssuerSpecVenafiCloudApiTokenSecretRefPtrType ClusterIssuerSpecVenafiCloudApiTokenSecretRefArgs

func ClusterIssuerSpecVenafiCloudApiTokenSecretRefPtr(v *ClusterIssuerSpecVenafiCloudApiTokenSecretRefArgs) ClusterIssuerSpecVenafiCloudApiTokenSecretRefPtrInput {
	return (*clusterIssuerSpecVenafiCloudApiTokenSecretRefPtrType)(v)
}

func (*clusterIssuerSpecVenafiCloudApiTokenSecretRefPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecVenafiCloudApiTokenSecretRef)(nil)).Elem()
}

func (i *clusterIssuerSpecVenafiCloudApiTokenSecretRefPtrType) ToClusterIssuerSpecVenafiCloudApiTokenSecretRefPtrOutput() ClusterIssuerSpecVenafiCloudApiTokenSecretRefPtrOutput {
	return i.ToClusterIssuerSpecVenafiCloudApiTokenSecretRefPtrOutputWithContext(context.Background())
}

func (i *clusterIssuerSpecVenafiCloudApiTokenSecretRefPtrType) ToClusterIssuerSpecVenafiCloudApiTokenSecretRefPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecVenafiCloudApiTokenSecretRefPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecVenafiCloudApiTokenSecretRefPtrOutput)
}

func (i *clusterIssuerSpecVenafiCloudApiTokenSecretRefPtrType) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecVenafiCloudApiTokenSecretRef] {
	return pulumix.Output[*ClusterIssuerSpecVenafiCloudApiTokenSecretRef]{
		OutputState: i.ToClusterIssuerSpecVenafiCloudApiTokenSecretRefPtrOutputWithContext(ctx).OutputState,
	}
}

// APITokenSecretRef is a secret key selector for the Venafi Cloud API token.
type ClusterIssuerSpecVenafiCloudApiTokenSecretRefOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecVenafiCloudApiTokenSecretRefOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecVenafiCloudApiTokenSecretRef)(nil)).Elem()
}

func (o ClusterIssuerSpecVenafiCloudApiTokenSecretRefOutput) ToClusterIssuerSpecVenafiCloudApiTokenSecretRefOutput() ClusterIssuerSpecVenafiCloudApiTokenSecretRefOutput {
	return o
}

func (o ClusterIssuerSpecVenafiCloudApiTokenSecretRefOutput) ToClusterIssuerSpecVenafiCloudApiTokenSecretRefOutputWithContext(ctx context.Context) ClusterIssuerSpecVenafiCloudApiTokenSecretRefOutput {
	return o
}

func (o ClusterIssuerSpecVenafiCloudApiTokenSecretRefOutput) ToClusterIssuerSpecVenafiCloudApiTokenSecretRefPtrOutput() ClusterIssuerSpecVenafiCloudApiTokenSecretRefPtrOutput {
	return o.ToClusterIssuerSpecVenafiCloudApiTokenSecretRefPtrOutputWithContext(context.Background())
}

func (o ClusterIssuerSpecVenafiCloudApiTokenSecretRefOutput) ToClusterIssuerSpecVenafiCloudApiTokenSecretRefPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecVenafiCloudApiTokenSecretRefPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v ClusterIssuerSpecVenafiCloudApiTokenSecretRef) *ClusterIssuerSpecVenafiCloudApiTokenSecretRef {
		return &v
	}).(ClusterIssuerSpecVenafiCloudApiTokenSecretRefPtrOutput)
}

func (o ClusterIssuerSpecVenafiCloudApiTokenSecretRefOutput) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecVenafiCloudApiTokenSecretRef] {
	return pulumix.Output[ClusterIssuerSpecVenafiCloudApiTokenSecretRef]{
		OutputState: o.OutputState,
	}
}

// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
func (o ClusterIssuerSpecVenafiCloudApiTokenSecretRefOutput) Key() pulumi.StringPtrOutput {
	return o.ApplyT(func(v ClusterIssuerSpecVenafiCloudApiTokenSecretRef) *string { return v.Key }).(pulumi.StringPtrOutput)
}

// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
func (o ClusterIssuerSpecVenafiCloudApiTokenSecretRefOutput) Name() pulumi.StringOutput {
	return o.ApplyT(func(v ClusterIssuerSpecVenafiCloudApiTokenSecretRef) string { return v.Name }).(pulumi.StringOutput)
}

type ClusterIssuerSpecVenafiCloudApiTokenSecretRefPtrOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecVenafiCloudApiTokenSecretRefPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecVenafiCloudApiTokenSecretRef)(nil)).Elem()
}

func (o ClusterIssuerSpecVenafiCloudApiTokenSecretRefPtrOutput) ToClusterIssuerSpecVenafiCloudApiTokenSecretRefPtrOutput() ClusterIssuerSpecVenafiCloudApiTokenSecretRefPtrOutput {
	return o
}

func (o ClusterIssuerSpecVenafiCloudApiTokenSecretRefPtrOutput) ToClusterIssuerSpecVenafiCloudApiTokenSecretRefPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecVenafiCloudApiTokenSecretRefPtrOutput {
	return o
}

func (o ClusterIssuerSpecVenafiCloudApiTokenSecretRefPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecVenafiCloudApiTokenSecretRef] {
	return pulumix.Output[*ClusterIssuerSpecVenafiCloudApiTokenSecretRef]{
		OutputState: o.OutputState,
	}
}

func (o ClusterIssuerSpecVenafiCloudApiTokenSecretRefPtrOutput) Elem() ClusterIssuerSpecVenafiCloudApiTokenSecretRefOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecVenafiCloudApiTokenSecretRef) ClusterIssuerSpecVenafiCloudApiTokenSecretRef {
		if v != nil {
			return *v
		}
		var ret ClusterIssuerSpecVenafiCloudApiTokenSecretRef
		return ret
	}).(ClusterIssuerSpecVenafiCloudApiTokenSecretRefOutput)
}

// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
func (o ClusterIssuerSpecVenafiCloudApiTokenSecretRefPtrOutput) Key() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecVenafiCloudApiTokenSecretRef) *string {
		if v == nil {
			return nil
		}
		return v.Key
	}).(pulumi.StringPtrOutput)
}

// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
func (o ClusterIssuerSpecVenafiCloudApiTokenSecretRefPtrOutput) Name() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecVenafiCloudApiTokenSecretRef) *string {
		if v == nil {
			return nil
		}
		return &v.Name
	}).(pulumi.StringPtrOutput)
}

// TPP specifies Trust Protection Platform configuration settings. Only one of TPP or Cloud may be specified.
type ClusterIssuerSpecVenafiTpp struct {
	// CABundle is a PEM encoded TLS certificate to use to verify connections to the TPP instance. If specified, system roots will not be used and the issuing CA for the TPP instance must be verifiable using the provided root. If not specified, the connection will be verified using the cert-manager system root certificates.
	CaBundle *string `pulumi:"caBundle"`
	// CredentialsRef is a reference to a Secret containing the username and password for the TPP server. The secret must contain two keys, 'username' and 'password'.
	CredentialsRef ClusterIssuerSpecVenafiTppCredentialsRef `pulumi:"credentialsRef"`
	// URL is the base URL for the vedsdk endpoint of the Venafi TPP instance, for example: "https://tpp.example.com/vedsdk".
	Url string `pulumi:"url"`
}

// ClusterIssuerSpecVenafiTppInput is an input type that accepts ClusterIssuerSpecVenafiTppArgs and ClusterIssuerSpecVenafiTppOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecVenafiTppInput` via:
//
//	ClusterIssuerSpecVenafiTppArgs{...}
type ClusterIssuerSpecVenafiTppInput interface {
	pulumi.Input

	ToClusterIssuerSpecVenafiTppOutput() ClusterIssuerSpecVenafiTppOutput
	ToClusterIssuerSpecVenafiTppOutputWithContext(context.Context) ClusterIssuerSpecVenafiTppOutput
}

// TPP specifies Trust Protection Platform configuration settings. Only one of TPP or Cloud may be specified.
type ClusterIssuerSpecVenafiTppArgs struct {
	// CABundle is a PEM encoded TLS certificate to use to verify connections to the TPP instance. If specified, system roots will not be used and the issuing CA for the TPP instance must be verifiable using the provided root. If not specified, the connection will be verified using the cert-manager system root certificates.
	CaBundle pulumi.StringPtrInput `pulumi:"caBundle"`
	// CredentialsRef is a reference to a Secret containing the username and password for the TPP server. The secret must contain two keys, 'username' and 'password'.
	CredentialsRef ClusterIssuerSpecVenafiTppCredentialsRefInput `pulumi:"credentialsRef"`
	// URL is the base URL for the vedsdk endpoint of the Venafi TPP instance, for example: "https://tpp.example.com/vedsdk".
	Url pulumi.StringInput `pulumi:"url"`
}

func (ClusterIssuerSpecVenafiTppArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecVenafiTpp)(nil)).Elem()
}

func (i ClusterIssuerSpecVenafiTppArgs) ToClusterIssuerSpecVenafiTppOutput() ClusterIssuerSpecVenafiTppOutput {
	return i.ToClusterIssuerSpecVenafiTppOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecVenafiTppArgs) ToClusterIssuerSpecVenafiTppOutputWithContext(ctx context.Context) ClusterIssuerSpecVenafiTppOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecVenafiTppOutput)
}

func (i ClusterIssuerSpecVenafiTppArgs) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecVenafiTpp] {
	return pulumix.Output[ClusterIssuerSpecVenafiTpp]{
		OutputState: i.ToClusterIssuerSpecVenafiTppOutputWithContext(ctx).OutputState,
	}
}

func (i ClusterIssuerSpecVenafiTppArgs) ToClusterIssuerSpecVenafiTppPtrOutput() ClusterIssuerSpecVenafiTppPtrOutput {
	return i.ToClusterIssuerSpecVenafiTppPtrOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecVenafiTppArgs) ToClusterIssuerSpecVenafiTppPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecVenafiTppPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecVenafiTppOutput).ToClusterIssuerSpecVenafiTppPtrOutputWithContext(ctx)
}

// ClusterIssuerSpecVenafiTppPtrInput is an input type that accepts ClusterIssuerSpecVenafiTppArgs, ClusterIssuerSpecVenafiTppPtr and ClusterIssuerSpecVenafiTppPtrOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecVenafiTppPtrInput` via:
//
//	        ClusterIssuerSpecVenafiTppArgs{...}
//
//	or:
//
//	        nil
type ClusterIssuerSpecVenafiTppPtrInput interface {
	pulumi.Input

	ToClusterIssuerSpecVenafiTppPtrOutput() ClusterIssuerSpecVenafiTppPtrOutput
	ToClusterIssuerSpecVenafiTppPtrOutputWithContext(context.Context) ClusterIssuerSpecVenafiTppPtrOutput
}

type clusterIssuerSpecVenafiTppPtrType ClusterIssuerSpecVenafiTppArgs

func ClusterIssuerSpecVenafiTppPtr(v *ClusterIssuerSpecVenafiTppArgs) ClusterIssuerSpecVenafiTppPtrInput {
	return (*clusterIssuerSpecVenafiTppPtrType)(v)
}

func (*clusterIssuerSpecVenafiTppPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecVenafiTpp)(nil)).Elem()
}

func (i *clusterIssuerSpecVenafiTppPtrType) ToClusterIssuerSpecVenafiTppPtrOutput() ClusterIssuerSpecVenafiTppPtrOutput {
	return i.ToClusterIssuerSpecVenafiTppPtrOutputWithContext(context.Background())
}

func (i *clusterIssuerSpecVenafiTppPtrType) ToClusterIssuerSpecVenafiTppPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecVenafiTppPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecVenafiTppPtrOutput)
}

func (i *clusterIssuerSpecVenafiTppPtrType) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecVenafiTpp] {
	return pulumix.Output[*ClusterIssuerSpecVenafiTpp]{
		OutputState: i.ToClusterIssuerSpecVenafiTppPtrOutputWithContext(ctx).OutputState,
	}
}

// TPP specifies Trust Protection Platform configuration settings. Only one of TPP or Cloud may be specified.
type ClusterIssuerSpecVenafiTppOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecVenafiTppOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecVenafiTpp)(nil)).Elem()
}

func (o ClusterIssuerSpecVenafiTppOutput) ToClusterIssuerSpecVenafiTppOutput() ClusterIssuerSpecVenafiTppOutput {
	return o
}

func (o ClusterIssuerSpecVenafiTppOutput) ToClusterIssuerSpecVenafiTppOutputWithContext(ctx context.Context) ClusterIssuerSpecVenafiTppOutput {
	return o
}

func (o ClusterIssuerSpecVenafiTppOutput) ToClusterIssuerSpecVenafiTppPtrOutput() ClusterIssuerSpecVenafiTppPtrOutput {
	return o.ToClusterIssuerSpecVenafiTppPtrOutputWithContext(context.Background())
}

func (o ClusterIssuerSpecVenafiTppOutput) ToClusterIssuerSpecVenafiTppPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecVenafiTppPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v ClusterIssuerSpecVenafiTpp) *ClusterIssuerSpecVenafiTpp {
		return &v
	}).(ClusterIssuerSpecVenafiTppPtrOutput)
}

func (o ClusterIssuerSpecVenafiTppOutput) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecVenafiTpp] {
	return pulumix.Output[ClusterIssuerSpecVenafiTpp]{
		OutputState: o.OutputState,
	}
}

// CABundle is a PEM encoded TLS certificate to use to verify connections to the TPP instance. If specified, system roots will not be used and the issuing CA for the TPP instance must be verifiable using the provided root. If not specified, the connection will be verified using the cert-manager system root certificates.
func (o ClusterIssuerSpecVenafiTppOutput) CaBundle() pulumi.StringPtrOutput {
	return o.ApplyT(func(v ClusterIssuerSpecVenafiTpp) *string { return v.CaBundle }).(pulumi.StringPtrOutput)
}

// CredentialsRef is a reference to a Secret containing the username and password for the TPP server. The secret must contain two keys, 'username' and 'password'.
func (o ClusterIssuerSpecVenafiTppOutput) CredentialsRef() ClusterIssuerSpecVenafiTppCredentialsRefOutput {
	return o.ApplyT(func(v ClusterIssuerSpecVenafiTpp) ClusterIssuerSpecVenafiTppCredentialsRef { return v.CredentialsRef }).(ClusterIssuerSpecVenafiTppCredentialsRefOutput)
}

// URL is the base URL for the vedsdk endpoint of the Venafi TPP instance, for example: "https://tpp.example.com/vedsdk".
func (o ClusterIssuerSpecVenafiTppOutput) Url() pulumi.StringOutput {
	return o.ApplyT(func(v ClusterIssuerSpecVenafiTpp) string { return v.Url }).(pulumi.StringOutput)
}

type ClusterIssuerSpecVenafiTppPtrOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecVenafiTppPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecVenafiTpp)(nil)).Elem()
}

func (o ClusterIssuerSpecVenafiTppPtrOutput) ToClusterIssuerSpecVenafiTppPtrOutput() ClusterIssuerSpecVenafiTppPtrOutput {
	return o
}

func (o ClusterIssuerSpecVenafiTppPtrOutput) ToClusterIssuerSpecVenafiTppPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecVenafiTppPtrOutput {
	return o
}

func (o ClusterIssuerSpecVenafiTppPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecVenafiTpp] {
	return pulumix.Output[*ClusterIssuerSpecVenafiTpp]{
		OutputState: o.OutputState,
	}
}

func (o ClusterIssuerSpecVenafiTppPtrOutput) Elem() ClusterIssuerSpecVenafiTppOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecVenafiTpp) ClusterIssuerSpecVenafiTpp {
		if v != nil {
			return *v
		}
		var ret ClusterIssuerSpecVenafiTpp
		return ret
	}).(ClusterIssuerSpecVenafiTppOutput)
}

// CABundle is a PEM encoded TLS certificate to use to verify connections to the TPP instance. If specified, system roots will not be used and the issuing CA for the TPP instance must be verifiable using the provided root. If not specified, the connection will be verified using the cert-manager system root certificates.
func (o ClusterIssuerSpecVenafiTppPtrOutput) CaBundle() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecVenafiTpp) *string {
		if v == nil {
			return nil
		}
		return v.CaBundle
	}).(pulumi.StringPtrOutput)
}

// CredentialsRef is a reference to a Secret containing the username and password for the TPP server. The secret must contain two keys, 'username' and 'password'.
func (o ClusterIssuerSpecVenafiTppPtrOutput) CredentialsRef() ClusterIssuerSpecVenafiTppCredentialsRefPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecVenafiTpp) *ClusterIssuerSpecVenafiTppCredentialsRef {
		if v == nil {
			return nil
		}
		return &v.CredentialsRef
	}).(ClusterIssuerSpecVenafiTppCredentialsRefPtrOutput)
}

// URL is the base URL for the vedsdk endpoint of the Venafi TPP instance, for example: "https://tpp.example.com/vedsdk".
func (o ClusterIssuerSpecVenafiTppPtrOutput) Url() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecVenafiTpp) *string {
		if v == nil {
			return nil
		}
		return &v.Url
	}).(pulumi.StringPtrOutput)
}

// CredentialsRef is a reference to a Secret containing the username and password for the TPP server. The secret must contain two keys, 'username' and 'password'.
type ClusterIssuerSpecVenafiTppCredentialsRef struct {
	// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
	Name string `pulumi:"name"`
}

// ClusterIssuerSpecVenafiTppCredentialsRefInput is an input type that accepts ClusterIssuerSpecVenafiTppCredentialsRefArgs and ClusterIssuerSpecVenafiTppCredentialsRefOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecVenafiTppCredentialsRefInput` via:
//
//	ClusterIssuerSpecVenafiTppCredentialsRefArgs{...}
type ClusterIssuerSpecVenafiTppCredentialsRefInput interface {
	pulumi.Input

	ToClusterIssuerSpecVenafiTppCredentialsRefOutput() ClusterIssuerSpecVenafiTppCredentialsRefOutput
	ToClusterIssuerSpecVenafiTppCredentialsRefOutputWithContext(context.Context) ClusterIssuerSpecVenafiTppCredentialsRefOutput
}

// CredentialsRef is a reference to a Secret containing the username and password for the TPP server. The secret must contain two keys, 'username' and 'password'.
type ClusterIssuerSpecVenafiTppCredentialsRefArgs struct {
	// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
	Name pulumi.StringInput `pulumi:"name"`
}

func (ClusterIssuerSpecVenafiTppCredentialsRefArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecVenafiTppCredentialsRef)(nil)).Elem()
}

func (i ClusterIssuerSpecVenafiTppCredentialsRefArgs) ToClusterIssuerSpecVenafiTppCredentialsRefOutput() ClusterIssuerSpecVenafiTppCredentialsRefOutput {
	return i.ToClusterIssuerSpecVenafiTppCredentialsRefOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecVenafiTppCredentialsRefArgs) ToClusterIssuerSpecVenafiTppCredentialsRefOutputWithContext(ctx context.Context) ClusterIssuerSpecVenafiTppCredentialsRefOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecVenafiTppCredentialsRefOutput)
}

func (i ClusterIssuerSpecVenafiTppCredentialsRefArgs) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecVenafiTppCredentialsRef] {
	return pulumix.Output[ClusterIssuerSpecVenafiTppCredentialsRef]{
		OutputState: i.ToClusterIssuerSpecVenafiTppCredentialsRefOutputWithContext(ctx).OutputState,
	}
}

func (i ClusterIssuerSpecVenafiTppCredentialsRefArgs) ToClusterIssuerSpecVenafiTppCredentialsRefPtrOutput() ClusterIssuerSpecVenafiTppCredentialsRefPtrOutput {
	return i.ToClusterIssuerSpecVenafiTppCredentialsRefPtrOutputWithContext(context.Background())
}

func (i ClusterIssuerSpecVenafiTppCredentialsRefArgs) ToClusterIssuerSpecVenafiTppCredentialsRefPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecVenafiTppCredentialsRefPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecVenafiTppCredentialsRefOutput).ToClusterIssuerSpecVenafiTppCredentialsRefPtrOutputWithContext(ctx)
}

// ClusterIssuerSpecVenafiTppCredentialsRefPtrInput is an input type that accepts ClusterIssuerSpecVenafiTppCredentialsRefArgs, ClusterIssuerSpecVenafiTppCredentialsRefPtr and ClusterIssuerSpecVenafiTppCredentialsRefPtrOutput values.
// You can construct a concrete instance of `ClusterIssuerSpecVenafiTppCredentialsRefPtrInput` via:
//
//	        ClusterIssuerSpecVenafiTppCredentialsRefArgs{...}
//
//	or:
//
//	        nil
type ClusterIssuerSpecVenafiTppCredentialsRefPtrInput interface {
	pulumi.Input

	ToClusterIssuerSpecVenafiTppCredentialsRefPtrOutput() ClusterIssuerSpecVenafiTppCredentialsRefPtrOutput
	ToClusterIssuerSpecVenafiTppCredentialsRefPtrOutputWithContext(context.Context) ClusterIssuerSpecVenafiTppCredentialsRefPtrOutput
}

type clusterIssuerSpecVenafiTppCredentialsRefPtrType ClusterIssuerSpecVenafiTppCredentialsRefArgs

func ClusterIssuerSpecVenafiTppCredentialsRefPtr(v *ClusterIssuerSpecVenafiTppCredentialsRefArgs) ClusterIssuerSpecVenafiTppCredentialsRefPtrInput {
	return (*clusterIssuerSpecVenafiTppCredentialsRefPtrType)(v)
}

func (*clusterIssuerSpecVenafiTppCredentialsRefPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecVenafiTppCredentialsRef)(nil)).Elem()
}

func (i *clusterIssuerSpecVenafiTppCredentialsRefPtrType) ToClusterIssuerSpecVenafiTppCredentialsRefPtrOutput() ClusterIssuerSpecVenafiTppCredentialsRefPtrOutput {
	return i.ToClusterIssuerSpecVenafiTppCredentialsRefPtrOutputWithContext(context.Background())
}

func (i *clusterIssuerSpecVenafiTppCredentialsRefPtrType) ToClusterIssuerSpecVenafiTppCredentialsRefPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecVenafiTppCredentialsRefPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerSpecVenafiTppCredentialsRefPtrOutput)
}

func (i *clusterIssuerSpecVenafiTppCredentialsRefPtrType) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecVenafiTppCredentialsRef] {
	return pulumix.Output[*ClusterIssuerSpecVenafiTppCredentialsRef]{
		OutputState: i.ToClusterIssuerSpecVenafiTppCredentialsRefPtrOutputWithContext(ctx).OutputState,
	}
}

// CredentialsRef is a reference to a Secret containing the username and password for the TPP server. The secret must contain two keys, 'username' and 'password'.
type ClusterIssuerSpecVenafiTppCredentialsRefOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecVenafiTppCredentialsRefOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerSpecVenafiTppCredentialsRef)(nil)).Elem()
}

func (o ClusterIssuerSpecVenafiTppCredentialsRefOutput) ToClusterIssuerSpecVenafiTppCredentialsRefOutput() ClusterIssuerSpecVenafiTppCredentialsRefOutput {
	return o
}

func (o ClusterIssuerSpecVenafiTppCredentialsRefOutput) ToClusterIssuerSpecVenafiTppCredentialsRefOutputWithContext(ctx context.Context) ClusterIssuerSpecVenafiTppCredentialsRefOutput {
	return o
}

func (o ClusterIssuerSpecVenafiTppCredentialsRefOutput) ToClusterIssuerSpecVenafiTppCredentialsRefPtrOutput() ClusterIssuerSpecVenafiTppCredentialsRefPtrOutput {
	return o.ToClusterIssuerSpecVenafiTppCredentialsRefPtrOutputWithContext(context.Background())
}

func (o ClusterIssuerSpecVenafiTppCredentialsRefOutput) ToClusterIssuerSpecVenafiTppCredentialsRefPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecVenafiTppCredentialsRefPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v ClusterIssuerSpecVenafiTppCredentialsRef) *ClusterIssuerSpecVenafiTppCredentialsRef {
		return &v
	}).(ClusterIssuerSpecVenafiTppCredentialsRefPtrOutput)
}

func (o ClusterIssuerSpecVenafiTppCredentialsRefOutput) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerSpecVenafiTppCredentialsRef] {
	return pulumix.Output[ClusterIssuerSpecVenafiTppCredentialsRef]{
		OutputState: o.OutputState,
	}
}

// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
func (o ClusterIssuerSpecVenafiTppCredentialsRefOutput) Name() pulumi.StringOutput {
	return o.ApplyT(func(v ClusterIssuerSpecVenafiTppCredentialsRef) string { return v.Name }).(pulumi.StringOutput)
}

type ClusterIssuerSpecVenafiTppCredentialsRefPtrOutput struct{ *pulumi.OutputState }

func (ClusterIssuerSpecVenafiTppCredentialsRefPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerSpecVenafiTppCredentialsRef)(nil)).Elem()
}

func (o ClusterIssuerSpecVenafiTppCredentialsRefPtrOutput) ToClusterIssuerSpecVenafiTppCredentialsRefPtrOutput() ClusterIssuerSpecVenafiTppCredentialsRefPtrOutput {
	return o
}

func (o ClusterIssuerSpecVenafiTppCredentialsRefPtrOutput) ToClusterIssuerSpecVenafiTppCredentialsRefPtrOutputWithContext(ctx context.Context) ClusterIssuerSpecVenafiTppCredentialsRefPtrOutput {
	return o
}

func (o ClusterIssuerSpecVenafiTppCredentialsRefPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerSpecVenafiTppCredentialsRef] {
	return pulumix.Output[*ClusterIssuerSpecVenafiTppCredentialsRef]{
		OutputState: o.OutputState,
	}
}

func (o ClusterIssuerSpecVenafiTppCredentialsRefPtrOutput) Elem() ClusterIssuerSpecVenafiTppCredentialsRefOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecVenafiTppCredentialsRef) ClusterIssuerSpecVenafiTppCredentialsRef {
		if v != nil {
			return *v
		}
		var ret ClusterIssuerSpecVenafiTppCredentialsRef
		return ret
	}).(ClusterIssuerSpecVenafiTppCredentialsRefOutput)
}

// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
func (o ClusterIssuerSpecVenafiTppCredentialsRefPtrOutput) Name() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerSpecVenafiTppCredentialsRef) *string {
		if v == nil {
			return nil
		}
		return &v.Name
	}).(pulumi.StringPtrOutput)
}

// Status of the ClusterIssuer. This is set and managed automatically.
type ClusterIssuerStatus struct {
	// ACME specific status options. This field should only be set if the Issuer is configured to use an ACME server to issue certificates.
	Acme *ClusterIssuerStatusAcme `pulumi:"acme"`
	// List of status conditions to indicate the status of a CertificateRequest. Known condition types are `Ready`.
	Conditions []ClusterIssuerStatusConditions `pulumi:"conditions"`
}

// ClusterIssuerStatusInput is an input type that accepts ClusterIssuerStatusArgs and ClusterIssuerStatusOutput values.
// You can construct a concrete instance of `ClusterIssuerStatusInput` via:
//
//	ClusterIssuerStatusArgs{...}
type ClusterIssuerStatusInput interface {
	pulumi.Input

	ToClusterIssuerStatusOutput() ClusterIssuerStatusOutput
	ToClusterIssuerStatusOutputWithContext(context.Context) ClusterIssuerStatusOutput
}

// Status of the ClusterIssuer. This is set and managed automatically.
type ClusterIssuerStatusArgs struct {
	// ACME specific status options. This field should only be set if the Issuer is configured to use an ACME server to issue certificates.
	Acme ClusterIssuerStatusAcmePtrInput `pulumi:"acme"`
	// List of status conditions to indicate the status of a CertificateRequest. Known condition types are `Ready`.
	Conditions ClusterIssuerStatusConditionsArrayInput `pulumi:"conditions"`
}

func (ClusterIssuerStatusArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerStatus)(nil)).Elem()
}

func (i ClusterIssuerStatusArgs) ToClusterIssuerStatusOutput() ClusterIssuerStatusOutput {
	return i.ToClusterIssuerStatusOutputWithContext(context.Background())
}

func (i ClusterIssuerStatusArgs) ToClusterIssuerStatusOutputWithContext(ctx context.Context) ClusterIssuerStatusOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerStatusOutput)
}

func (i ClusterIssuerStatusArgs) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerStatus] {
	return pulumix.Output[ClusterIssuerStatus]{
		OutputState: i.ToClusterIssuerStatusOutputWithContext(ctx).OutputState,
	}
}

func (i ClusterIssuerStatusArgs) ToClusterIssuerStatusPtrOutput() ClusterIssuerStatusPtrOutput {
	return i.ToClusterIssuerStatusPtrOutputWithContext(context.Background())
}

func (i ClusterIssuerStatusArgs) ToClusterIssuerStatusPtrOutputWithContext(ctx context.Context) ClusterIssuerStatusPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerStatusOutput).ToClusterIssuerStatusPtrOutputWithContext(ctx)
}

// ClusterIssuerStatusPtrInput is an input type that accepts ClusterIssuerStatusArgs, ClusterIssuerStatusPtr and ClusterIssuerStatusPtrOutput values.
// You can construct a concrete instance of `ClusterIssuerStatusPtrInput` via:
//
//	        ClusterIssuerStatusArgs{...}
//
//	or:
//
//	        nil
type ClusterIssuerStatusPtrInput interface {
	pulumi.Input

	ToClusterIssuerStatusPtrOutput() ClusterIssuerStatusPtrOutput
	ToClusterIssuerStatusPtrOutputWithContext(context.Context) ClusterIssuerStatusPtrOutput
}

type clusterIssuerStatusPtrType ClusterIssuerStatusArgs

func ClusterIssuerStatusPtr(v *ClusterIssuerStatusArgs) ClusterIssuerStatusPtrInput {
	return (*clusterIssuerStatusPtrType)(v)
}

func (*clusterIssuerStatusPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerStatus)(nil)).Elem()
}

func (i *clusterIssuerStatusPtrType) ToClusterIssuerStatusPtrOutput() ClusterIssuerStatusPtrOutput {
	return i.ToClusterIssuerStatusPtrOutputWithContext(context.Background())
}

func (i *clusterIssuerStatusPtrType) ToClusterIssuerStatusPtrOutputWithContext(ctx context.Context) ClusterIssuerStatusPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerStatusPtrOutput)
}

func (i *clusterIssuerStatusPtrType) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerStatus] {
	return pulumix.Output[*ClusterIssuerStatus]{
		OutputState: i.ToClusterIssuerStatusPtrOutputWithContext(ctx).OutputState,
	}
}

// Status of the ClusterIssuer. This is set and managed automatically.
type ClusterIssuerStatusOutput struct{ *pulumi.OutputState }

func (ClusterIssuerStatusOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerStatus)(nil)).Elem()
}

func (o ClusterIssuerStatusOutput) ToClusterIssuerStatusOutput() ClusterIssuerStatusOutput {
	return o
}

func (o ClusterIssuerStatusOutput) ToClusterIssuerStatusOutputWithContext(ctx context.Context) ClusterIssuerStatusOutput {
	return o
}

func (o ClusterIssuerStatusOutput) ToClusterIssuerStatusPtrOutput() ClusterIssuerStatusPtrOutput {
	return o.ToClusterIssuerStatusPtrOutputWithContext(context.Background())
}

func (o ClusterIssuerStatusOutput) ToClusterIssuerStatusPtrOutputWithContext(ctx context.Context) ClusterIssuerStatusPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v ClusterIssuerStatus) *ClusterIssuerStatus {
		return &v
	}).(ClusterIssuerStatusPtrOutput)
}

func (o ClusterIssuerStatusOutput) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerStatus] {
	return pulumix.Output[ClusterIssuerStatus]{
		OutputState: o.OutputState,
	}
}

// ACME specific status options. This field should only be set if the Issuer is configured to use an ACME server to issue certificates.
func (o ClusterIssuerStatusOutput) Acme() ClusterIssuerStatusAcmePtrOutput {
	return o.ApplyT(func(v ClusterIssuerStatus) *ClusterIssuerStatusAcme { return v.Acme }).(ClusterIssuerStatusAcmePtrOutput)
}

// List of status conditions to indicate the status of a CertificateRequest. Known condition types are `Ready`.
func (o ClusterIssuerStatusOutput) Conditions() ClusterIssuerStatusConditionsArrayOutput {
	return o.ApplyT(func(v ClusterIssuerStatus) []ClusterIssuerStatusConditions { return v.Conditions }).(ClusterIssuerStatusConditionsArrayOutput)
}

type ClusterIssuerStatusPtrOutput struct{ *pulumi.OutputState }

func (ClusterIssuerStatusPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerStatus)(nil)).Elem()
}

func (o ClusterIssuerStatusPtrOutput) ToClusterIssuerStatusPtrOutput() ClusterIssuerStatusPtrOutput {
	return o
}

func (o ClusterIssuerStatusPtrOutput) ToClusterIssuerStatusPtrOutputWithContext(ctx context.Context) ClusterIssuerStatusPtrOutput {
	return o
}

func (o ClusterIssuerStatusPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerStatus] {
	return pulumix.Output[*ClusterIssuerStatus]{
		OutputState: o.OutputState,
	}
}

func (o ClusterIssuerStatusPtrOutput) Elem() ClusterIssuerStatusOutput {
	return o.ApplyT(func(v *ClusterIssuerStatus) ClusterIssuerStatus {
		if v != nil {
			return *v
		}
		var ret ClusterIssuerStatus
		return ret
	}).(ClusterIssuerStatusOutput)
}

// ACME specific status options. This field should only be set if the Issuer is configured to use an ACME server to issue certificates.
func (o ClusterIssuerStatusPtrOutput) Acme() ClusterIssuerStatusAcmePtrOutput {
	return o.ApplyT(func(v *ClusterIssuerStatus) *ClusterIssuerStatusAcme {
		if v == nil {
			return nil
		}
		return v.Acme
	}).(ClusterIssuerStatusAcmePtrOutput)
}

// List of status conditions to indicate the status of a CertificateRequest. Known condition types are `Ready`.
func (o ClusterIssuerStatusPtrOutput) Conditions() ClusterIssuerStatusConditionsArrayOutput {
	return o.ApplyT(func(v *ClusterIssuerStatus) []ClusterIssuerStatusConditions {
		if v == nil {
			return nil
		}
		return v.Conditions
	}).(ClusterIssuerStatusConditionsArrayOutput)
}

// ACME specific status options. This field should only be set if the Issuer is configured to use an ACME server to issue certificates.
type ClusterIssuerStatusAcme struct {
	// LastRegisteredEmail is the email associated with the latest registered ACME account, in order to track changes made to registered account associated with the  Issuer
	LastRegisteredEmail *string `pulumi:"lastRegisteredEmail"`
	// URI is the unique account identifier, which can also be used to retrieve account details from the CA
	Uri *string `pulumi:"uri"`
}

// ClusterIssuerStatusAcmeInput is an input type that accepts ClusterIssuerStatusAcmeArgs and ClusterIssuerStatusAcmeOutput values.
// You can construct a concrete instance of `ClusterIssuerStatusAcmeInput` via:
//
//	ClusterIssuerStatusAcmeArgs{...}
type ClusterIssuerStatusAcmeInput interface {
	pulumi.Input

	ToClusterIssuerStatusAcmeOutput() ClusterIssuerStatusAcmeOutput
	ToClusterIssuerStatusAcmeOutputWithContext(context.Context) ClusterIssuerStatusAcmeOutput
}

// ACME specific status options. This field should only be set if the Issuer is configured to use an ACME server to issue certificates.
type ClusterIssuerStatusAcmeArgs struct {
	// LastRegisteredEmail is the email associated with the latest registered ACME account, in order to track changes made to registered account associated with the  Issuer
	LastRegisteredEmail pulumi.StringPtrInput `pulumi:"lastRegisteredEmail"`
	// URI is the unique account identifier, which can also be used to retrieve account details from the CA
	Uri pulumi.StringPtrInput `pulumi:"uri"`
}

func (ClusterIssuerStatusAcmeArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerStatusAcme)(nil)).Elem()
}

func (i ClusterIssuerStatusAcmeArgs) ToClusterIssuerStatusAcmeOutput() ClusterIssuerStatusAcmeOutput {
	return i.ToClusterIssuerStatusAcmeOutputWithContext(context.Background())
}

func (i ClusterIssuerStatusAcmeArgs) ToClusterIssuerStatusAcmeOutputWithContext(ctx context.Context) ClusterIssuerStatusAcmeOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerStatusAcmeOutput)
}

func (i ClusterIssuerStatusAcmeArgs) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerStatusAcme] {
	return pulumix.Output[ClusterIssuerStatusAcme]{
		OutputState: i.ToClusterIssuerStatusAcmeOutputWithContext(ctx).OutputState,
	}
}

func (i ClusterIssuerStatusAcmeArgs) ToClusterIssuerStatusAcmePtrOutput() ClusterIssuerStatusAcmePtrOutput {
	return i.ToClusterIssuerStatusAcmePtrOutputWithContext(context.Background())
}

func (i ClusterIssuerStatusAcmeArgs) ToClusterIssuerStatusAcmePtrOutputWithContext(ctx context.Context) ClusterIssuerStatusAcmePtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerStatusAcmeOutput).ToClusterIssuerStatusAcmePtrOutputWithContext(ctx)
}

// ClusterIssuerStatusAcmePtrInput is an input type that accepts ClusterIssuerStatusAcmeArgs, ClusterIssuerStatusAcmePtr and ClusterIssuerStatusAcmePtrOutput values.
// You can construct a concrete instance of `ClusterIssuerStatusAcmePtrInput` via:
//
//	        ClusterIssuerStatusAcmeArgs{...}
//
//	or:
//
//	        nil
type ClusterIssuerStatusAcmePtrInput interface {
	pulumi.Input

	ToClusterIssuerStatusAcmePtrOutput() ClusterIssuerStatusAcmePtrOutput
	ToClusterIssuerStatusAcmePtrOutputWithContext(context.Context) ClusterIssuerStatusAcmePtrOutput
}

type clusterIssuerStatusAcmePtrType ClusterIssuerStatusAcmeArgs

func ClusterIssuerStatusAcmePtr(v *ClusterIssuerStatusAcmeArgs) ClusterIssuerStatusAcmePtrInput {
	return (*clusterIssuerStatusAcmePtrType)(v)
}

func (*clusterIssuerStatusAcmePtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerStatusAcme)(nil)).Elem()
}

func (i *clusterIssuerStatusAcmePtrType) ToClusterIssuerStatusAcmePtrOutput() ClusterIssuerStatusAcmePtrOutput {
	return i.ToClusterIssuerStatusAcmePtrOutputWithContext(context.Background())
}

func (i *clusterIssuerStatusAcmePtrType) ToClusterIssuerStatusAcmePtrOutputWithContext(ctx context.Context) ClusterIssuerStatusAcmePtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerStatusAcmePtrOutput)
}

func (i *clusterIssuerStatusAcmePtrType) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerStatusAcme] {
	return pulumix.Output[*ClusterIssuerStatusAcme]{
		OutputState: i.ToClusterIssuerStatusAcmePtrOutputWithContext(ctx).OutputState,
	}
}

// ACME specific status options. This field should only be set if the Issuer is configured to use an ACME server to issue certificates.
type ClusterIssuerStatusAcmeOutput struct{ *pulumi.OutputState }

func (ClusterIssuerStatusAcmeOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerStatusAcme)(nil)).Elem()
}

func (o ClusterIssuerStatusAcmeOutput) ToClusterIssuerStatusAcmeOutput() ClusterIssuerStatusAcmeOutput {
	return o
}

func (o ClusterIssuerStatusAcmeOutput) ToClusterIssuerStatusAcmeOutputWithContext(ctx context.Context) ClusterIssuerStatusAcmeOutput {
	return o
}

func (o ClusterIssuerStatusAcmeOutput) ToClusterIssuerStatusAcmePtrOutput() ClusterIssuerStatusAcmePtrOutput {
	return o.ToClusterIssuerStatusAcmePtrOutputWithContext(context.Background())
}

func (o ClusterIssuerStatusAcmeOutput) ToClusterIssuerStatusAcmePtrOutputWithContext(ctx context.Context) ClusterIssuerStatusAcmePtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v ClusterIssuerStatusAcme) *ClusterIssuerStatusAcme {
		return &v
	}).(ClusterIssuerStatusAcmePtrOutput)
}

func (o ClusterIssuerStatusAcmeOutput) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerStatusAcme] {
	return pulumix.Output[ClusterIssuerStatusAcme]{
		OutputState: o.OutputState,
	}
}

// LastRegisteredEmail is the email associated with the latest registered ACME account, in order to track changes made to registered account associated with the  Issuer
func (o ClusterIssuerStatusAcmeOutput) LastRegisteredEmail() pulumi.StringPtrOutput {
	return o.ApplyT(func(v ClusterIssuerStatusAcme) *string { return v.LastRegisteredEmail }).(pulumi.StringPtrOutput)
}

// URI is the unique account identifier, which can also be used to retrieve account details from the CA
func (o ClusterIssuerStatusAcmeOutput) Uri() pulumi.StringPtrOutput {
	return o.ApplyT(func(v ClusterIssuerStatusAcme) *string { return v.Uri }).(pulumi.StringPtrOutput)
}

type ClusterIssuerStatusAcmePtrOutput struct{ *pulumi.OutputState }

func (ClusterIssuerStatusAcmePtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**ClusterIssuerStatusAcme)(nil)).Elem()
}

func (o ClusterIssuerStatusAcmePtrOutput) ToClusterIssuerStatusAcmePtrOutput() ClusterIssuerStatusAcmePtrOutput {
	return o
}

func (o ClusterIssuerStatusAcmePtrOutput) ToClusterIssuerStatusAcmePtrOutputWithContext(ctx context.Context) ClusterIssuerStatusAcmePtrOutput {
	return o
}

func (o ClusterIssuerStatusAcmePtrOutput) ToOutput(ctx context.Context) pulumix.Output[*ClusterIssuerStatusAcme] {
	return pulumix.Output[*ClusterIssuerStatusAcme]{
		OutputState: o.OutputState,
	}
}

func (o ClusterIssuerStatusAcmePtrOutput) Elem() ClusterIssuerStatusAcmeOutput {
	return o.ApplyT(func(v *ClusterIssuerStatusAcme) ClusterIssuerStatusAcme {
		if v != nil {
			return *v
		}
		var ret ClusterIssuerStatusAcme
		return ret
	}).(ClusterIssuerStatusAcmeOutput)
}

// LastRegisteredEmail is the email associated with the latest registered ACME account, in order to track changes made to registered account associated with the  Issuer
func (o ClusterIssuerStatusAcmePtrOutput) LastRegisteredEmail() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerStatusAcme) *string {
		if v == nil {
			return nil
		}
		return v.LastRegisteredEmail
	}).(pulumi.StringPtrOutput)
}

// URI is the unique account identifier, which can also be used to retrieve account details from the CA
func (o ClusterIssuerStatusAcmePtrOutput) Uri() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *ClusterIssuerStatusAcme) *string {
		if v == nil {
			return nil
		}
		return v.Uri
	}).(pulumi.StringPtrOutput)
}

// IssuerCondition contains condition information for an Issuer.
type ClusterIssuerStatusConditions struct {
	// LastTransitionTime is the timestamp corresponding to the last status change of this condition.
	LastTransitionTime *string `pulumi:"lastTransitionTime"`
	// Message is a human readable description of the details of the last transition, complementing reason.
	Message *string `pulumi:"message"`
	// If set, this represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.condition[x].observedGeneration is 9, the condition is out of date with respect to the current state of the Issuer.
	ObservedGeneration *int `pulumi:"observedGeneration"`
	// Reason is a brief machine readable explanation for the condition's last transition.
	Reason *string `pulumi:"reason"`
	// Status of the condition, one of (`True`, `False`, `Unknown`).
	Status string `pulumi:"status"`
	// Type of the condition, known values are (`Ready`).
	Type string `pulumi:"type"`
}

// ClusterIssuerStatusConditionsInput is an input type that accepts ClusterIssuerStatusConditionsArgs and ClusterIssuerStatusConditionsOutput values.
// You can construct a concrete instance of `ClusterIssuerStatusConditionsInput` via:
//
//	ClusterIssuerStatusConditionsArgs{...}
type ClusterIssuerStatusConditionsInput interface {
	pulumi.Input

	ToClusterIssuerStatusConditionsOutput() ClusterIssuerStatusConditionsOutput
	ToClusterIssuerStatusConditionsOutputWithContext(context.Context) ClusterIssuerStatusConditionsOutput
}

// IssuerCondition contains condition information for an Issuer.
type ClusterIssuerStatusConditionsArgs struct {
	// LastTransitionTime is the timestamp corresponding to the last status change of this condition.
	LastTransitionTime pulumi.StringPtrInput `pulumi:"lastTransitionTime"`
	// Message is a human readable description of the details of the last transition, complementing reason.
	Message pulumi.StringPtrInput `pulumi:"message"`
	// If set, this represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.condition[x].observedGeneration is 9, the condition is out of date with respect to the current state of the Issuer.
	ObservedGeneration pulumi.IntPtrInput `pulumi:"observedGeneration"`
	// Reason is a brief machine readable explanation for the condition's last transition.
	Reason pulumi.StringPtrInput `pulumi:"reason"`
	// Status of the condition, one of (`True`, `False`, `Unknown`).
	Status pulumi.StringInput `pulumi:"status"`
	// Type of the condition, known values are (`Ready`).
	Type pulumi.StringInput `pulumi:"type"`
}

func (ClusterIssuerStatusConditionsArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerStatusConditions)(nil)).Elem()
}

func (i ClusterIssuerStatusConditionsArgs) ToClusterIssuerStatusConditionsOutput() ClusterIssuerStatusConditionsOutput {
	return i.ToClusterIssuerStatusConditionsOutputWithContext(context.Background())
}

func (i ClusterIssuerStatusConditionsArgs) ToClusterIssuerStatusConditionsOutputWithContext(ctx context.Context) ClusterIssuerStatusConditionsOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerStatusConditionsOutput)
}

func (i ClusterIssuerStatusConditionsArgs) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerStatusConditions] {
	return pulumix.Output[ClusterIssuerStatusConditions]{
		OutputState: i.ToClusterIssuerStatusConditionsOutputWithContext(ctx).OutputState,
	}
}

// ClusterIssuerStatusConditionsArrayInput is an input type that accepts ClusterIssuerStatusConditionsArray and ClusterIssuerStatusConditionsArrayOutput values.
// You can construct a concrete instance of `ClusterIssuerStatusConditionsArrayInput` via:
//
//	ClusterIssuerStatusConditionsArray{ ClusterIssuerStatusConditionsArgs{...} }
type ClusterIssuerStatusConditionsArrayInput interface {
	pulumi.Input

	ToClusterIssuerStatusConditionsArrayOutput() ClusterIssuerStatusConditionsArrayOutput
	ToClusterIssuerStatusConditionsArrayOutputWithContext(context.Context) ClusterIssuerStatusConditionsArrayOutput
}

type ClusterIssuerStatusConditionsArray []ClusterIssuerStatusConditionsInput

func (ClusterIssuerStatusConditionsArray) ElementType() reflect.Type {
	return reflect.TypeOf((*[]ClusterIssuerStatusConditions)(nil)).Elem()
}

func (i ClusterIssuerStatusConditionsArray) ToClusterIssuerStatusConditionsArrayOutput() ClusterIssuerStatusConditionsArrayOutput {
	return i.ToClusterIssuerStatusConditionsArrayOutputWithContext(context.Background())
}

func (i ClusterIssuerStatusConditionsArray) ToClusterIssuerStatusConditionsArrayOutputWithContext(ctx context.Context) ClusterIssuerStatusConditionsArrayOutput {
	return pulumi.ToOutputWithContext(ctx, i).(ClusterIssuerStatusConditionsArrayOutput)
}

func (i ClusterIssuerStatusConditionsArray) ToOutput(ctx context.Context) pulumix.Output[[]ClusterIssuerStatusConditions] {
	return pulumix.Output[[]ClusterIssuerStatusConditions]{
		OutputState: i.ToClusterIssuerStatusConditionsArrayOutputWithContext(ctx).OutputState,
	}
}

// IssuerCondition contains condition information for an Issuer.
type ClusterIssuerStatusConditionsOutput struct{ *pulumi.OutputState }

func (ClusterIssuerStatusConditionsOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*ClusterIssuerStatusConditions)(nil)).Elem()
}

func (o ClusterIssuerStatusConditionsOutput) ToClusterIssuerStatusConditionsOutput() ClusterIssuerStatusConditionsOutput {
	return o
}

func (o ClusterIssuerStatusConditionsOutput) ToClusterIssuerStatusConditionsOutputWithContext(ctx context.Context) ClusterIssuerStatusConditionsOutput {
	return o
}

func (o ClusterIssuerStatusConditionsOutput) ToOutput(ctx context.Context) pulumix.Output[ClusterIssuerStatusConditions] {
	return pulumix.Output[ClusterIssuerStatusConditions]{
		OutputState: o.OutputState,
	}
}

// LastTransitionTime is the timestamp corresponding to the last status change of this condition.
func (o ClusterIssuerStatusConditionsOutput) LastTransitionTime() pulumi.StringPtrOutput {
	return o.ApplyT(func(v ClusterIssuerStatusConditions) *string { return v.LastTransitionTime }).(pulumi.StringPtrOutput)
}

// Message is a human readable description of the details of the last transition, complementing reason.
func (o ClusterIssuerStatusConditionsOutput) Message() pulumi.StringPtrOutput {
	return o.ApplyT(func(v ClusterIssuerStatusConditions) *string { return v.Message }).(pulumi.StringPtrOutput)
}

// If set, this represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.condition[x].observedGeneration is 9, the condition is out of date with respect to the current state of the Issuer.
func (o ClusterIssuerStatusConditionsOutput) ObservedGeneration() pulumi.IntPtrOutput {
	return o.ApplyT(func(v ClusterIssuerStatusConditions) *int { return v.ObservedGeneration }).(pulumi.IntPtrOutput)
}

// Reason is a brief machine readable explanation for the condition's last transition.
func (o ClusterIssuerStatusConditionsOutput) Reason() pulumi.StringPtrOutput {
	return o.ApplyT(func(v ClusterIssuerStatusConditions) *string { return v.Reason }).(pulumi.StringPtrOutput)
}

// Status of the condition, one of (`True`, `False`, `Unknown`).
func (o ClusterIssuerStatusConditionsOutput) Status() pulumi.StringOutput {
	return o.ApplyT(func(v ClusterIssuerStatusConditions) string { return v.Status }).(pulumi.StringOutput)
}

// Type of the condition, known values are (`Ready`).
func (o ClusterIssuerStatusConditionsOutput) Type() pulumi.StringOutput {
	return o.ApplyT(func(v ClusterIssuerStatusConditions) string { return v.Type }).(pulumi.StringOutput)
}

type ClusterIssuerStatusConditionsArrayOutput struct{ *pulumi.OutputState }

func (ClusterIssuerStatusConditionsArrayOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*[]ClusterIssuerStatusConditions)(nil)).Elem()
}

func (o ClusterIssuerStatusConditionsArrayOutput) ToClusterIssuerStatusConditionsArrayOutput() ClusterIssuerStatusConditionsArrayOutput {
	return o
}

func (o ClusterIssuerStatusConditionsArrayOutput) ToClusterIssuerStatusConditionsArrayOutputWithContext(ctx context.Context) ClusterIssuerStatusConditionsArrayOutput {
	return o
}

func (o ClusterIssuerStatusConditionsArrayOutput) ToOutput(ctx context.Context) pulumix.Output[[]ClusterIssuerStatusConditions] {
	return pulumix.Output[[]ClusterIssuerStatusConditions]{
		OutputState: o.OutputState,
	}
}

func (o ClusterIssuerStatusConditionsArrayOutput) Index(i pulumi.IntInput) ClusterIssuerStatusConditionsOutput {
	return pulumi.All(o, i).ApplyT(func(vs []interface{}) ClusterIssuerStatusConditions {
		return vs[0].([]ClusterIssuerStatusConditions)[vs[1].(int)]
	}).(ClusterIssuerStatusConditionsOutput)
}

// An Issuer represents a certificate issuing authority which can be referenced as part of `issuerRef` fields. It is scoped to a single namespace and can therefore only be referenced by resources within the same namespace.
type IssuerType struct {
	ApiVersion *string        `pulumi:"apiVersion"`
	Kind       *string        `pulumi:"kind"`
	Metadata   *v1.ObjectMeta `pulumi:"metadata"`
	// Desired state of the Issuer resource.
	Spec IssuerSpec `pulumi:"spec"`
	// Status of the Issuer. This is set and managed automatically.
	Status *IssuerStatus `pulumi:"status"`
}

type IssuerMetadata struct {
}

// Desired state of the Issuer resource.
type IssuerSpec struct {
	// ACME configures this issuer to communicate with a RFC8555 (ACME) server to obtain signed x509 certificates.
	Acme *IssuerSpecAcme `pulumi:"acme"`
	// CA configures this issuer to sign certificates using a signing CA keypair stored in a Secret resource. This is used to build internal PKIs that are managed by cert-manager.
	Ca *IssuerSpecCa `pulumi:"ca"`
	// SelfSigned configures this issuer to 'self sign' certificates using the private key used to create the CertificateRequest object.
	SelfSigned *IssuerSpecSelfSigned `pulumi:"selfSigned"`
	// Vault configures this issuer to sign certificates using a HashiCorp Vault PKI backend.
	Vault *IssuerSpecVault `pulumi:"vault"`
	// Venafi configures this issuer to sign certificates using a Venafi TPP or Venafi Cloud policy zone.
	Venafi *IssuerSpecVenafi `pulumi:"venafi"`
}

// IssuerSpecInput is an input type that accepts IssuerSpecArgs and IssuerSpecOutput values.
// You can construct a concrete instance of `IssuerSpecInput` via:
//
//	IssuerSpecArgs{...}
type IssuerSpecInput interface {
	pulumi.Input

	ToIssuerSpecOutput() IssuerSpecOutput
	ToIssuerSpecOutputWithContext(context.Context) IssuerSpecOutput
}

// Desired state of the Issuer resource.
type IssuerSpecArgs struct {
	// ACME configures this issuer to communicate with a RFC8555 (ACME) server to obtain signed x509 certificates.
	Acme IssuerSpecAcmePtrInput `pulumi:"acme"`
	// CA configures this issuer to sign certificates using a signing CA keypair stored in a Secret resource. This is used to build internal PKIs that are managed by cert-manager.
	Ca IssuerSpecCaPtrInput `pulumi:"ca"`
	// SelfSigned configures this issuer to 'self sign' certificates using the private key used to create the CertificateRequest object.
	SelfSigned IssuerSpecSelfSignedPtrInput `pulumi:"selfSigned"`
	// Vault configures this issuer to sign certificates using a HashiCorp Vault PKI backend.
	Vault IssuerSpecVaultPtrInput `pulumi:"vault"`
	// Venafi configures this issuer to sign certificates using a Venafi TPP or Venafi Cloud policy zone.
	Venafi IssuerSpecVenafiPtrInput `pulumi:"venafi"`
}

func (IssuerSpecArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpec)(nil)).Elem()
}

func (i IssuerSpecArgs) ToIssuerSpecOutput() IssuerSpecOutput {
	return i.ToIssuerSpecOutputWithContext(context.Background())
}

func (i IssuerSpecArgs) ToIssuerSpecOutputWithContext(ctx context.Context) IssuerSpecOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecOutput)
}

func (i IssuerSpecArgs) ToOutput(ctx context.Context) pulumix.Output[IssuerSpec] {
	return pulumix.Output[IssuerSpec]{
		OutputState: i.ToIssuerSpecOutputWithContext(ctx).OutputState,
	}
}

func (i IssuerSpecArgs) ToIssuerSpecPtrOutput() IssuerSpecPtrOutput {
	return i.ToIssuerSpecPtrOutputWithContext(context.Background())
}

func (i IssuerSpecArgs) ToIssuerSpecPtrOutputWithContext(ctx context.Context) IssuerSpecPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecOutput).ToIssuerSpecPtrOutputWithContext(ctx)
}

// IssuerSpecPtrInput is an input type that accepts IssuerSpecArgs, IssuerSpecPtr and IssuerSpecPtrOutput values.
// You can construct a concrete instance of `IssuerSpecPtrInput` via:
//
//	        IssuerSpecArgs{...}
//
//	or:
//
//	        nil
type IssuerSpecPtrInput interface {
	pulumi.Input

	ToIssuerSpecPtrOutput() IssuerSpecPtrOutput
	ToIssuerSpecPtrOutputWithContext(context.Context) IssuerSpecPtrOutput
}

type issuerSpecPtrType IssuerSpecArgs

func IssuerSpecPtr(v *IssuerSpecArgs) IssuerSpecPtrInput {
	return (*issuerSpecPtrType)(v)
}

func (*issuerSpecPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpec)(nil)).Elem()
}

func (i *issuerSpecPtrType) ToIssuerSpecPtrOutput() IssuerSpecPtrOutput {
	return i.ToIssuerSpecPtrOutputWithContext(context.Background())
}

func (i *issuerSpecPtrType) ToIssuerSpecPtrOutputWithContext(ctx context.Context) IssuerSpecPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecPtrOutput)
}

func (i *issuerSpecPtrType) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpec] {
	return pulumix.Output[*IssuerSpec]{
		OutputState: i.ToIssuerSpecPtrOutputWithContext(ctx).OutputState,
	}
}

// Desired state of the Issuer resource.
type IssuerSpecOutput struct{ *pulumi.OutputState }

func (IssuerSpecOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpec)(nil)).Elem()
}

func (o IssuerSpecOutput) ToIssuerSpecOutput() IssuerSpecOutput {
	return o
}

func (o IssuerSpecOutput) ToIssuerSpecOutputWithContext(ctx context.Context) IssuerSpecOutput {
	return o
}

func (o IssuerSpecOutput) ToIssuerSpecPtrOutput() IssuerSpecPtrOutput {
	return o.ToIssuerSpecPtrOutputWithContext(context.Background())
}

func (o IssuerSpecOutput) ToIssuerSpecPtrOutputWithContext(ctx context.Context) IssuerSpecPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v IssuerSpec) *IssuerSpec {
		return &v
	}).(IssuerSpecPtrOutput)
}

func (o IssuerSpecOutput) ToOutput(ctx context.Context) pulumix.Output[IssuerSpec] {
	return pulumix.Output[IssuerSpec]{
		OutputState: o.OutputState,
	}
}

// ACME configures this issuer to communicate with a RFC8555 (ACME) server to obtain signed x509 certificates.
func (o IssuerSpecOutput) Acme() IssuerSpecAcmePtrOutput {
	return o.ApplyT(func(v IssuerSpec) *IssuerSpecAcme { return v.Acme }).(IssuerSpecAcmePtrOutput)
}

// CA configures this issuer to sign certificates using a signing CA keypair stored in a Secret resource. This is used to build internal PKIs that are managed by cert-manager.
func (o IssuerSpecOutput) Ca() IssuerSpecCaPtrOutput {
	return o.ApplyT(func(v IssuerSpec) *IssuerSpecCa { return v.Ca }).(IssuerSpecCaPtrOutput)
}

// SelfSigned configures this issuer to 'self sign' certificates using the private key used to create the CertificateRequest object.
func (o IssuerSpecOutput) SelfSigned() IssuerSpecSelfSignedPtrOutput {
	return o.ApplyT(func(v IssuerSpec) *IssuerSpecSelfSigned { return v.SelfSigned }).(IssuerSpecSelfSignedPtrOutput)
}

// Vault configures this issuer to sign certificates using a HashiCorp Vault PKI backend.
func (o IssuerSpecOutput) Vault() IssuerSpecVaultPtrOutput {
	return o.ApplyT(func(v IssuerSpec) *IssuerSpecVault { return v.Vault }).(IssuerSpecVaultPtrOutput)
}

// Venafi configures this issuer to sign certificates using a Venafi TPP or Venafi Cloud policy zone.
func (o IssuerSpecOutput) Venafi() IssuerSpecVenafiPtrOutput {
	return o.ApplyT(func(v IssuerSpec) *IssuerSpecVenafi { return v.Venafi }).(IssuerSpecVenafiPtrOutput)
}

type IssuerSpecPtrOutput struct{ *pulumi.OutputState }

func (IssuerSpecPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpec)(nil)).Elem()
}

func (o IssuerSpecPtrOutput) ToIssuerSpecPtrOutput() IssuerSpecPtrOutput {
	return o
}

func (o IssuerSpecPtrOutput) ToIssuerSpecPtrOutputWithContext(ctx context.Context) IssuerSpecPtrOutput {
	return o
}

func (o IssuerSpecPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpec] {
	return pulumix.Output[*IssuerSpec]{
		OutputState: o.OutputState,
	}
}

func (o IssuerSpecPtrOutput) Elem() IssuerSpecOutput {
	return o.ApplyT(func(v *IssuerSpec) IssuerSpec {
		if v != nil {
			return *v
		}
		var ret IssuerSpec
		return ret
	}).(IssuerSpecOutput)
}

// ACME configures this issuer to communicate with a RFC8555 (ACME) server to obtain signed x509 certificates.
func (o IssuerSpecPtrOutput) Acme() IssuerSpecAcmePtrOutput {
	return o.ApplyT(func(v *IssuerSpec) *IssuerSpecAcme {
		if v == nil {
			return nil
		}
		return v.Acme
	}).(IssuerSpecAcmePtrOutput)
}

// CA configures this issuer to sign certificates using a signing CA keypair stored in a Secret resource. This is used to build internal PKIs that are managed by cert-manager.
func (o IssuerSpecPtrOutput) Ca() IssuerSpecCaPtrOutput {
	return o.ApplyT(func(v *IssuerSpec) *IssuerSpecCa {
		if v == nil {
			return nil
		}
		return v.Ca
	}).(IssuerSpecCaPtrOutput)
}

// SelfSigned configures this issuer to 'self sign' certificates using the private key used to create the CertificateRequest object.
func (o IssuerSpecPtrOutput) SelfSigned() IssuerSpecSelfSignedPtrOutput {
	return o.ApplyT(func(v *IssuerSpec) *IssuerSpecSelfSigned {
		if v == nil {
			return nil
		}
		return v.SelfSigned
	}).(IssuerSpecSelfSignedPtrOutput)
}

// Vault configures this issuer to sign certificates using a HashiCorp Vault PKI backend.
func (o IssuerSpecPtrOutput) Vault() IssuerSpecVaultPtrOutput {
	return o.ApplyT(func(v *IssuerSpec) *IssuerSpecVault {
		if v == nil {
			return nil
		}
		return v.Vault
	}).(IssuerSpecVaultPtrOutput)
}

// Venafi configures this issuer to sign certificates using a Venafi TPP or Venafi Cloud policy zone.
func (o IssuerSpecPtrOutput) Venafi() IssuerSpecVenafiPtrOutput {
	return o.ApplyT(func(v *IssuerSpec) *IssuerSpecVenafi {
		if v == nil {
			return nil
		}
		return v.Venafi
	}).(IssuerSpecVenafiPtrOutput)
}

// ACME configures this issuer to communicate with a RFC8555 (ACME) server to obtain signed x509 certificates.
type IssuerSpecAcme struct {
	// Enables or disables generating a new ACME account key. If true, the Issuer resource will *not* request a new account but will expect the account key to be supplied via an existing secret. If false, the cert-manager system will generate a new ACME account key for the Issuer. Defaults to false.
	DisableAccountKeyGeneration *bool `pulumi:"disableAccountKeyGeneration"`
	// Email is the email address to be associated with the ACME account. This field is optional, but it is strongly recommended to be set. It will be used to contact you in case of issues with your account or certificates, including expiry notification emails. This field may be updated after the account is initially registered.
	Email *string `pulumi:"email"`
	// Enables requesting a Not After date on certificates that matches the duration of the certificate. This is not supported by all ACME servers like Let's Encrypt. If set to true when the ACME server does not support it it will create an error on the Order. Defaults to false.
	EnableDurationFeature *bool `pulumi:"enableDurationFeature"`
	// ExternalAccountBinding is a reference to a CA external account of the ACME server. If set, upon registration cert-manager will attempt to associate the given external account credentials with the registered ACME account.
	ExternalAccountBinding *IssuerSpecAcmeExternalAccountBinding `pulumi:"externalAccountBinding"`
	// PreferredChain is the chain to use if the ACME server outputs multiple. PreferredChain is no guarantee that this one gets delivered by the ACME endpoint. For example, for Let's Encrypt's DST crosssign you would use: "DST Root CA X3" or "ISRG Root X1" for the newer Let's Encrypt root CA. This value picks the first certificate bundle in the ACME alternative chains that has a certificate with this value as its issuer's CN
	PreferredChain *string `pulumi:"preferredChain"`
	// PrivateKey is the name of a Kubernetes Secret resource that will be used to store the automatically generated ACME account private key. Optionally, a `key` may be specified to select a specific entry within the named Secret resource. If `key` is not specified, a default of `tls.key` will be used.
	PrivateKeySecretRef IssuerSpecAcmePrivateKeySecretRef `pulumi:"privateKeySecretRef"`
	// Server is the URL used to access the ACME server's 'directory' endpoint. For example, for Let's Encrypt's staging endpoint, you would use: "https://acme-staging-v02.api.letsencrypt.org/directory". Only ACME v2 endpoints (i.e. RFC 8555) are supported.
	Server string `pulumi:"server"`
	// Enables or disables validation of the ACME server TLS certificate. If true, requests to the ACME server will not have their TLS certificate validated (i.e. insecure connections will be allowed). Only enable this option in development environments. The cert-manager system installed roots will be used to verify connections to the ACME server if this is false. Defaults to false.
	SkipTLSVerify *bool `pulumi:"skipTLSVerify"`
	// Solvers is a list of challenge solvers that will be used to solve ACME challenges for the matching domains. Solver configurations must be provided in order to obtain certificates from an ACME server. For more information, see: https://cert-manager.io/docs/configuration/acme/
	Solvers []IssuerSpecAcmeSolvers `pulumi:"solvers"`
}

// IssuerSpecAcmeInput is an input type that accepts IssuerSpecAcmeArgs and IssuerSpecAcmeOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeInput` via:
//
//	IssuerSpecAcmeArgs{...}
type IssuerSpecAcmeInput interface {
	pulumi.Input

	ToIssuerSpecAcmeOutput() IssuerSpecAcmeOutput
	ToIssuerSpecAcmeOutputWithContext(context.Context) IssuerSpecAcmeOutput
}

// ACME configures this issuer to communicate with a RFC8555 (ACME) server to obtain signed x509 certificates.
type IssuerSpecAcmeArgs struct {
	// Enables or disables generating a new ACME account key. If true, the Issuer resource will *not* request a new account but will expect the account key to be supplied via an existing secret. If false, the cert-manager system will generate a new ACME account key for the Issuer. Defaults to false.
	DisableAccountKeyGeneration pulumi.BoolPtrInput `pulumi:"disableAccountKeyGeneration"`
	// Email is the email address to be associated with the ACME account. This field is optional, but it is strongly recommended to be set. It will be used to contact you in case of issues with your account or certificates, including expiry notification emails. This field may be updated after the account is initially registered.
	Email pulumi.StringPtrInput `pulumi:"email"`
	// Enables requesting a Not After date on certificates that matches the duration of the certificate. This is not supported by all ACME servers like Let's Encrypt. If set to true when the ACME server does not support it it will create an error on the Order. Defaults to false.
	EnableDurationFeature pulumi.BoolPtrInput `pulumi:"enableDurationFeature"`
	// ExternalAccountBinding is a reference to a CA external account of the ACME server. If set, upon registration cert-manager will attempt to associate the given external account credentials with the registered ACME account.
	ExternalAccountBinding IssuerSpecAcmeExternalAccountBindingPtrInput `pulumi:"externalAccountBinding"`
	// PreferredChain is the chain to use if the ACME server outputs multiple. PreferredChain is no guarantee that this one gets delivered by the ACME endpoint. For example, for Let's Encrypt's DST crosssign you would use: "DST Root CA X3" or "ISRG Root X1" for the newer Let's Encrypt root CA. This value picks the first certificate bundle in the ACME alternative chains that has a certificate with this value as its issuer's CN
	PreferredChain pulumi.StringPtrInput `pulumi:"preferredChain"`
	// PrivateKey is the name of a Kubernetes Secret resource that will be used to store the automatically generated ACME account private key. Optionally, a `key` may be specified to select a specific entry within the named Secret resource. If `key` is not specified, a default of `tls.key` will be used.
	PrivateKeySecretRef IssuerSpecAcmePrivateKeySecretRefInput `pulumi:"privateKeySecretRef"`
	// Server is the URL used to access the ACME server's 'directory' endpoint. For example, for Let's Encrypt's staging endpoint, you would use: "https://acme-staging-v02.api.letsencrypt.org/directory". Only ACME v2 endpoints (i.e. RFC 8555) are supported.
	Server pulumi.StringInput `pulumi:"server"`
	// Enables or disables validation of the ACME server TLS certificate. If true, requests to the ACME server will not have their TLS certificate validated (i.e. insecure connections will be allowed). Only enable this option in development environments. The cert-manager system installed roots will be used to verify connections to the ACME server if this is false. Defaults to false.
	SkipTLSVerify pulumi.BoolPtrInput `pulumi:"skipTLSVerify"`
	// Solvers is a list of challenge solvers that will be used to solve ACME challenges for the matching domains. Solver configurations must be provided in order to obtain certificates from an ACME server. For more information, see: https://cert-manager.io/docs/configuration/acme/
	Solvers IssuerSpecAcmeSolversArrayInput `pulumi:"solvers"`
}

func (IssuerSpecAcmeArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcme)(nil)).Elem()
}

func (i IssuerSpecAcmeArgs) ToIssuerSpecAcmeOutput() IssuerSpecAcmeOutput {
	return i.ToIssuerSpecAcmeOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeArgs) ToIssuerSpecAcmeOutputWithContext(ctx context.Context) IssuerSpecAcmeOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeOutput)
}

func (i IssuerSpecAcmeArgs) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcme] {
	return pulumix.Output[IssuerSpecAcme]{
		OutputState: i.ToIssuerSpecAcmeOutputWithContext(ctx).OutputState,
	}
}

func (i IssuerSpecAcmeArgs) ToIssuerSpecAcmePtrOutput() IssuerSpecAcmePtrOutput {
	return i.ToIssuerSpecAcmePtrOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeArgs) ToIssuerSpecAcmePtrOutputWithContext(ctx context.Context) IssuerSpecAcmePtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeOutput).ToIssuerSpecAcmePtrOutputWithContext(ctx)
}

// IssuerSpecAcmePtrInput is an input type that accepts IssuerSpecAcmeArgs, IssuerSpecAcmePtr and IssuerSpecAcmePtrOutput values.
// You can construct a concrete instance of `IssuerSpecAcmePtrInput` via:
//
//	        IssuerSpecAcmeArgs{...}
//
//	or:
//
//	        nil
type IssuerSpecAcmePtrInput interface {
	pulumi.Input

	ToIssuerSpecAcmePtrOutput() IssuerSpecAcmePtrOutput
	ToIssuerSpecAcmePtrOutputWithContext(context.Context) IssuerSpecAcmePtrOutput
}

type issuerSpecAcmePtrType IssuerSpecAcmeArgs

func IssuerSpecAcmePtr(v *IssuerSpecAcmeArgs) IssuerSpecAcmePtrInput {
	return (*issuerSpecAcmePtrType)(v)
}

func (*issuerSpecAcmePtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecAcme)(nil)).Elem()
}

func (i *issuerSpecAcmePtrType) ToIssuerSpecAcmePtrOutput() IssuerSpecAcmePtrOutput {
	return i.ToIssuerSpecAcmePtrOutputWithContext(context.Background())
}

func (i *issuerSpecAcmePtrType) ToIssuerSpecAcmePtrOutputWithContext(ctx context.Context) IssuerSpecAcmePtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmePtrOutput)
}

func (i *issuerSpecAcmePtrType) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecAcme] {
	return pulumix.Output[*IssuerSpecAcme]{
		OutputState: i.ToIssuerSpecAcmePtrOutputWithContext(ctx).OutputState,
	}
}

// ACME configures this issuer to communicate with a RFC8555 (ACME) server to obtain signed x509 certificates.
type IssuerSpecAcmeOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcme)(nil)).Elem()
}

func (o IssuerSpecAcmeOutput) ToIssuerSpecAcmeOutput() IssuerSpecAcmeOutput {
	return o
}

func (o IssuerSpecAcmeOutput) ToIssuerSpecAcmeOutputWithContext(ctx context.Context) IssuerSpecAcmeOutput {
	return o
}

func (o IssuerSpecAcmeOutput) ToIssuerSpecAcmePtrOutput() IssuerSpecAcmePtrOutput {
	return o.ToIssuerSpecAcmePtrOutputWithContext(context.Background())
}

func (o IssuerSpecAcmeOutput) ToIssuerSpecAcmePtrOutputWithContext(ctx context.Context) IssuerSpecAcmePtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v IssuerSpecAcme) *IssuerSpecAcme {
		return &v
	}).(IssuerSpecAcmePtrOutput)
}

func (o IssuerSpecAcmeOutput) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcme] {
	return pulumix.Output[IssuerSpecAcme]{
		OutputState: o.OutputState,
	}
}

// Enables or disables generating a new ACME account key. If true, the Issuer resource will *not* request a new account but will expect the account key to be supplied via an existing secret. If false, the cert-manager system will generate a new ACME account key for the Issuer. Defaults to false.
func (o IssuerSpecAcmeOutput) DisableAccountKeyGeneration() pulumi.BoolPtrOutput {
	return o.ApplyT(func(v IssuerSpecAcme) *bool { return v.DisableAccountKeyGeneration }).(pulumi.BoolPtrOutput)
}

// Email is the email address to be associated with the ACME account. This field is optional, but it is strongly recommended to be set. It will be used to contact you in case of issues with your account or certificates, including expiry notification emails. This field may be updated after the account is initially registered.
func (o IssuerSpecAcmeOutput) Email() pulumi.StringPtrOutput {
	return o.ApplyT(func(v IssuerSpecAcme) *string { return v.Email }).(pulumi.StringPtrOutput)
}

// Enables requesting a Not After date on certificates that matches the duration of the certificate. This is not supported by all ACME servers like Let's Encrypt. If set to true when the ACME server does not support it it will create an error on the Order. Defaults to false.
func (o IssuerSpecAcmeOutput) EnableDurationFeature() pulumi.BoolPtrOutput {
	return o.ApplyT(func(v IssuerSpecAcme) *bool { return v.EnableDurationFeature }).(pulumi.BoolPtrOutput)
}

// ExternalAccountBinding is a reference to a CA external account of the ACME server. If set, upon registration cert-manager will attempt to associate the given external account credentials with the registered ACME account.
func (o IssuerSpecAcmeOutput) ExternalAccountBinding() IssuerSpecAcmeExternalAccountBindingPtrOutput {
	return o.ApplyT(func(v IssuerSpecAcme) *IssuerSpecAcmeExternalAccountBinding { return v.ExternalAccountBinding }).(IssuerSpecAcmeExternalAccountBindingPtrOutput)
}

// PreferredChain is the chain to use if the ACME server outputs multiple. PreferredChain is no guarantee that this one gets delivered by the ACME endpoint. For example, for Let's Encrypt's DST crosssign you would use: "DST Root CA X3" or "ISRG Root X1" for the newer Let's Encrypt root CA. This value picks the first certificate bundle in the ACME alternative chains that has a certificate with this value as its issuer's CN
func (o IssuerSpecAcmeOutput) PreferredChain() pulumi.StringPtrOutput {
	return o.ApplyT(func(v IssuerSpecAcme) *string { return v.PreferredChain }).(pulumi.StringPtrOutput)
}

// PrivateKey is the name of a Kubernetes Secret resource that will be used to store the automatically generated ACME account private key. Optionally, a `key` may be specified to select a specific entry within the named Secret resource. If `key` is not specified, a default of `tls.key` will be used.
func (o IssuerSpecAcmeOutput) PrivateKeySecretRef() IssuerSpecAcmePrivateKeySecretRefOutput {
	return o.ApplyT(func(v IssuerSpecAcme) IssuerSpecAcmePrivateKeySecretRef { return v.PrivateKeySecretRef }).(IssuerSpecAcmePrivateKeySecretRefOutput)
}

// Server is the URL used to access the ACME server's 'directory' endpoint. For example, for Let's Encrypt's staging endpoint, you would use: "https://acme-staging-v02.api.letsencrypt.org/directory". Only ACME v2 endpoints (i.e. RFC 8555) are supported.
func (o IssuerSpecAcmeOutput) Server() pulumi.StringOutput {
	return o.ApplyT(func(v IssuerSpecAcme) string { return v.Server }).(pulumi.StringOutput)
}

// Enables or disables validation of the ACME server TLS certificate. If true, requests to the ACME server will not have their TLS certificate validated (i.e. insecure connections will be allowed). Only enable this option in development environments. The cert-manager system installed roots will be used to verify connections to the ACME server if this is false. Defaults to false.
func (o IssuerSpecAcmeOutput) SkipTLSVerify() pulumi.BoolPtrOutput {
	return o.ApplyT(func(v IssuerSpecAcme) *bool { return v.SkipTLSVerify }).(pulumi.BoolPtrOutput)
}

// Solvers is a list of challenge solvers that will be used to solve ACME challenges for the matching domains. Solver configurations must be provided in order to obtain certificates from an ACME server. For more information, see: https://cert-manager.io/docs/configuration/acme/
func (o IssuerSpecAcmeOutput) Solvers() IssuerSpecAcmeSolversArrayOutput {
	return o.ApplyT(func(v IssuerSpecAcme) []IssuerSpecAcmeSolvers { return v.Solvers }).(IssuerSpecAcmeSolversArrayOutput)
}

type IssuerSpecAcmePtrOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmePtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecAcme)(nil)).Elem()
}

func (o IssuerSpecAcmePtrOutput) ToIssuerSpecAcmePtrOutput() IssuerSpecAcmePtrOutput {
	return o
}

func (o IssuerSpecAcmePtrOutput) ToIssuerSpecAcmePtrOutputWithContext(ctx context.Context) IssuerSpecAcmePtrOutput {
	return o
}

func (o IssuerSpecAcmePtrOutput) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecAcme] {
	return pulumix.Output[*IssuerSpecAcme]{
		OutputState: o.OutputState,
	}
}

func (o IssuerSpecAcmePtrOutput) Elem() IssuerSpecAcmeOutput {
	return o.ApplyT(func(v *IssuerSpecAcme) IssuerSpecAcme {
		if v != nil {
			return *v
		}
		var ret IssuerSpecAcme
		return ret
	}).(IssuerSpecAcmeOutput)
}

// Enables or disables generating a new ACME account key. If true, the Issuer resource will *not* request a new account but will expect the account key to be supplied via an existing secret. If false, the cert-manager system will generate a new ACME account key for the Issuer. Defaults to false.
func (o IssuerSpecAcmePtrOutput) DisableAccountKeyGeneration() pulumi.BoolPtrOutput {
	return o.ApplyT(func(v *IssuerSpecAcme) *bool {
		if v == nil {
			return nil
		}
		return v.DisableAccountKeyGeneration
	}).(pulumi.BoolPtrOutput)
}

// Email is the email address to be associated with the ACME account. This field is optional, but it is strongly recommended to be set. It will be used to contact you in case of issues with your account or certificates, including expiry notification emails. This field may be updated after the account is initially registered.
func (o IssuerSpecAcmePtrOutput) Email() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *IssuerSpecAcme) *string {
		if v == nil {
			return nil
		}
		return v.Email
	}).(pulumi.StringPtrOutput)
}

// Enables requesting a Not After date on certificates that matches the duration of the certificate. This is not supported by all ACME servers like Let's Encrypt. If set to true when the ACME server does not support it it will create an error on the Order. Defaults to false.
func (o IssuerSpecAcmePtrOutput) EnableDurationFeature() pulumi.BoolPtrOutput {
	return o.ApplyT(func(v *IssuerSpecAcme) *bool {
		if v == nil {
			return nil
		}
		return v.EnableDurationFeature
	}).(pulumi.BoolPtrOutput)
}

// ExternalAccountBinding is a reference to a CA external account of the ACME server. If set, upon registration cert-manager will attempt to associate the given external account credentials with the registered ACME account.
func (o IssuerSpecAcmePtrOutput) ExternalAccountBinding() IssuerSpecAcmeExternalAccountBindingPtrOutput {
	return o.ApplyT(func(v *IssuerSpecAcme) *IssuerSpecAcmeExternalAccountBinding {
		if v == nil {
			return nil
		}
		return v.ExternalAccountBinding
	}).(IssuerSpecAcmeExternalAccountBindingPtrOutput)
}

// PreferredChain is the chain to use if the ACME server outputs multiple. PreferredChain is no guarantee that this one gets delivered by the ACME endpoint. For example, for Let's Encrypt's DST crosssign you would use: "DST Root CA X3" or "ISRG Root X1" for the newer Let's Encrypt root CA. This value picks the first certificate bundle in the ACME alternative chains that has a certificate with this value as its issuer's CN
func (o IssuerSpecAcmePtrOutput) PreferredChain() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *IssuerSpecAcme) *string {
		if v == nil {
			return nil
		}
		return v.PreferredChain
	}).(pulumi.StringPtrOutput)
}

// PrivateKey is the name of a Kubernetes Secret resource that will be used to store the automatically generated ACME account private key. Optionally, a `key` may be specified to select a specific entry within the named Secret resource. If `key` is not specified, a default of `tls.key` will be used.
func (o IssuerSpecAcmePtrOutput) PrivateKeySecretRef() IssuerSpecAcmePrivateKeySecretRefPtrOutput {
	return o.ApplyT(func(v *IssuerSpecAcme) *IssuerSpecAcmePrivateKeySecretRef {
		if v == nil {
			return nil
		}
		return &v.PrivateKeySecretRef
	}).(IssuerSpecAcmePrivateKeySecretRefPtrOutput)
}

// Server is the URL used to access the ACME server's 'directory' endpoint. For example, for Let's Encrypt's staging endpoint, you would use: "https://acme-staging-v02.api.letsencrypt.org/directory". Only ACME v2 endpoints (i.e. RFC 8555) are supported.
func (o IssuerSpecAcmePtrOutput) Server() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *IssuerSpecAcme) *string {
		if v == nil {
			return nil
		}
		return &v.Server
	}).(pulumi.StringPtrOutput)
}

// Enables or disables validation of the ACME server TLS certificate. If true, requests to the ACME server will not have their TLS certificate validated (i.e. insecure connections will be allowed). Only enable this option in development environments. The cert-manager system installed roots will be used to verify connections to the ACME server if this is false. Defaults to false.
func (o IssuerSpecAcmePtrOutput) SkipTLSVerify() pulumi.BoolPtrOutput {
	return o.ApplyT(func(v *IssuerSpecAcme) *bool {
		if v == nil {
			return nil
		}
		return v.SkipTLSVerify
	}).(pulumi.BoolPtrOutput)
}

// Solvers is a list of challenge solvers that will be used to solve ACME challenges for the matching domains. Solver configurations must be provided in order to obtain certificates from an ACME server. For more information, see: https://cert-manager.io/docs/configuration/acme/
func (o IssuerSpecAcmePtrOutput) Solvers() IssuerSpecAcmeSolversArrayOutput {
	return o.ApplyT(func(v *IssuerSpecAcme) []IssuerSpecAcmeSolvers {
		if v == nil {
			return nil
		}
		return v.Solvers
	}).(IssuerSpecAcmeSolversArrayOutput)
}

// ExternalAccountBinding is a reference to a CA external account of the ACME server. If set, upon registration cert-manager will attempt to associate the given external account credentials with the registered ACME account.
type IssuerSpecAcmeExternalAccountBinding struct {
	// Deprecated: keyAlgorithm field exists for historical compatibility reasons and should not be used. The algorithm is now hardcoded to HS256 in golang/x/crypto/acme.
	KeyAlgorithm *string `pulumi:"keyAlgorithm"`
	// keyID is the ID of the CA key that the External Account is bound to.
	KeyID string `pulumi:"keyID"`
	// keySecretRef is a Secret Key Selector referencing a data item in a Kubernetes Secret which holds the symmetric MAC key of the External Account Binding. The `key` is the index string that is paired with the key data in the Secret and should not be confused with the key data itself, or indeed with the External Account Binding keyID above. The secret key stored in the Secret **must** be un-padded, base64 URL encoded data.
	KeySecretRef IssuerSpecAcmeExternalAccountBindingKeySecretRef `pulumi:"keySecretRef"`
}

// IssuerSpecAcmeExternalAccountBindingInput is an input type that accepts IssuerSpecAcmeExternalAccountBindingArgs and IssuerSpecAcmeExternalAccountBindingOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeExternalAccountBindingInput` via:
//
//	IssuerSpecAcmeExternalAccountBindingArgs{...}
type IssuerSpecAcmeExternalAccountBindingInput interface {
	pulumi.Input

	ToIssuerSpecAcmeExternalAccountBindingOutput() IssuerSpecAcmeExternalAccountBindingOutput
	ToIssuerSpecAcmeExternalAccountBindingOutputWithContext(context.Context) IssuerSpecAcmeExternalAccountBindingOutput
}

// ExternalAccountBinding is a reference to a CA external account of the ACME server. If set, upon registration cert-manager will attempt to associate the given external account credentials with the registered ACME account.
type IssuerSpecAcmeExternalAccountBindingArgs struct {
	// Deprecated: keyAlgorithm field exists for historical compatibility reasons and should not be used. The algorithm is now hardcoded to HS256 in golang/x/crypto/acme.
	KeyAlgorithm pulumi.StringPtrInput `pulumi:"keyAlgorithm"`
	// keyID is the ID of the CA key that the External Account is bound to.
	KeyID pulumi.StringInput `pulumi:"keyID"`
	// keySecretRef is a Secret Key Selector referencing a data item in a Kubernetes Secret which holds the symmetric MAC key of the External Account Binding. The `key` is the index string that is paired with the key data in the Secret and should not be confused with the key data itself, or indeed with the External Account Binding keyID above. The secret key stored in the Secret **must** be un-padded, base64 URL encoded data.
	KeySecretRef IssuerSpecAcmeExternalAccountBindingKeySecretRefInput `pulumi:"keySecretRef"`
}

func (IssuerSpecAcmeExternalAccountBindingArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeExternalAccountBinding)(nil)).Elem()
}

func (i IssuerSpecAcmeExternalAccountBindingArgs) ToIssuerSpecAcmeExternalAccountBindingOutput() IssuerSpecAcmeExternalAccountBindingOutput {
	return i.ToIssuerSpecAcmeExternalAccountBindingOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeExternalAccountBindingArgs) ToIssuerSpecAcmeExternalAccountBindingOutputWithContext(ctx context.Context) IssuerSpecAcmeExternalAccountBindingOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeExternalAccountBindingOutput)
}

func (i IssuerSpecAcmeExternalAccountBindingArgs) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeExternalAccountBinding] {
	return pulumix.Output[IssuerSpecAcmeExternalAccountBinding]{
		OutputState: i.ToIssuerSpecAcmeExternalAccountBindingOutputWithContext(ctx).OutputState,
	}
}

func (i IssuerSpecAcmeExternalAccountBindingArgs) ToIssuerSpecAcmeExternalAccountBindingPtrOutput() IssuerSpecAcmeExternalAccountBindingPtrOutput {
	return i.ToIssuerSpecAcmeExternalAccountBindingPtrOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeExternalAccountBindingArgs) ToIssuerSpecAcmeExternalAccountBindingPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeExternalAccountBindingPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeExternalAccountBindingOutput).ToIssuerSpecAcmeExternalAccountBindingPtrOutputWithContext(ctx)
}

// IssuerSpecAcmeExternalAccountBindingPtrInput is an input type that accepts IssuerSpecAcmeExternalAccountBindingArgs, IssuerSpecAcmeExternalAccountBindingPtr and IssuerSpecAcmeExternalAccountBindingPtrOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeExternalAccountBindingPtrInput` via:
//
//	        IssuerSpecAcmeExternalAccountBindingArgs{...}
//
//	or:
//
//	        nil
type IssuerSpecAcmeExternalAccountBindingPtrInput interface {
	pulumi.Input

	ToIssuerSpecAcmeExternalAccountBindingPtrOutput() IssuerSpecAcmeExternalAccountBindingPtrOutput
	ToIssuerSpecAcmeExternalAccountBindingPtrOutputWithContext(context.Context) IssuerSpecAcmeExternalAccountBindingPtrOutput
}

type issuerSpecAcmeExternalAccountBindingPtrType IssuerSpecAcmeExternalAccountBindingArgs

func IssuerSpecAcmeExternalAccountBindingPtr(v *IssuerSpecAcmeExternalAccountBindingArgs) IssuerSpecAcmeExternalAccountBindingPtrInput {
	return (*issuerSpecAcmeExternalAccountBindingPtrType)(v)
}

func (*issuerSpecAcmeExternalAccountBindingPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecAcmeExternalAccountBinding)(nil)).Elem()
}

func (i *issuerSpecAcmeExternalAccountBindingPtrType) ToIssuerSpecAcmeExternalAccountBindingPtrOutput() IssuerSpecAcmeExternalAccountBindingPtrOutput {
	return i.ToIssuerSpecAcmeExternalAccountBindingPtrOutputWithContext(context.Background())
}

func (i *issuerSpecAcmeExternalAccountBindingPtrType) ToIssuerSpecAcmeExternalAccountBindingPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeExternalAccountBindingPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeExternalAccountBindingPtrOutput)
}

func (i *issuerSpecAcmeExternalAccountBindingPtrType) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecAcmeExternalAccountBinding] {
	return pulumix.Output[*IssuerSpecAcmeExternalAccountBinding]{
		OutputState: i.ToIssuerSpecAcmeExternalAccountBindingPtrOutputWithContext(ctx).OutputState,
	}
}

// ExternalAccountBinding is a reference to a CA external account of the ACME server. If set, upon registration cert-manager will attempt to associate the given external account credentials with the registered ACME account.
type IssuerSpecAcmeExternalAccountBindingOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeExternalAccountBindingOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeExternalAccountBinding)(nil)).Elem()
}

func (o IssuerSpecAcmeExternalAccountBindingOutput) ToIssuerSpecAcmeExternalAccountBindingOutput() IssuerSpecAcmeExternalAccountBindingOutput {
	return o
}

func (o IssuerSpecAcmeExternalAccountBindingOutput) ToIssuerSpecAcmeExternalAccountBindingOutputWithContext(ctx context.Context) IssuerSpecAcmeExternalAccountBindingOutput {
	return o
}

func (o IssuerSpecAcmeExternalAccountBindingOutput) ToIssuerSpecAcmeExternalAccountBindingPtrOutput() IssuerSpecAcmeExternalAccountBindingPtrOutput {
	return o.ToIssuerSpecAcmeExternalAccountBindingPtrOutputWithContext(context.Background())
}

func (o IssuerSpecAcmeExternalAccountBindingOutput) ToIssuerSpecAcmeExternalAccountBindingPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeExternalAccountBindingPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v IssuerSpecAcmeExternalAccountBinding) *IssuerSpecAcmeExternalAccountBinding {
		return &v
	}).(IssuerSpecAcmeExternalAccountBindingPtrOutput)
}

func (o IssuerSpecAcmeExternalAccountBindingOutput) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeExternalAccountBinding] {
	return pulumix.Output[IssuerSpecAcmeExternalAccountBinding]{
		OutputState: o.OutputState,
	}
}

// Deprecated: keyAlgorithm field exists for historical compatibility reasons and should not be used. The algorithm is now hardcoded to HS256 in golang/x/crypto/acme.
func (o IssuerSpecAcmeExternalAccountBindingOutput) KeyAlgorithm() pulumi.StringPtrOutput {
	return o.ApplyT(func(v IssuerSpecAcmeExternalAccountBinding) *string { return v.KeyAlgorithm }).(pulumi.StringPtrOutput)
}

// keyID is the ID of the CA key that the External Account is bound to.
func (o IssuerSpecAcmeExternalAccountBindingOutput) KeyID() pulumi.StringOutput {
	return o.ApplyT(func(v IssuerSpecAcmeExternalAccountBinding) string { return v.KeyID }).(pulumi.StringOutput)
}

// keySecretRef is a Secret Key Selector referencing a data item in a Kubernetes Secret which holds the symmetric MAC key of the External Account Binding. The `key` is the index string that is paired with the key data in the Secret and should not be confused with the key data itself, or indeed with the External Account Binding keyID above. The secret key stored in the Secret **must** be un-padded, base64 URL encoded data.
func (o IssuerSpecAcmeExternalAccountBindingOutput) KeySecretRef() IssuerSpecAcmeExternalAccountBindingKeySecretRefOutput {
	return o.ApplyT(func(v IssuerSpecAcmeExternalAccountBinding) IssuerSpecAcmeExternalAccountBindingKeySecretRef {
		return v.KeySecretRef
	}).(IssuerSpecAcmeExternalAccountBindingKeySecretRefOutput)
}

type IssuerSpecAcmeExternalAccountBindingPtrOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeExternalAccountBindingPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecAcmeExternalAccountBinding)(nil)).Elem()
}

func (o IssuerSpecAcmeExternalAccountBindingPtrOutput) ToIssuerSpecAcmeExternalAccountBindingPtrOutput() IssuerSpecAcmeExternalAccountBindingPtrOutput {
	return o
}

func (o IssuerSpecAcmeExternalAccountBindingPtrOutput) ToIssuerSpecAcmeExternalAccountBindingPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeExternalAccountBindingPtrOutput {
	return o
}

func (o IssuerSpecAcmeExternalAccountBindingPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecAcmeExternalAccountBinding] {
	return pulumix.Output[*IssuerSpecAcmeExternalAccountBinding]{
		OutputState: o.OutputState,
	}
}

func (o IssuerSpecAcmeExternalAccountBindingPtrOutput) Elem() IssuerSpecAcmeExternalAccountBindingOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeExternalAccountBinding) IssuerSpecAcmeExternalAccountBinding {
		if v != nil {
			return *v
		}
		var ret IssuerSpecAcmeExternalAccountBinding
		return ret
	}).(IssuerSpecAcmeExternalAccountBindingOutput)
}

// Deprecated: keyAlgorithm field exists for historical compatibility reasons and should not be used. The algorithm is now hardcoded to HS256 in golang/x/crypto/acme.
func (o IssuerSpecAcmeExternalAccountBindingPtrOutput) KeyAlgorithm() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeExternalAccountBinding) *string {
		if v == nil {
			return nil
		}
		return v.KeyAlgorithm
	}).(pulumi.StringPtrOutput)
}

// keyID is the ID of the CA key that the External Account is bound to.
func (o IssuerSpecAcmeExternalAccountBindingPtrOutput) KeyID() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeExternalAccountBinding) *string {
		if v == nil {
			return nil
		}
		return &v.KeyID
	}).(pulumi.StringPtrOutput)
}

// keySecretRef is a Secret Key Selector referencing a data item in a Kubernetes Secret which holds the symmetric MAC key of the External Account Binding. The `key` is the index string that is paired with the key data in the Secret and should not be confused with the key data itself, or indeed with the External Account Binding keyID above. The secret key stored in the Secret **must** be un-padded, base64 URL encoded data.
func (o IssuerSpecAcmeExternalAccountBindingPtrOutput) KeySecretRef() IssuerSpecAcmeExternalAccountBindingKeySecretRefPtrOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeExternalAccountBinding) *IssuerSpecAcmeExternalAccountBindingKeySecretRef {
		if v == nil {
			return nil
		}
		return &v.KeySecretRef
	}).(IssuerSpecAcmeExternalAccountBindingKeySecretRefPtrOutput)
}

// keySecretRef is a Secret Key Selector referencing a data item in a Kubernetes Secret which holds the symmetric MAC key of the External Account Binding. The `key` is the index string that is paired with the key data in the Secret and should not be confused with the key data itself, or indeed with the External Account Binding keyID above. The secret key stored in the Secret **must** be un-padded, base64 URL encoded data.
type IssuerSpecAcmeExternalAccountBindingKeySecretRef struct {
	// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
	Key *string `pulumi:"key"`
	// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
	Name string `pulumi:"name"`
}

// IssuerSpecAcmeExternalAccountBindingKeySecretRefInput is an input type that accepts IssuerSpecAcmeExternalAccountBindingKeySecretRefArgs and IssuerSpecAcmeExternalAccountBindingKeySecretRefOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeExternalAccountBindingKeySecretRefInput` via:
//
//	IssuerSpecAcmeExternalAccountBindingKeySecretRefArgs{...}
type IssuerSpecAcmeExternalAccountBindingKeySecretRefInput interface {
	pulumi.Input

	ToIssuerSpecAcmeExternalAccountBindingKeySecretRefOutput() IssuerSpecAcmeExternalAccountBindingKeySecretRefOutput
	ToIssuerSpecAcmeExternalAccountBindingKeySecretRefOutputWithContext(context.Context) IssuerSpecAcmeExternalAccountBindingKeySecretRefOutput
}

// keySecretRef is a Secret Key Selector referencing a data item in a Kubernetes Secret which holds the symmetric MAC key of the External Account Binding. The `key` is the index string that is paired with the key data in the Secret and should not be confused with the key data itself, or indeed with the External Account Binding keyID above. The secret key stored in the Secret **must** be un-padded, base64 URL encoded data.
type IssuerSpecAcmeExternalAccountBindingKeySecretRefArgs struct {
	// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
	Key pulumi.StringPtrInput `pulumi:"key"`
	// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
	Name pulumi.StringInput `pulumi:"name"`
}

func (IssuerSpecAcmeExternalAccountBindingKeySecretRefArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeExternalAccountBindingKeySecretRef)(nil)).Elem()
}

func (i IssuerSpecAcmeExternalAccountBindingKeySecretRefArgs) ToIssuerSpecAcmeExternalAccountBindingKeySecretRefOutput() IssuerSpecAcmeExternalAccountBindingKeySecretRefOutput {
	return i.ToIssuerSpecAcmeExternalAccountBindingKeySecretRefOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeExternalAccountBindingKeySecretRefArgs) ToIssuerSpecAcmeExternalAccountBindingKeySecretRefOutputWithContext(ctx context.Context) IssuerSpecAcmeExternalAccountBindingKeySecretRefOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeExternalAccountBindingKeySecretRefOutput)
}

func (i IssuerSpecAcmeExternalAccountBindingKeySecretRefArgs) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeExternalAccountBindingKeySecretRef] {
	return pulumix.Output[IssuerSpecAcmeExternalAccountBindingKeySecretRef]{
		OutputState: i.ToIssuerSpecAcmeExternalAccountBindingKeySecretRefOutputWithContext(ctx).OutputState,
	}
}

func (i IssuerSpecAcmeExternalAccountBindingKeySecretRefArgs) ToIssuerSpecAcmeExternalAccountBindingKeySecretRefPtrOutput() IssuerSpecAcmeExternalAccountBindingKeySecretRefPtrOutput {
	return i.ToIssuerSpecAcmeExternalAccountBindingKeySecretRefPtrOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeExternalAccountBindingKeySecretRefArgs) ToIssuerSpecAcmeExternalAccountBindingKeySecretRefPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeExternalAccountBindingKeySecretRefPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeExternalAccountBindingKeySecretRefOutput).ToIssuerSpecAcmeExternalAccountBindingKeySecretRefPtrOutputWithContext(ctx)
}

// IssuerSpecAcmeExternalAccountBindingKeySecretRefPtrInput is an input type that accepts IssuerSpecAcmeExternalAccountBindingKeySecretRefArgs, IssuerSpecAcmeExternalAccountBindingKeySecretRefPtr and IssuerSpecAcmeExternalAccountBindingKeySecretRefPtrOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeExternalAccountBindingKeySecretRefPtrInput` via:
//
//	        IssuerSpecAcmeExternalAccountBindingKeySecretRefArgs{...}
//
//	or:
//
//	        nil
type IssuerSpecAcmeExternalAccountBindingKeySecretRefPtrInput interface {
	pulumi.Input

	ToIssuerSpecAcmeExternalAccountBindingKeySecretRefPtrOutput() IssuerSpecAcmeExternalAccountBindingKeySecretRefPtrOutput
	ToIssuerSpecAcmeExternalAccountBindingKeySecretRefPtrOutputWithContext(context.Context) IssuerSpecAcmeExternalAccountBindingKeySecretRefPtrOutput
}

type issuerSpecAcmeExternalAccountBindingKeySecretRefPtrType IssuerSpecAcmeExternalAccountBindingKeySecretRefArgs

func IssuerSpecAcmeExternalAccountBindingKeySecretRefPtr(v *IssuerSpecAcmeExternalAccountBindingKeySecretRefArgs) IssuerSpecAcmeExternalAccountBindingKeySecretRefPtrInput {
	return (*issuerSpecAcmeExternalAccountBindingKeySecretRefPtrType)(v)
}

func (*issuerSpecAcmeExternalAccountBindingKeySecretRefPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecAcmeExternalAccountBindingKeySecretRef)(nil)).Elem()
}

func (i *issuerSpecAcmeExternalAccountBindingKeySecretRefPtrType) ToIssuerSpecAcmeExternalAccountBindingKeySecretRefPtrOutput() IssuerSpecAcmeExternalAccountBindingKeySecretRefPtrOutput {
	return i.ToIssuerSpecAcmeExternalAccountBindingKeySecretRefPtrOutputWithContext(context.Background())
}

func (i *issuerSpecAcmeExternalAccountBindingKeySecretRefPtrType) ToIssuerSpecAcmeExternalAccountBindingKeySecretRefPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeExternalAccountBindingKeySecretRefPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeExternalAccountBindingKeySecretRefPtrOutput)
}

func (i *issuerSpecAcmeExternalAccountBindingKeySecretRefPtrType) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecAcmeExternalAccountBindingKeySecretRef] {
	return pulumix.Output[*IssuerSpecAcmeExternalAccountBindingKeySecretRef]{
		OutputState: i.ToIssuerSpecAcmeExternalAccountBindingKeySecretRefPtrOutputWithContext(ctx).OutputState,
	}
}

// keySecretRef is a Secret Key Selector referencing a data item in a Kubernetes Secret which holds the symmetric MAC key of the External Account Binding. The `key` is the index string that is paired with the key data in the Secret and should not be confused with the key data itself, or indeed with the External Account Binding keyID above. The secret key stored in the Secret **must** be un-padded, base64 URL encoded data.
type IssuerSpecAcmeExternalAccountBindingKeySecretRefOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeExternalAccountBindingKeySecretRefOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeExternalAccountBindingKeySecretRef)(nil)).Elem()
}

func (o IssuerSpecAcmeExternalAccountBindingKeySecretRefOutput) ToIssuerSpecAcmeExternalAccountBindingKeySecretRefOutput() IssuerSpecAcmeExternalAccountBindingKeySecretRefOutput {
	return o
}

func (o IssuerSpecAcmeExternalAccountBindingKeySecretRefOutput) ToIssuerSpecAcmeExternalAccountBindingKeySecretRefOutputWithContext(ctx context.Context) IssuerSpecAcmeExternalAccountBindingKeySecretRefOutput {
	return o
}

func (o IssuerSpecAcmeExternalAccountBindingKeySecretRefOutput) ToIssuerSpecAcmeExternalAccountBindingKeySecretRefPtrOutput() IssuerSpecAcmeExternalAccountBindingKeySecretRefPtrOutput {
	return o.ToIssuerSpecAcmeExternalAccountBindingKeySecretRefPtrOutputWithContext(context.Background())
}

func (o IssuerSpecAcmeExternalAccountBindingKeySecretRefOutput) ToIssuerSpecAcmeExternalAccountBindingKeySecretRefPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeExternalAccountBindingKeySecretRefPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v IssuerSpecAcmeExternalAccountBindingKeySecretRef) *IssuerSpecAcmeExternalAccountBindingKeySecretRef {
		return &v
	}).(IssuerSpecAcmeExternalAccountBindingKeySecretRefPtrOutput)
}

func (o IssuerSpecAcmeExternalAccountBindingKeySecretRefOutput) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeExternalAccountBindingKeySecretRef] {
	return pulumix.Output[IssuerSpecAcmeExternalAccountBindingKeySecretRef]{
		OutputState: o.OutputState,
	}
}

// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
func (o IssuerSpecAcmeExternalAccountBindingKeySecretRefOutput) Key() pulumi.StringPtrOutput {
	return o.ApplyT(func(v IssuerSpecAcmeExternalAccountBindingKeySecretRef) *string { return v.Key }).(pulumi.StringPtrOutput)
}

// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
func (o IssuerSpecAcmeExternalAccountBindingKeySecretRefOutput) Name() pulumi.StringOutput {
	return o.ApplyT(func(v IssuerSpecAcmeExternalAccountBindingKeySecretRef) string { return v.Name }).(pulumi.StringOutput)
}

type IssuerSpecAcmeExternalAccountBindingKeySecretRefPtrOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeExternalAccountBindingKeySecretRefPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecAcmeExternalAccountBindingKeySecretRef)(nil)).Elem()
}

func (o IssuerSpecAcmeExternalAccountBindingKeySecretRefPtrOutput) ToIssuerSpecAcmeExternalAccountBindingKeySecretRefPtrOutput() IssuerSpecAcmeExternalAccountBindingKeySecretRefPtrOutput {
	return o
}

func (o IssuerSpecAcmeExternalAccountBindingKeySecretRefPtrOutput) ToIssuerSpecAcmeExternalAccountBindingKeySecretRefPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeExternalAccountBindingKeySecretRefPtrOutput {
	return o
}

func (o IssuerSpecAcmeExternalAccountBindingKeySecretRefPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecAcmeExternalAccountBindingKeySecretRef] {
	return pulumix.Output[*IssuerSpecAcmeExternalAccountBindingKeySecretRef]{
		OutputState: o.OutputState,
	}
}

func (o IssuerSpecAcmeExternalAccountBindingKeySecretRefPtrOutput) Elem() IssuerSpecAcmeExternalAccountBindingKeySecretRefOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeExternalAccountBindingKeySecretRef) IssuerSpecAcmeExternalAccountBindingKeySecretRef {
		if v != nil {
			return *v
		}
		var ret IssuerSpecAcmeExternalAccountBindingKeySecretRef
		return ret
	}).(IssuerSpecAcmeExternalAccountBindingKeySecretRefOutput)
}

// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
func (o IssuerSpecAcmeExternalAccountBindingKeySecretRefPtrOutput) Key() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeExternalAccountBindingKeySecretRef) *string {
		if v == nil {
			return nil
		}
		return v.Key
	}).(pulumi.StringPtrOutput)
}

// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
func (o IssuerSpecAcmeExternalAccountBindingKeySecretRefPtrOutput) Name() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeExternalAccountBindingKeySecretRef) *string {
		if v == nil {
			return nil
		}
		return &v.Name
	}).(pulumi.StringPtrOutput)
}

// PrivateKey is the name of a Kubernetes Secret resource that will be used to store the automatically generated ACME account private key. Optionally, a `key` may be specified to select a specific entry within the named Secret resource. If `key` is not specified, a default of `tls.key` will be used.
type IssuerSpecAcmePrivateKeySecretRef struct {
	// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
	Key *string `pulumi:"key"`
	// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
	Name string `pulumi:"name"`
}

// IssuerSpecAcmePrivateKeySecretRefInput is an input type that accepts IssuerSpecAcmePrivateKeySecretRefArgs and IssuerSpecAcmePrivateKeySecretRefOutput values.
// You can construct a concrete instance of `IssuerSpecAcmePrivateKeySecretRefInput` via:
//
//	IssuerSpecAcmePrivateKeySecretRefArgs{...}
type IssuerSpecAcmePrivateKeySecretRefInput interface {
	pulumi.Input

	ToIssuerSpecAcmePrivateKeySecretRefOutput() IssuerSpecAcmePrivateKeySecretRefOutput
	ToIssuerSpecAcmePrivateKeySecretRefOutputWithContext(context.Context) IssuerSpecAcmePrivateKeySecretRefOutput
}

// PrivateKey is the name of a Kubernetes Secret resource that will be used to store the automatically generated ACME account private key. Optionally, a `key` may be specified to select a specific entry within the named Secret resource. If `key` is not specified, a default of `tls.key` will be used.
type IssuerSpecAcmePrivateKeySecretRefArgs struct {
	// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
	Key pulumi.StringPtrInput `pulumi:"key"`
	// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
	Name pulumi.StringInput `pulumi:"name"`
}

func (IssuerSpecAcmePrivateKeySecretRefArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmePrivateKeySecretRef)(nil)).Elem()
}

func (i IssuerSpecAcmePrivateKeySecretRefArgs) ToIssuerSpecAcmePrivateKeySecretRefOutput() IssuerSpecAcmePrivateKeySecretRefOutput {
	return i.ToIssuerSpecAcmePrivateKeySecretRefOutputWithContext(context.Background())
}

func (i IssuerSpecAcmePrivateKeySecretRefArgs) ToIssuerSpecAcmePrivateKeySecretRefOutputWithContext(ctx context.Context) IssuerSpecAcmePrivateKeySecretRefOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmePrivateKeySecretRefOutput)
}

func (i IssuerSpecAcmePrivateKeySecretRefArgs) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmePrivateKeySecretRef] {
	return pulumix.Output[IssuerSpecAcmePrivateKeySecretRef]{
		OutputState: i.ToIssuerSpecAcmePrivateKeySecretRefOutputWithContext(ctx).OutputState,
	}
}

func (i IssuerSpecAcmePrivateKeySecretRefArgs) ToIssuerSpecAcmePrivateKeySecretRefPtrOutput() IssuerSpecAcmePrivateKeySecretRefPtrOutput {
	return i.ToIssuerSpecAcmePrivateKeySecretRefPtrOutputWithContext(context.Background())
}

func (i IssuerSpecAcmePrivateKeySecretRefArgs) ToIssuerSpecAcmePrivateKeySecretRefPtrOutputWithContext(ctx context.Context) IssuerSpecAcmePrivateKeySecretRefPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmePrivateKeySecretRefOutput).ToIssuerSpecAcmePrivateKeySecretRefPtrOutputWithContext(ctx)
}

// IssuerSpecAcmePrivateKeySecretRefPtrInput is an input type that accepts IssuerSpecAcmePrivateKeySecretRefArgs, IssuerSpecAcmePrivateKeySecretRefPtr and IssuerSpecAcmePrivateKeySecretRefPtrOutput values.
// You can construct a concrete instance of `IssuerSpecAcmePrivateKeySecretRefPtrInput` via:
//
//	        IssuerSpecAcmePrivateKeySecretRefArgs{...}
//
//	or:
//
//	        nil
type IssuerSpecAcmePrivateKeySecretRefPtrInput interface {
	pulumi.Input

	ToIssuerSpecAcmePrivateKeySecretRefPtrOutput() IssuerSpecAcmePrivateKeySecretRefPtrOutput
	ToIssuerSpecAcmePrivateKeySecretRefPtrOutputWithContext(context.Context) IssuerSpecAcmePrivateKeySecretRefPtrOutput
}

type issuerSpecAcmePrivateKeySecretRefPtrType IssuerSpecAcmePrivateKeySecretRefArgs

func IssuerSpecAcmePrivateKeySecretRefPtr(v *IssuerSpecAcmePrivateKeySecretRefArgs) IssuerSpecAcmePrivateKeySecretRefPtrInput {
	return (*issuerSpecAcmePrivateKeySecretRefPtrType)(v)
}

func (*issuerSpecAcmePrivateKeySecretRefPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecAcmePrivateKeySecretRef)(nil)).Elem()
}

func (i *issuerSpecAcmePrivateKeySecretRefPtrType) ToIssuerSpecAcmePrivateKeySecretRefPtrOutput() IssuerSpecAcmePrivateKeySecretRefPtrOutput {
	return i.ToIssuerSpecAcmePrivateKeySecretRefPtrOutputWithContext(context.Background())
}

func (i *issuerSpecAcmePrivateKeySecretRefPtrType) ToIssuerSpecAcmePrivateKeySecretRefPtrOutputWithContext(ctx context.Context) IssuerSpecAcmePrivateKeySecretRefPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmePrivateKeySecretRefPtrOutput)
}

func (i *issuerSpecAcmePrivateKeySecretRefPtrType) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecAcmePrivateKeySecretRef] {
	return pulumix.Output[*IssuerSpecAcmePrivateKeySecretRef]{
		OutputState: i.ToIssuerSpecAcmePrivateKeySecretRefPtrOutputWithContext(ctx).OutputState,
	}
}

// PrivateKey is the name of a Kubernetes Secret resource that will be used to store the automatically generated ACME account private key. Optionally, a `key` may be specified to select a specific entry within the named Secret resource. If `key` is not specified, a default of `tls.key` will be used.
type IssuerSpecAcmePrivateKeySecretRefOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmePrivateKeySecretRefOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmePrivateKeySecretRef)(nil)).Elem()
}

func (o IssuerSpecAcmePrivateKeySecretRefOutput) ToIssuerSpecAcmePrivateKeySecretRefOutput() IssuerSpecAcmePrivateKeySecretRefOutput {
	return o
}

func (o IssuerSpecAcmePrivateKeySecretRefOutput) ToIssuerSpecAcmePrivateKeySecretRefOutputWithContext(ctx context.Context) IssuerSpecAcmePrivateKeySecretRefOutput {
	return o
}

func (o IssuerSpecAcmePrivateKeySecretRefOutput) ToIssuerSpecAcmePrivateKeySecretRefPtrOutput() IssuerSpecAcmePrivateKeySecretRefPtrOutput {
	return o.ToIssuerSpecAcmePrivateKeySecretRefPtrOutputWithContext(context.Background())
}

func (o IssuerSpecAcmePrivateKeySecretRefOutput) ToIssuerSpecAcmePrivateKeySecretRefPtrOutputWithContext(ctx context.Context) IssuerSpecAcmePrivateKeySecretRefPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v IssuerSpecAcmePrivateKeySecretRef) *IssuerSpecAcmePrivateKeySecretRef {
		return &v
	}).(IssuerSpecAcmePrivateKeySecretRefPtrOutput)
}

func (o IssuerSpecAcmePrivateKeySecretRefOutput) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmePrivateKeySecretRef] {
	return pulumix.Output[IssuerSpecAcmePrivateKeySecretRef]{
		OutputState: o.OutputState,
	}
}

// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
func (o IssuerSpecAcmePrivateKeySecretRefOutput) Key() pulumi.StringPtrOutput {
	return o.ApplyT(func(v IssuerSpecAcmePrivateKeySecretRef) *string { return v.Key }).(pulumi.StringPtrOutput)
}

// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
func (o IssuerSpecAcmePrivateKeySecretRefOutput) Name() pulumi.StringOutput {
	return o.ApplyT(func(v IssuerSpecAcmePrivateKeySecretRef) string { return v.Name }).(pulumi.StringOutput)
}

type IssuerSpecAcmePrivateKeySecretRefPtrOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmePrivateKeySecretRefPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecAcmePrivateKeySecretRef)(nil)).Elem()
}

func (o IssuerSpecAcmePrivateKeySecretRefPtrOutput) ToIssuerSpecAcmePrivateKeySecretRefPtrOutput() IssuerSpecAcmePrivateKeySecretRefPtrOutput {
	return o
}

func (o IssuerSpecAcmePrivateKeySecretRefPtrOutput) ToIssuerSpecAcmePrivateKeySecretRefPtrOutputWithContext(ctx context.Context) IssuerSpecAcmePrivateKeySecretRefPtrOutput {
	return o
}

func (o IssuerSpecAcmePrivateKeySecretRefPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecAcmePrivateKeySecretRef] {
	return pulumix.Output[*IssuerSpecAcmePrivateKeySecretRef]{
		OutputState: o.OutputState,
	}
}

func (o IssuerSpecAcmePrivateKeySecretRefPtrOutput) Elem() IssuerSpecAcmePrivateKeySecretRefOutput {
	return o.ApplyT(func(v *IssuerSpecAcmePrivateKeySecretRef) IssuerSpecAcmePrivateKeySecretRef {
		if v != nil {
			return *v
		}
		var ret IssuerSpecAcmePrivateKeySecretRef
		return ret
	}).(IssuerSpecAcmePrivateKeySecretRefOutput)
}

// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
func (o IssuerSpecAcmePrivateKeySecretRefPtrOutput) Key() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *IssuerSpecAcmePrivateKeySecretRef) *string {
		if v == nil {
			return nil
		}
		return v.Key
	}).(pulumi.StringPtrOutput)
}

// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
func (o IssuerSpecAcmePrivateKeySecretRefPtrOutput) Name() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *IssuerSpecAcmePrivateKeySecretRef) *string {
		if v == nil {
			return nil
		}
		return &v.Name
	}).(pulumi.StringPtrOutput)
}

// Configures an issuer to solve challenges using the specified options. Only one of HTTP01 or DNS01 may be provided.
type IssuerSpecAcmeSolvers struct {
	// Configures cert-manager to attempt to complete authorizations by performing the DNS01 challenge flow.
	Dns01 *IssuerSpecAcmeSolversDns01 `pulumi:"dns01"`
	// Configures cert-manager to attempt to complete authorizations by performing the HTTP01 challenge flow. It is not possible to obtain certificates for wildcard domain names (e.g. `*.example.com`) using the HTTP01 challenge mechanism.
	Http01 *IssuerSpecAcmeSolversHttp01 `pulumi:"http01"`
	// Selector selects a set of DNSNames on the Certificate resource that should be solved using this challenge solver. If not specified, the solver will be treated as the 'default' solver with the lowest priority, i.e. if any other solver has a more specific match, it will be used instead.
	Selector *IssuerSpecAcmeSolversSelector `pulumi:"selector"`
}

// IssuerSpecAcmeSolversInput is an input type that accepts IssuerSpecAcmeSolversArgs and IssuerSpecAcmeSolversOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversInput` via:
//
//	IssuerSpecAcmeSolversArgs{...}
type IssuerSpecAcmeSolversInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversOutput() IssuerSpecAcmeSolversOutput
	ToIssuerSpecAcmeSolversOutputWithContext(context.Context) IssuerSpecAcmeSolversOutput
}

// Configures an issuer to solve challenges using the specified options. Only one of HTTP01 or DNS01 may be provided.
type IssuerSpecAcmeSolversArgs struct {
	// Configures cert-manager to attempt to complete authorizations by performing the DNS01 challenge flow.
	Dns01 IssuerSpecAcmeSolversDns01PtrInput `pulumi:"dns01"`
	// Configures cert-manager to attempt to complete authorizations by performing the HTTP01 challenge flow. It is not possible to obtain certificates for wildcard domain names (e.g. `*.example.com`) using the HTTP01 challenge mechanism.
	Http01 IssuerSpecAcmeSolversHttp01PtrInput `pulumi:"http01"`
	// Selector selects a set of DNSNames on the Certificate resource that should be solved using this challenge solver. If not specified, the solver will be treated as the 'default' solver with the lowest priority, i.e. if any other solver has a more specific match, it will be used instead.
	Selector IssuerSpecAcmeSolversSelectorPtrInput `pulumi:"selector"`
}

func (IssuerSpecAcmeSolversArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolvers)(nil)).Elem()
}

func (i IssuerSpecAcmeSolversArgs) ToIssuerSpecAcmeSolversOutput() IssuerSpecAcmeSolversOutput {
	return i.ToIssuerSpecAcmeSolversOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversArgs) ToIssuerSpecAcmeSolversOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversOutput)
}

func (i IssuerSpecAcmeSolversArgs) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolvers] {
	return pulumix.Output[IssuerSpecAcmeSolvers]{
		OutputState: i.ToIssuerSpecAcmeSolversOutputWithContext(ctx).OutputState,
	}
}

// IssuerSpecAcmeSolversArrayInput is an input type that accepts IssuerSpecAcmeSolversArray and IssuerSpecAcmeSolversArrayOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversArrayInput` via:
//
//	IssuerSpecAcmeSolversArray{ IssuerSpecAcmeSolversArgs{...} }
type IssuerSpecAcmeSolversArrayInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversArrayOutput() IssuerSpecAcmeSolversArrayOutput
	ToIssuerSpecAcmeSolversArrayOutputWithContext(context.Context) IssuerSpecAcmeSolversArrayOutput
}

type IssuerSpecAcmeSolversArray []IssuerSpecAcmeSolversInput

func (IssuerSpecAcmeSolversArray) ElementType() reflect.Type {
	return reflect.TypeOf((*[]IssuerSpecAcmeSolvers)(nil)).Elem()
}

func (i IssuerSpecAcmeSolversArray) ToIssuerSpecAcmeSolversArrayOutput() IssuerSpecAcmeSolversArrayOutput {
	return i.ToIssuerSpecAcmeSolversArrayOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversArray) ToIssuerSpecAcmeSolversArrayOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversArrayOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversArrayOutput)
}

func (i IssuerSpecAcmeSolversArray) ToOutput(ctx context.Context) pulumix.Output[[]IssuerSpecAcmeSolvers] {
	return pulumix.Output[[]IssuerSpecAcmeSolvers]{
		OutputState: i.ToIssuerSpecAcmeSolversArrayOutputWithContext(ctx).OutputState,
	}
}

// Configures an issuer to solve challenges using the specified options. Only one of HTTP01 or DNS01 may be provided.
type IssuerSpecAcmeSolversOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolvers)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversOutput) ToIssuerSpecAcmeSolversOutput() IssuerSpecAcmeSolversOutput {
	return o
}

func (o IssuerSpecAcmeSolversOutput) ToIssuerSpecAcmeSolversOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversOutput {
	return o
}

func (o IssuerSpecAcmeSolversOutput) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolvers] {
	return pulumix.Output[IssuerSpecAcmeSolvers]{
		OutputState: o.OutputState,
	}
}

// Configures cert-manager to attempt to complete authorizations by performing the DNS01 challenge flow.
func (o IssuerSpecAcmeSolversOutput) Dns01() IssuerSpecAcmeSolversDns01PtrOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolvers) *IssuerSpecAcmeSolversDns01 { return v.Dns01 }).(IssuerSpecAcmeSolversDns01PtrOutput)
}

// Configures cert-manager to attempt to complete authorizations by performing the HTTP01 challenge flow. It is not possible to obtain certificates for wildcard domain names (e.g. `*.example.com`) using the HTTP01 challenge mechanism.
func (o IssuerSpecAcmeSolversOutput) Http01() IssuerSpecAcmeSolversHttp01PtrOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolvers) *IssuerSpecAcmeSolversHttp01 { return v.Http01 }).(IssuerSpecAcmeSolversHttp01PtrOutput)
}

// Selector selects a set of DNSNames on the Certificate resource that should be solved using this challenge solver. If not specified, the solver will be treated as the 'default' solver with the lowest priority, i.e. if any other solver has a more specific match, it will be used instead.
func (o IssuerSpecAcmeSolversOutput) Selector() IssuerSpecAcmeSolversSelectorPtrOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolvers) *IssuerSpecAcmeSolversSelector { return v.Selector }).(IssuerSpecAcmeSolversSelectorPtrOutput)
}

type IssuerSpecAcmeSolversArrayOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversArrayOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*[]IssuerSpecAcmeSolvers)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversArrayOutput) ToIssuerSpecAcmeSolversArrayOutput() IssuerSpecAcmeSolversArrayOutput {
	return o
}

func (o IssuerSpecAcmeSolversArrayOutput) ToIssuerSpecAcmeSolversArrayOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversArrayOutput {
	return o
}

func (o IssuerSpecAcmeSolversArrayOutput) ToOutput(ctx context.Context) pulumix.Output[[]IssuerSpecAcmeSolvers] {
	return pulumix.Output[[]IssuerSpecAcmeSolvers]{
		OutputState: o.OutputState,
	}
}

func (o IssuerSpecAcmeSolversArrayOutput) Index(i pulumi.IntInput) IssuerSpecAcmeSolversOutput {
	return pulumi.All(o, i).ApplyT(func(vs []interface{}) IssuerSpecAcmeSolvers {
		return vs[0].([]IssuerSpecAcmeSolvers)[vs[1].(int)]
	}).(IssuerSpecAcmeSolversOutput)
}

// Configures cert-manager to attempt to complete authorizations by performing the DNS01 challenge flow.
type IssuerSpecAcmeSolversDns01 struct {
	// Use the 'ACME DNS' (https://github.com/joohoi/acme-dns) API to manage DNS01 challenge records.
	AcmeDNS *IssuerSpecAcmeSolversDns01AcmeDNS `pulumi:"acmeDNS"`
	// Use the Akamai DNS zone management API to manage DNS01 challenge records.
	Akamai *IssuerSpecAcmeSolversDns01Akamai `pulumi:"akamai"`
	// Use the Microsoft Azure DNS API to manage DNS01 challenge records.
	AzureDNS *IssuerSpecAcmeSolversDns01AzureDNS `pulumi:"azureDNS"`
	// Use the Google Cloud DNS API to manage DNS01 challenge records.
	CloudDNS *IssuerSpecAcmeSolversDns01CloudDNS `pulumi:"cloudDNS"`
	// Use the Cloudflare API to manage DNS01 challenge records.
	Cloudflare *IssuerSpecAcmeSolversDns01Cloudflare `pulumi:"cloudflare"`
	// CNAMEStrategy configures how the DNS01 provider should handle CNAME records when found in DNS zones.
	CnameStrategy *string `pulumi:"cnameStrategy"`
	// Use the DigitalOcean DNS API to manage DNS01 challenge records.
	Digitalocean *IssuerSpecAcmeSolversDns01Digitalocean `pulumi:"digitalocean"`
	// Use RFC2136 ("Dynamic Updates in the Domain Name System") (https://datatracker.ietf.org/doc/rfc2136/) to manage DNS01 challenge records.
	Rfc2136 *IssuerSpecAcmeSolversDns01Rfc2136 `pulumi:"rfc2136"`
	// Use the AWS Route53 API to manage DNS01 challenge records.
	Route53 *IssuerSpecAcmeSolversDns01Route53 `pulumi:"route53"`
	// Configure an external webhook based DNS01 challenge solver to manage DNS01 challenge records.
	Webhook *IssuerSpecAcmeSolversDns01Webhook `pulumi:"webhook"`
}

// IssuerSpecAcmeSolversDns01Input is an input type that accepts IssuerSpecAcmeSolversDns01Args and IssuerSpecAcmeSolversDns01Output values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversDns01Input` via:
//
//	IssuerSpecAcmeSolversDns01Args{...}
type IssuerSpecAcmeSolversDns01Input interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversDns01Output() IssuerSpecAcmeSolversDns01Output
	ToIssuerSpecAcmeSolversDns01OutputWithContext(context.Context) IssuerSpecAcmeSolversDns01Output
}

// Configures cert-manager to attempt to complete authorizations by performing the DNS01 challenge flow.
type IssuerSpecAcmeSolversDns01Args struct {
	// Use the 'ACME DNS' (https://github.com/joohoi/acme-dns) API to manage DNS01 challenge records.
	AcmeDNS IssuerSpecAcmeSolversDns01AcmeDNSPtrInput `pulumi:"acmeDNS"`
	// Use the Akamai DNS zone management API to manage DNS01 challenge records.
	Akamai IssuerSpecAcmeSolversDns01AkamaiPtrInput `pulumi:"akamai"`
	// Use the Microsoft Azure DNS API to manage DNS01 challenge records.
	AzureDNS IssuerSpecAcmeSolversDns01AzureDNSPtrInput `pulumi:"azureDNS"`
	// Use the Google Cloud DNS API to manage DNS01 challenge records.
	CloudDNS IssuerSpecAcmeSolversDns01CloudDNSPtrInput `pulumi:"cloudDNS"`
	// Use the Cloudflare API to manage DNS01 challenge records.
	Cloudflare IssuerSpecAcmeSolversDns01CloudflarePtrInput `pulumi:"cloudflare"`
	// CNAMEStrategy configures how the DNS01 provider should handle CNAME records when found in DNS zones.
	CnameStrategy pulumi.StringPtrInput `pulumi:"cnameStrategy"`
	// Use the DigitalOcean DNS API to manage DNS01 challenge records.
	Digitalocean IssuerSpecAcmeSolversDns01DigitaloceanPtrInput `pulumi:"digitalocean"`
	// Use RFC2136 ("Dynamic Updates in the Domain Name System") (https://datatracker.ietf.org/doc/rfc2136/) to manage DNS01 challenge records.
	Rfc2136 IssuerSpecAcmeSolversDns01Rfc2136PtrInput `pulumi:"rfc2136"`
	// Use the AWS Route53 API to manage DNS01 challenge records.
	Route53 IssuerSpecAcmeSolversDns01Route53PtrInput `pulumi:"route53"`
	// Configure an external webhook based DNS01 challenge solver to manage DNS01 challenge records.
	Webhook IssuerSpecAcmeSolversDns01WebhookPtrInput `pulumi:"webhook"`
}

func (IssuerSpecAcmeSolversDns01Args) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversDns01)(nil)).Elem()
}

func (i IssuerSpecAcmeSolversDns01Args) ToIssuerSpecAcmeSolversDns01Output() IssuerSpecAcmeSolversDns01Output {
	return i.ToIssuerSpecAcmeSolversDns01OutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversDns01Args) ToIssuerSpecAcmeSolversDns01OutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01Output {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversDns01Output)
}

func (i IssuerSpecAcmeSolversDns01Args) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversDns01] {
	return pulumix.Output[IssuerSpecAcmeSolversDns01]{
		OutputState: i.ToIssuerSpecAcmeSolversDns01OutputWithContext(ctx).OutputState,
	}
}

func (i IssuerSpecAcmeSolversDns01Args) ToIssuerSpecAcmeSolversDns01PtrOutput() IssuerSpecAcmeSolversDns01PtrOutput {
	return i.ToIssuerSpecAcmeSolversDns01PtrOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversDns01Args) ToIssuerSpecAcmeSolversDns01PtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01PtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversDns01Output).ToIssuerSpecAcmeSolversDns01PtrOutputWithContext(ctx)
}

// IssuerSpecAcmeSolversDns01PtrInput is an input type that accepts IssuerSpecAcmeSolversDns01Args, IssuerSpecAcmeSolversDns01Ptr and IssuerSpecAcmeSolversDns01PtrOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversDns01PtrInput` via:
//
//	        IssuerSpecAcmeSolversDns01Args{...}
//
//	or:
//
//	        nil
type IssuerSpecAcmeSolversDns01PtrInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversDns01PtrOutput() IssuerSpecAcmeSolversDns01PtrOutput
	ToIssuerSpecAcmeSolversDns01PtrOutputWithContext(context.Context) IssuerSpecAcmeSolversDns01PtrOutput
}

type issuerSpecAcmeSolversDns01PtrType IssuerSpecAcmeSolversDns01Args

func IssuerSpecAcmeSolversDns01Ptr(v *IssuerSpecAcmeSolversDns01Args) IssuerSpecAcmeSolversDns01PtrInput {
	return (*issuerSpecAcmeSolversDns01PtrType)(v)
}

func (*issuerSpecAcmeSolversDns01PtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecAcmeSolversDns01)(nil)).Elem()
}

func (i *issuerSpecAcmeSolversDns01PtrType) ToIssuerSpecAcmeSolversDns01PtrOutput() IssuerSpecAcmeSolversDns01PtrOutput {
	return i.ToIssuerSpecAcmeSolversDns01PtrOutputWithContext(context.Background())
}

func (i *issuerSpecAcmeSolversDns01PtrType) ToIssuerSpecAcmeSolversDns01PtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01PtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversDns01PtrOutput)
}

func (i *issuerSpecAcmeSolversDns01PtrType) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecAcmeSolversDns01] {
	return pulumix.Output[*IssuerSpecAcmeSolversDns01]{
		OutputState: i.ToIssuerSpecAcmeSolversDns01PtrOutputWithContext(ctx).OutputState,
	}
}

// Configures cert-manager to attempt to complete authorizations by performing the DNS01 challenge flow.
type IssuerSpecAcmeSolversDns01Output struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversDns01Output) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversDns01)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversDns01Output) ToIssuerSpecAcmeSolversDns01Output() IssuerSpecAcmeSolversDns01Output {
	return o
}

func (o IssuerSpecAcmeSolversDns01Output) ToIssuerSpecAcmeSolversDns01OutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01Output {
	return o
}

func (o IssuerSpecAcmeSolversDns01Output) ToIssuerSpecAcmeSolversDns01PtrOutput() IssuerSpecAcmeSolversDns01PtrOutput {
	return o.ToIssuerSpecAcmeSolversDns01PtrOutputWithContext(context.Background())
}

func (o IssuerSpecAcmeSolversDns01Output) ToIssuerSpecAcmeSolversDns01PtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01PtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v IssuerSpecAcmeSolversDns01) *IssuerSpecAcmeSolversDns01 {
		return &v
	}).(IssuerSpecAcmeSolversDns01PtrOutput)
}

func (o IssuerSpecAcmeSolversDns01Output) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversDns01] {
	return pulumix.Output[IssuerSpecAcmeSolversDns01]{
		OutputState: o.OutputState,
	}
}

// Use the 'ACME DNS' (https://github.com/joohoi/acme-dns) API to manage DNS01 challenge records.
func (o IssuerSpecAcmeSolversDns01Output) AcmeDNS() IssuerSpecAcmeSolversDns01AcmeDNSPtrOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversDns01) *IssuerSpecAcmeSolversDns01AcmeDNS { return v.AcmeDNS }).(IssuerSpecAcmeSolversDns01AcmeDNSPtrOutput)
}

// Use the Akamai DNS zone management API to manage DNS01 challenge records.
func (o IssuerSpecAcmeSolversDns01Output) Akamai() IssuerSpecAcmeSolversDns01AkamaiPtrOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversDns01) *IssuerSpecAcmeSolversDns01Akamai { return v.Akamai }).(IssuerSpecAcmeSolversDns01AkamaiPtrOutput)
}

// Use the Microsoft Azure DNS API to manage DNS01 challenge records.
func (o IssuerSpecAcmeSolversDns01Output) AzureDNS() IssuerSpecAcmeSolversDns01AzureDNSPtrOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversDns01) *IssuerSpecAcmeSolversDns01AzureDNS { return v.AzureDNS }).(IssuerSpecAcmeSolversDns01AzureDNSPtrOutput)
}

// Use the Google Cloud DNS API to manage DNS01 challenge records.
func (o IssuerSpecAcmeSolversDns01Output) CloudDNS() IssuerSpecAcmeSolversDns01CloudDNSPtrOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversDns01) *IssuerSpecAcmeSolversDns01CloudDNS { return v.CloudDNS }).(IssuerSpecAcmeSolversDns01CloudDNSPtrOutput)
}

// Use the Cloudflare API to manage DNS01 challenge records.
func (o IssuerSpecAcmeSolversDns01Output) Cloudflare() IssuerSpecAcmeSolversDns01CloudflarePtrOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversDns01) *IssuerSpecAcmeSolversDns01Cloudflare { return v.Cloudflare }).(IssuerSpecAcmeSolversDns01CloudflarePtrOutput)
}

// CNAMEStrategy configures how the DNS01 provider should handle CNAME records when found in DNS zones.
func (o IssuerSpecAcmeSolversDns01Output) CnameStrategy() pulumi.StringPtrOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversDns01) *string { return v.CnameStrategy }).(pulumi.StringPtrOutput)
}

// Use the DigitalOcean DNS API to manage DNS01 challenge records.
func (o IssuerSpecAcmeSolversDns01Output) Digitalocean() IssuerSpecAcmeSolversDns01DigitaloceanPtrOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversDns01) *IssuerSpecAcmeSolversDns01Digitalocean { return v.Digitalocean }).(IssuerSpecAcmeSolversDns01DigitaloceanPtrOutput)
}

// Use RFC2136 ("Dynamic Updates in the Domain Name System") (https://datatracker.ietf.org/doc/rfc2136/) to manage DNS01 challenge records.
func (o IssuerSpecAcmeSolversDns01Output) Rfc2136() IssuerSpecAcmeSolversDns01Rfc2136PtrOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversDns01) *IssuerSpecAcmeSolversDns01Rfc2136 { return v.Rfc2136 }).(IssuerSpecAcmeSolversDns01Rfc2136PtrOutput)
}

// Use the AWS Route53 API to manage DNS01 challenge records.
func (o IssuerSpecAcmeSolversDns01Output) Route53() IssuerSpecAcmeSolversDns01Route53PtrOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversDns01) *IssuerSpecAcmeSolversDns01Route53 { return v.Route53 }).(IssuerSpecAcmeSolversDns01Route53PtrOutput)
}

// Configure an external webhook based DNS01 challenge solver to manage DNS01 challenge records.
func (o IssuerSpecAcmeSolversDns01Output) Webhook() IssuerSpecAcmeSolversDns01WebhookPtrOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversDns01) *IssuerSpecAcmeSolversDns01Webhook { return v.Webhook }).(IssuerSpecAcmeSolversDns01WebhookPtrOutput)
}

type IssuerSpecAcmeSolversDns01PtrOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversDns01PtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecAcmeSolversDns01)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversDns01PtrOutput) ToIssuerSpecAcmeSolversDns01PtrOutput() IssuerSpecAcmeSolversDns01PtrOutput {
	return o
}

func (o IssuerSpecAcmeSolversDns01PtrOutput) ToIssuerSpecAcmeSolversDns01PtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01PtrOutput {
	return o
}

func (o IssuerSpecAcmeSolversDns01PtrOutput) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecAcmeSolversDns01] {
	return pulumix.Output[*IssuerSpecAcmeSolversDns01]{
		OutputState: o.OutputState,
	}
}

func (o IssuerSpecAcmeSolversDns01PtrOutput) Elem() IssuerSpecAcmeSolversDns01Output {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversDns01) IssuerSpecAcmeSolversDns01 {
		if v != nil {
			return *v
		}
		var ret IssuerSpecAcmeSolversDns01
		return ret
	}).(IssuerSpecAcmeSolversDns01Output)
}

// Use the 'ACME DNS' (https://github.com/joohoi/acme-dns) API to manage DNS01 challenge records.
func (o IssuerSpecAcmeSolversDns01PtrOutput) AcmeDNS() IssuerSpecAcmeSolversDns01AcmeDNSPtrOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversDns01) *IssuerSpecAcmeSolversDns01AcmeDNS {
		if v == nil {
			return nil
		}
		return v.AcmeDNS
	}).(IssuerSpecAcmeSolversDns01AcmeDNSPtrOutput)
}

// Use the Akamai DNS zone management API to manage DNS01 challenge records.
func (o IssuerSpecAcmeSolversDns01PtrOutput) Akamai() IssuerSpecAcmeSolversDns01AkamaiPtrOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversDns01) *IssuerSpecAcmeSolversDns01Akamai {
		if v == nil {
			return nil
		}
		return v.Akamai
	}).(IssuerSpecAcmeSolversDns01AkamaiPtrOutput)
}

// Use the Microsoft Azure DNS API to manage DNS01 challenge records.
func (o IssuerSpecAcmeSolversDns01PtrOutput) AzureDNS() IssuerSpecAcmeSolversDns01AzureDNSPtrOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversDns01) *IssuerSpecAcmeSolversDns01AzureDNS {
		if v == nil {
			return nil
		}
		return v.AzureDNS
	}).(IssuerSpecAcmeSolversDns01AzureDNSPtrOutput)
}

// Use the Google Cloud DNS API to manage DNS01 challenge records.
func (o IssuerSpecAcmeSolversDns01PtrOutput) CloudDNS() IssuerSpecAcmeSolversDns01CloudDNSPtrOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversDns01) *IssuerSpecAcmeSolversDns01CloudDNS {
		if v == nil {
			return nil
		}
		return v.CloudDNS
	}).(IssuerSpecAcmeSolversDns01CloudDNSPtrOutput)
}

// Use the Cloudflare API to manage DNS01 challenge records.
func (o IssuerSpecAcmeSolversDns01PtrOutput) Cloudflare() IssuerSpecAcmeSolversDns01CloudflarePtrOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversDns01) *IssuerSpecAcmeSolversDns01Cloudflare {
		if v == nil {
			return nil
		}
		return v.Cloudflare
	}).(IssuerSpecAcmeSolversDns01CloudflarePtrOutput)
}

// CNAMEStrategy configures how the DNS01 provider should handle CNAME records when found in DNS zones.
func (o IssuerSpecAcmeSolversDns01PtrOutput) CnameStrategy() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversDns01) *string {
		if v == nil {
			return nil
		}
		return v.CnameStrategy
	}).(pulumi.StringPtrOutput)
}

// Use the DigitalOcean DNS API to manage DNS01 challenge records.
func (o IssuerSpecAcmeSolversDns01PtrOutput) Digitalocean() IssuerSpecAcmeSolversDns01DigitaloceanPtrOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversDns01) *IssuerSpecAcmeSolversDns01Digitalocean {
		if v == nil {
			return nil
		}
		return v.Digitalocean
	}).(IssuerSpecAcmeSolversDns01DigitaloceanPtrOutput)
}

// Use RFC2136 ("Dynamic Updates in the Domain Name System") (https://datatracker.ietf.org/doc/rfc2136/) to manage DNS01 challenge records.
func (o IssuerSpecAcmeSolversDns01PtrOutput) Rfc2136() IssuerSpecAcmeSolversDns01Rfc2136PtrOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversDns01) *IssuerSpecAcmeSolversDns01Rfc2136 {
		if v == nil {
			return nil
		}
		return v.Rfc2136
	}).(IssuerSpecAcmeSolversDns01Rfc2136PtrOutput)
}

// Use the AWS Route53 API to manage DNS01 challenge records.
func (o IssuerSpecAcmeSolversDns01PtrOutput) Route53() IssuerSpecAcmeSolversDns01Route53PtrOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversDns01) *IssuerSpecAcmeSolversDns01Route53 {
		if v == nil {
			return nil
		}
		return v.Route53
	}).(IssuerSpecAcmeSolversDns01Route53PtrOutput)
}

// Configure an external webhook based DNS01 challenge solver to manage DNS01 challenge records.
func (o IssuerSpecAcmeSolversDns01PtrOutput) Webhook() IssuerSpecAcmeSolversDns01WebhookPtrOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversDns01) *IssuerSpecAcmeSolversDns01Webhook {
		if v == nil {
			return nil
		}
		return v.Webhook
	}).(IssuerSpecAcmeSolversDns01WebhookPtrOutput)
}

// Use the 'ACME DNS' (https://github.com/joohoi/acme-dns) API to manage DNS01 challenge records.
type IssuerSpecAcmeSolversDns01AcmeDNS struct {
	// A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.
	AccountSecretRef IssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRef `pulumi:"accountSecretRef"`
	Host             string                                            `pulumi:"host"`
}

// IssuerSpecAcmeSolversDns01AcmeDNSInput is an input type that accepts IssuerSpecAcmeSolversDns01AcmeDNSArgs and IssuerSpecAcmeSolversDns01AcmeDNSOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversDns01AcmeDNSInput` via:
//
//	IssuerSpecAcmeSolversDns01AcmeDNSArgs{...}
type IssuerSpecAcmeSolversDns01AcmeDNSInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversDns01AcmeDNSOutput() IssuerSpecAcmeSolversDns01AcmeDNSOutput
	ToIssuerSpecAcmeSolversDns01AcmeDNSOutputWithContext(context.Context) IssuerSpecAcmeSolversDns01AcmeDNSOutput
}

// Use the 'ACME DNS' (https://github.com/joohoi/acme-dns) API to manage DNS01 challenge records.
type IssuerSpecAcmeSolversDns01AcmeDNSArgs struct {
	// A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.
	AccountSecretRef IssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefInput `pulumi:"accountSecretRef"`
	Host             pulumi.StringInput                                     `pulumi:"host"`
}

func (IssuerSpecAcmeSolversDns01AcmeDNSArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversDns01AcmeDNS)(nil)).Elem()
}

func (i IssuerSpecAcmeSolversDns01AcmeDNSArgs) ToIssuerSpecAcmeSolversDns01AcmeDNSOutput() IssuerSpecAcmeSolversDns01AcmeDNSOutput {
	return i.ToIssuerSpecAcmeSolversDns01AcmeDNSOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversDns01AcmeDNSArgs) ToIssuerSpecAcmeSolversDns01AcmeDNSOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01AcmeDNSOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversDns01AcmeDNSOutput)
}

func (i IssuerSpecAcmeSolversDns01AcmeDNSArgs) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversDns01AcmeDNS] {
	return pulumix.Output[IssuerSpecAcmeSolversDns01AcmeDNS]{
		OutputState: i.ToIssuerSpecAcmeSolversDns01AcmeDNSOutputWithContext(ctx).OutputState,
	}
}

func (i IssuerSpecAcmeSolversDns01AcmeDNSArgs) ToIssuerSpecAcmeSolversDns01AcmeDNSPtrOutput() IssuerSpecAcmeSolversDns01AcmeDNSPtrOutput {
	return i.ToIssuerSpecAcmeSolversDns01AcmeDNSPtrOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversDns01AcmeDNSArgs) ToIssuerSpecAcmeSolversDns01AcmeDNSPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01AcmeDNSPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversDns01AcmeDNSOutput).ToIssuerSpecAcmeSolversDns01AcmeDNSPtrOutputWithContext(ctx)
}

// IssuerSpecAcmeSolversDns01AcmeDNSPtrInput is an input type that accepts IssuerSpecAcmeSolversDns01AcmeDNSArgs, IssuerSpecAcmeSolversDns01AcmeDNSPtr and IssuerSpecAcmeSolversDns01AcmeDNSPtrOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversDns01AcmeDNSPtrInput` via:
//
//	        IssuerSpecAcmeSolversDns01AcmeDNSArgs{...}
//
//	or:
//
//	        nil
type IssuerSpecAcmeSolversDns01AcmeDNSPtrInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversDns01AcmeDNSPtrOutput() IssuerSpecAcmeSolversDns01AcmeDNSPtrOutput
	ToIssuerSpecAcmeSolversDns01AcmeDNSPtrOutputWithContext(context.Context) IssuerSpecAcmeSolversDns01AcmeDNSPtrOutput
}

type issuerSpecAcmeSolversDns01AcmeDNSPtrType IssuerSpecAcmeSolversDns01AcmeDNSArgs

func IssuerSpecAcmeSolversDns01AcmeDNSPtr(v *IssuerSpecAcmeSolversDns01AcmeDNSArgs) IssuerSpecAcmeSolversDns01AcmeDNSPtrInput {
	return (*issuerSpecAcmeSolversDns01AcmeDNSPtrType)(v)
}

func (*issuerSpecAcmeSolversDns01AcmeDNSPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecAcmeSolversDns01AcmeDNS)(nil)).Elem()
}

func (i *issuerSpecAcmeSolversDns01AcmeDNSPtrType) ToIssuerSpecAcmeSolversDns01AcmeDNSPtrOutput() IssuerSpecAcmeSolversDns01AcmeDNSPtrOutput {
	return i.ToIssuerSpecAcmeSolversDns01AcmeDNSPtrOutputWithContext(context.Background())
}

func (i *issuerSpecAcmeSolversDns01AcmeDNSPtrType) ToIssuerSpecAcmeSolversDns01AcmeDNSPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01AcmeDNSPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversDns01AcmeDNSPtrOutput)
}

func (i *issuerSpecAcmeSolversDns01AcmeDNSPtrType) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecAcmeSolversDns01AcmeDNS] {
	return pulumix.Output[*IssuerSpecAcmeSolversDns01AcmeDNS]{
		OutputState: i.ToIssuerSpecAcmeSolversDns01AcmeDNSPtrOutputWithContext(ctx).OutputState,
	}
}

// Use the 'ACME DNS' (https://github.com/joohoi/acme-dns) API to manage DNS01 challenge records.
type IssuerSpecAcmeSolversDns01AcmeDNSOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversDns01AcmeDNSOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversDns01AcmeDNS)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversDns01AcmeDNSOutput) ToIssuerSpecAcmeSolversDns01AcmeDNSOutput() IssuerSpecAcmeSolversDns01AcmeDNSOutput {
	return o
}

func (o IssuerSpecAcmeSolversDns01AcmeDNSOutput) ToIssuerSpecAcmeSolversDns01AcmeDNSOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01AcmeDNSOutput {
	return o
}

func (o IssuerSpecAcmeSolversDns01AcmeDNSOutput) ToIssuerSpecAcmeSolversDns01AcmeDNSPtrOutput() IssuerSpecAcmeSolversDns01AcmeDNSPtrOutput {
	return o.ToIssuerSpecAcmeSolversDns01AcmeDNSPtrOutputWithContext(context.Background())
}

func (o IssuerSpecAcmeSolversDns01AcmeDNSOutput) ToIssuerSpecAcmeSolversDns01AcmeDNSPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01AcmeDNSPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v IssuerSpecAcmeSolversDns01AcmeDNS) *IssuerSpecAcmeSolversDns01AcmeDNS {
		return &v
	}).(IssuerSpecAcmeSolversDns01AcmeDNSPtrOutput)
}

func (o IssuerSpecAcmeSolversDns01AcmeDNSOutput) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversDns01AcmeDNS] {
	return pulumix.Output[IssuerSpecAcmeSolversDns01AcmeDNS]{
		OutputState: o.OutputState,
	}
}

// A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.
func (o IssuerSpecAcmeSolversDns01AcmeDNSOutput) AccountSecretRef() IssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversDns01AcmeDNS) IssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRef {
		return v.AccountSecretRef
	}).(IssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefOutput)
}

func (o IssuerSpecAcmeSolversDns01AcmeDNSOutput) Host() pulumi.StringOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversDns01AcmeDNS) string { return v.Host }).(pulumi.StringOutput)
}

type IssuerSpecAcmeSolversDns01AcmeDNSPtrOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversDns01AcmeDNSPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecAcmeSolversDns01AcmeDNS)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversDns01AcmeDNSPtrOutput) ToIssuerSpecAcmeSolversDns01AcmeDNSPtrOutput() IssuerSpecAcmeSolversDns01AcmeDNSPtrOutput {
	return o
}

func (o IssuerSpecAcmeSolversDns01AcmeDNSPtrOutput) ToIssuerSpecAcmeSolversDns01AcmeDNSPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01AcmeDNSPtrOutput {
	return o
}

func (o IssuerSpecAcmeSolversDns01AcmeDNSPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecAcmeSolversDns01AcmeDNS] {
	return pulumix.Output[*IssuerSpecAcmeSolversDns01AcmeDNS]{
		OutputState: o.OutputState,
	}
}

func (o IssuerSpecAcmeSolversDns01AcmeDNSPtrOutput) Elem() IssuerSpecAcmeSolversDns01AcmeDNSOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversDns01AcmeDNS) IssuerSpecAcmeSolversDns01AcmeDNS {
		if v != nil {
			return *v
		}
		var ret IssuerSpecAcmeSolversDns01AcmeDNS
		return ret
	}).(IssuerSpecAcmeSolversDns01AcmeDNSOutput)
}

// A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.
func (o IssuerSpecAcmeSolversDns01AcmeDNSPtrOutput) AccountSecretRef() IssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefPtrOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversDns01AcmeDNS) *IssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRef {
		if v == nil {
			return nil
		}
		return &v.AccountSecretRef
	}).(IssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefPtrOutput)
}

func (o IssuerSpecAcmeSolversDns01AcmeDNSPtrOutput) Host() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversDns01AcmeDNS) *string {
		if v == nil {
			return nil
		}
		return &v.Host
	}).(pulumi.StringPtrOutput)
}

// A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.
type IssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRef struct {
	// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
	Key *string `pulumi:"key"`
	// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
	Name string `pulumi:"name"`
}

// IssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefInput is an input type that accepts IssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefArgs and IssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefInput` via:
//
//	IssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefArgs{...}
type IssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefOutput() IssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefOutput
	ToIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefOutputWithContext(context.Context) IssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefOutput
}

// A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.
type IssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefArgs struct {
	// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
	Key pulumi.StringPtrInput `pulumi:"key"`
	// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
	Name pulumi.StringInput `pulumi:"name"`
}

func (IssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRef)(nil)).Elem()
}

func (i IssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefArgs) ToIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefOutput() IssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefOutput {
	return i.ToIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefArgs) ToIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefOutput)
}

func (i IssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefArgs) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRef] {
	return pulumix.Output[IssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRef]{
		OutputState: i.ToIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefOutputWithContext(ctx).OutputState,
	}
}

func (i IssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefArgs) ToIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefPtrOutput() IssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefPtrOutput {
	return i.ToIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefPtrOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefArgs) ToIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefOutput).ToIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefPtrOutputWithContext(ctx)
}

// IssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefPtrInput is an input type that accepts IssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefArgs, IssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefPtr and IssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefPtrOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefPtrInput` via:
//
//	        IssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefArgs{...}
//
//	or:
//
//	        nil
type IssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefPtrInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefPtrOutput() IssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefPtrOutput
	ToIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefPtrOutputWithContext(context.Context) IssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefPtrOutput
}

type issuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefPtrType IssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefArgs

func IssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefPtr(v *IssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefArgs) IssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefPtrInput {
	return (*issuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefPtrType)(v)
}

func (*issuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRef)(nil)).Elem()
}

func (i *issuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefPtrType) ToIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefPtrOutput() IssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefPtrOutput {
	return i.ToIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefPtrOutputWithContext(context.Background())
}

func (i *issuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefPtrType) ToIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefPtrOutput)
}

func (i *issuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefPtrType) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRef] {
	return pulumix.Output[*IssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRef]{
		OutputState: i.ToIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefPtrOutputWithContext(ctx).OutputState,
	}
}

// A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.
type IssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRef)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefOutput) ToIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefOutput() IssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefOutput {
	return o
}

func (o IssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefOutput) ToIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefOutput {
	return o
}

func (o IssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefOutput) ToIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefPtrOutput() IssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefPtrOutput {
	return o.ToIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefPtrOutputWithContext(context.Background())
}

func (o IssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefOutput) ToIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v IssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRef) *IssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRef {
		return &v
	}).(IssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefPtrOutput)
}

func (o IssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefOutput) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRef] {
	return pulumix.Output[IssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRef]{
		OutputState: o.OutputState,
	}
}

// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
func (o IssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefOutput) Key() pulumi.StringPtrOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRef) *string { return v.Key }).(pulumi.StringPtrOutput)
}

// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
func (o IssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefOutput) Name() pulumi.StringOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRef) string { return v.Name }).(pulumi.StringOutput)
}

type IssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefPtrOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRef)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefPtrOutput) ToIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefPtrOutput() IssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefPtrOutput {
	return o
}

func (o IssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefPtrOutput) ToIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefPtrOutput {
	return o
}

func (o IssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRef] {
	return pulumix.Output[*IssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRef]{
		OutputState: o.OutputState,
	}
}

func (o IssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefPtrOutput) Elem() IssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRef) IssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRef {
		if v != nil {
			return *v
		}
		var ret IssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRef
		return ret
	}).(IssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefOutput)
}

// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
func (o IssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefPtrOutput) Key() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRef) *string {
		if v == nil {
			return nil
		}
		return v.Key
	}).(pulumi.StringPtrOutput)
}

// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
func (o IssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefPtrOutput) Name() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRef) *string {
		if v == nil {
			return nil
		}
		return &v.Name
	}).(pulumi.StringPtrOutput)
}

// Use the Akamai DNS zone management API to manage DNS01 challenge records.
type IssuerSpecAcmeSolversDns01Akamai struct {
	// A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.
	AccessTokenSecretRef IssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRef `pulumi:"accessTokenSecretRef"`
	// A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.
	ClientSecretSecretRef IssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRef `pulumi:"clientSecretSecretRef"`
	// A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.
	ClientTokenSecretRef  IssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRef `pulumi:"clientTokenSecretRef"`
	ServiceConsumerDomain string                                               `pulumi:"serviceConsumerDomain"`
}

// IssuerSpecAcmeSolversDns01AkamaiInput is an input type that accepts IssuerSpecAcmeSolversDns01AkamaiArgs and IssuerSpecAcmeSolversDns01AkamaiOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversDns01AkamaiInput` via:
//
//	IssuerSpecAcmeSolversDns01AkamaiArgs{...}
type IssuerSpecAcmeSolversDns01AkamaiInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversDns01AkamaiOutput() IssuerSpecAcmeSolversDns01AkamaiOutput
	ToIssuerSpecAcmeSolversDns01AkamaiOutputWithContext(context.Context) IssuerSpecAcmeSolversDns01AkamaiOutput
}

// Use the Akamai DNS zone management API to manage DNS01 challenge records.
type IssuerSpecAcmeSolversDns01AkamaiArgs struct {
	// A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.
	AccessTokenSecretRef IssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefInput `pulumi:"accessTokenSecretRef"`
	// A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.
	ClientSecretSecretRef IssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefInput `pulumi:"clientSecretSecretRef"`
	// A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.
	ClientTokenSecretRef  IssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefInput `pulumi:"clientTokenSecretRef"`
	ServiceConsumerDomain pulumi.StringInput                                        `pulumi:"serviceConsumerDomain"`
}

func (IssuerSpecAcmeSolversDns01AkamaiArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversDns01Akamai)(nil)).Elem()
}

func (i IssuerSpecAcmeSolversDns01AkamaiArgs) ToIssuerSpecAcmeSolversDns01AkamaiOutput() IssuerSpecAcmeSolversDns01AkamaiOutput {
	return i.ToIssuerSpecAcmeSolversDns01AkamaiOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversDns01AkamaiArgs) ToIssuerSpecAcmeSolversDns01AkamaiOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01AkamaiOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversDns01AkamaiOutput)
}

func (i IssuerSpecAcmeSolversDns01AkamaiArgs) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversDns01Akamai] {
	return pulumix.Output[IssuerSpecAcmeSolversDns01Akamai]{
		OutputState: i.ToIssuerSpecAcmeSolversDns01AkamaiOutputWithContext(ctx).OutputState,
	}
}

func (i IssuerSpecAcmeSolversDns01AkamaiArgs) ToIssuerSpecAcmeSolversDns01AkamaiPtrOutput() IssuerSpecAcmeSolversDns01AkamaiPtrOutput {
	return i.ToIssuerSpecAcmeSolversDns01AkamaiPtrOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversDns01AkamaiArgs) ToIssuerSpecAcmeSolversDns01AkamaiPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01AkamaiPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversDns01AkamaiOutput).ToIssuerSpecAcmeSolversDns01AkamaiPtrOutputWithContext(ctx)
}

// IssuerSpecAcmeSolversDns01AkamaiPtrInput is an input type that accepts IssuerSpecAcmeSolversDns01AkamaiArgs, IssuerSpecAcmeSolversDns01AkamaiPtr and IssuerSpecAcmeSolversDns01AkamaiPtrOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversDns01AkamaiPtrInput` via:
//
//	        IssuerSpecAcmeSolversDns01AkamaiArgs{...}
//
//	or:
//
//	        nil
type IssuerSpecAcmeSolversDns01AkamaiPtrInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversDns01AkamaiPtrOutput() IssuerSpecAcmeSolversDns01AkamaiPtrOutput
	ToIssuerSpecAcmeSolversDns01AkamaiPtrOutputWithContext(context.Context) IssuerSpecAcmeSolversDns01AkamaiPtrOutput
}

type issuerSpecAcmeSolversDns01AkamaiPtrType IssuerSpecAcmeSolversDns01AkamaiArgs

func IssuerSpecAcmeSolversDns01AkamaiPtr(v *IssuerSpecAcmeSolversDns01AkamaiArgs) IssuerSpecAcmeSolversDns01AkamaiPtrInput {
	return (*issuerSpecAcmeSolversDns01AkamaiPtrType)(v)
}

func (*issuerSpecAcmeSolversDns01AkamaiPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecAcmeSolversDns01Akamai)(nil)).Elem()
}

func (i *issuerSpecAcmeSolversDns01AkamaiPtrType) ToIssuerSpecAcmeSolversDns01AkamaiPtrOutput() IssuerSpecAcmeSolversDns01AkamaiPtrOutput {
	return i.ToIssuerSpecAcmeSolversDns01AkamaiPtrOutputWithContext(context.Background())
}

func (i *issuerSpecAcmeSolversDns01AkamaiPtrType) ToIssuerSpecAcmeSolversDns01AkamaiPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01AkamaiPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversDns01AkamaiPtrOutput)
}

func (i *issuerSpecAcmeSolversDns01AkamaiPtrType) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecAcmeSolversDns01Akamai] {
	return pulumix.Output[*IssuerSpecAcmeSolversDns01Akamai]{
		OutputState: i.ToIssuerSpecAcmeSolversDns01AkamaiPtrOutputWithContext(ctx).OutputState,
	}
}

// Use the Akamai DNS zone management API to manage DNS01 challenge records.
type IssuerSpecAcmeSolversDns01AkamaiOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversDns01AkamaiOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversDns01Akamai)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversDns01AkamaiOutput) ToIssuerSpecAcmeSolversDns01AkamaiOutput() IssuerSpecAcmeSolversDns01AkamaiOutput {
	return o
}

func (o IssuerSpecAcmeSolversDns01AkamaiOutput) ToIssuerSpecAcmeSolversDns01AkamaiOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01AkamaiOutput {
	return o
}

func (o IssuerSpecAcmeSolversDns01AkamaiOutput) ToIssuerSpecAcmeSolversDns01AkamaiPtrOutput() IssuerSpecAcmeSolversDns01AkamaiPtrOutput {
	return o.ToIssuerSpecAcmeSolversDns01AkamaiPtrOutputWithContext(context.Background())
}

func (o IssuerSpecAcmeSolversDns01AkamaiOutput) ToIssuerSpecAcmeSolversDns01AkamaiPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01AkamaiPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v IssuerSpecAcmeSolversDns01Akamai) *IssuerSpecAcmeSolversDns01Akamai {
		return &v
	}).(IssuerSpecAcmeSolversDns01AkamaiPtrOutput)
}

func (o IssuerSpecAcmeSolversDns01AkamaiOutput) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversDns01Akamai] {
	return pulumix.Output[IssuerSpecAcmeSolversDns01Akamai]{
		OutputState: o.OutputState,
	}
}

// A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.
func (o IssuerSpecAcmeSolversDns01AkamaiOutput) AccessTokenSecretRef() IssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversDns01Akamai) IssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRef {
		return v.AccessTokenSecretRef
	}).(IssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefOutput)
}

// A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.
func (o IssuerSpecAcmeSolversDns01AkamaiOutput) ClientSecretSecretRef() IssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversDns01Akamai) IssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRef {
		return v.ClientSecretSecretRef
	}).(IssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefOutput)
}

// A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.
func (o IssuerSpecAcmeSolversDns01AkamaiOutput) ClientTokenSecretRef() IssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversDns01Akamai) IssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRef {
		return v.ClientTokenSecretRef
	}).(IssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefOutput)
}

func (o IssuerSpecAcmeSolversDns01AkamaiOutput) ServiceConsumerDomain() pulumi.StringOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversDns01Akamai) string { return v.ServiceConsumerDomain }).(pulumi.StringOutput)
}

type IssuerSpecAcmeSolversDns01AkamaiPtrOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversDns01AkamaiPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecAcmeSolversDns01Akamai)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversDns01AkamaiPtrOutput) ToIssuerSpecAcmeSolversDns01AkamaiPtrOutput() IssuerSpecAcmeSolversDns01AkamaiPtrOutput {
	return o
}

func (o IssuerSpecAcmeSolversDns01AkamaiPtrOutput) ToIssuerSpecAcmeSolversDns01AkamaiPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01AkamaiPtrOutput {
	return o
}

func (o IssuerSpecAcmeSolversDns01AkamaiPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecAcmeSolversDns01Akamai] {
	return pulumix.Output[*IssuerSpecAcmeSolversDns01Akamai]{
		OutputState: o.OutputState,
	}
}

func (o IssuerSpecAcmeSolversDns01AkamaiPtrOutput) Elem() IssuerSpecAcmeSolversDns01AkamaiOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversDns01Akamai) IssuerSpecAcmeSolversDns01Akamai {
		if v != nil {
			return *v
		}
		var ret IssuerSpecAcmeSolversDns01Akamai
		return ret
	}).(IssuerSpecAcmeSolversDns01AkamaiOutput)
}

// A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.
func (o IssuerSpecAcmeSolversDns01AkamaiPtrOutput) AccessTokenSecretRef() IssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefPtrOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversDns01Akamai) *IssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRef {
		if v == nil {
			return nil
		}
		return &v.AccessTokenSecretRef
	}).(IssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefPtrOutput)
}

// A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.
func (o IssuerSpecAcmeSolversDns01AkamaiPtrOutput) ClientSecretSecretRef() IssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefPtrOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversDns01Akamai) *IssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRef {
		if v == nil {
			return nil
		}
		return &v.ClientSecretSecretRef
	}).(IssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefPtrOutput)
}

// A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.
func (o IssuerSpecAcmeSolversDns01AkamaiPtrOutput) ClientTokenSecretRef() IssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefPtrOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversDns01Akamai) *IssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRef {
		if v == nil {
			return nil
		}
		return &v.ClientTokenSecretRef
	}).(IssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefPtrOutput)
}

func (o IssuerSpecAcmeSolversDns01AkamaiPtrOutput) ServiceConsumerDomain() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversDns01Akamai) *string {
		if v == nil {
			return nil
		}
		return &v.ServiceConsumerDomain
	}).(pulumi.StringPtrOutput)
}

// A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.
type IssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRef struct {
	// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
	Key *string `pulumi:"key"`
	// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
	Name string `pulumi:"name"`
}

// IssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefInput is an input type that accepts IssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefArgs and IssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefInput` via:
//
//	IssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefArgs{...}
type IssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefOutput() IssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefOutput
	ToIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefOutputWithContext(context.Context) IssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefOutput
}

// A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.
type IssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefArgs struct {
	// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
	Key pulumi.StringPtrInput `pulumi:"key"`
	// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
	Name pulumi.StringInput `pulumi:"name"`
}

func (IssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRef)(nil)).Elem()
}

func (i IssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefArgs) ToIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefOutput() IssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefOutput {
	return i.ToIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefArgs) ToIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefOutput)
}

func (i IssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefArgs) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRef] {
	return pulumix.Output[IssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRef]{
		OutputState: i.ToIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefOutputWithContext(ctx).OutputState,
	}
}

func (i IssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefArgs) ToIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefPtrOutput() IssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefPtrOutput {
	return i.ToIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefPtrOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefArgs) ToIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefOutput).ToIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefPtrOutputWithContext(ctx)
}

// IssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefPtrInput is an input type that accepts IssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefArgs, IssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefPtr and IssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefPtrOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefPtrInput` via:
//
//	        IssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefArgs{...}
//
//	or:
//
//	        nil
type IssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefPtrInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefPtrOutput() IssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefPtrOutput
	ToIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefPtrOutputWithContext(context.Context) IssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefPtrOutput
}

type issuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefPtrType IssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefArgs

func IssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefPtr(v *IssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefArgs) IssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefPtrInput {
	return (*issuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefPtrType)(v)
}

func (*issuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRef)(nil)).Elem()
}

func (i *issuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefPtrType) ToIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefPtrOutput() IssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefPtrOutput {
	return i.ToIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefPtrOutputWithContext(context.Background())
}

func (i *issuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefPtrType) ToIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefPtrOutput)
}

func (i *issuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefPtrType) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRef] {
	return pulumix.Output[*IssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRef]{
		OutputState: i.ToIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefPtrOutputWithContext(ctx).OutputState,
	}
}

// A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.
type IssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRef)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefOutput) ToIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefOutput() IssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefOutput {
	return o
}

func (o IssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefOutput) ToIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefOutput {
	return o
}

func (o IssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefOutput) ToIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefPtrOutput() IssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefPtrOutput {
	return o.ToIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefPtrOutputWithContext(context.Background())
}

func (o IssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefOutput) ToIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v IssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRef) *IssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRef {
		return &v
	}).(IssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefPtrOutput)
}

func (o IssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefOutput) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRef] {
	return pulumix.Output[IssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRef]{
		OutputState: o.OutputState,
	}
}

// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
func (o IssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefOutput) Key() pulumi.StringPtrOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRef) *string { return v.Key }).(pulumi.StringPtrOutput)
}

// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
func (o IssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefOutput) Name() pulumi.StringOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRef) string { return v.Name }).(pulumi.StringOutput)
}

type IssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefPtrOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRef)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefPtrOutput) ToIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefPtrOutput() IssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefPtrOutput {
	return o
}

func (o IssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefPtrOutput) ToIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefPtrOutput {
	return o
}

func (o IssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRef] {
	return pulumix.Output[*IssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRef]{
		OutputState: o.OutputState,
	}
}

func (o IssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefPtrOutput) Elem() IssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRef) IssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRef {
		if v != nil {
			return *v
		}
		var ret IssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRef
		return ret
	}).(IssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefOutput)
}

// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
func (o IssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefPtrOutput) Key() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRef) *string {
		if v == nil {
			return nil
		}
		return v.Key
	}).(pulumi.StringPtrOutput)
}

// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
func (o IssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefPtrOutput) Name() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRef) *string {
		if v == nil {
			return nil
		}
		return &v.Name
	}).(pulumi.StringPtrOutput)
}

// A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.
type IssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRef struct {
	// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
	Key *string `pulumi:"key"`
	// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
	Name string `pulumi:"name"`
}

// IssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefInput is an input type that accepts IssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefArgs and IssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefInput` via:
//
//	IssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefArgs{...}
type IssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefOutput() IssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefOutput
	ToIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefOutputWithContext(context.Context) IssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefOutput
}

// A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.
type IssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefArgs struct {
	// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
	Key pulumi.StringPtrInput `pulumi:"key"`
	// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
	Name pulumi.StringInput `pulumi:"name"`
}

func (IssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRef)(nil)).Elem()
}

func (i IssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefArgs) ToIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefOutput() IssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefOutput {
	return i.ToIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefArgs) ToIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefOutput)
}

func (i IssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefArgs) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRef] {
	return pulumix.Output[IssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRef]{
		OutputState: i.ToIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefOutputWithContext(ctx).OutputState,
	}
}

func (i IssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefArgs) ToIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefPtrOutput() IssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefPtrOutput {
	return i.ToIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefPtrOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefArgs) ToIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefOutput).ToIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefPtrOutputWithContext(ctx)
}

// IssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefPtrInput is an input type that accepts IssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefArgs, IssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefPtr and IssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefPtrOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefPtrInput` via:
//
//	        IssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefArgs{...}
//
//	or:
//
//	        nil
type IssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefPtrInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefPtrOutput() IssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefPtrOutput
	ToIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefPtrOutputWithContext(context.Context) IssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefPtrOutput
}

type issuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefPtrType IssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefArgs

func IssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefPtr(v *IssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefArgs) IssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefPtrInput {
	return (*issuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefPtrType)(v)
}

func (*issuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRef)(nil)).Elem()
}

func (i *issuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefPtrType) ToIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefPtrOutput() IssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefPtrOutput {
	return i.ToIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefPtrOutputWithContext(context.Background())
}

func (i *issuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefPtrType) ToIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefPtrOutput)
}

func (i *issuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefPtrType) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRef] {
	return pulumix.Output[*IssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRef]{
		OutputState: i.ToIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefPtrOutputWithContext(ctx).OutputState,
	}
}

// A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.
type IssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRef)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefOutput) ToIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefOutput() IssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefOutput {
	return o
}

func (o IssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefOutput) ToIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefOutput {
	return o
}

func (o IssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefOutput) ToIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefPtrOutput() IssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefPtrOutput {
	return o.ToIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefPtrOutputWithContext(context.Background())
}

func (o IssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefOutput) ToIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v IssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRef) *IssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRef {
		return &v
	}).(IssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefPtrOutput)
}

func (o IssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefOutput) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRef] {
	return pulumix.Output[IssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRef]{
		OutputState: o.OutputState,
	}
}

// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
func (o IssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefOutput) Key() pulumi.StringPtrOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRef) *string { return v.Key }).(pulumi.StringPtrOutput)
}

// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
func (o IssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefOutput) Name() pulumi.StringOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRef) string { return v.Name }).(pulumi.StringOutput)
}

type IssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefPtrOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRef)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefPtrOutput) ToIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefPtrOutput() IssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefPtrOutput {
	return o
}

func (o IssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefPtrOutput) ToIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefPtrOutput {
	return o
}

func (o IssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRef] {
	return pulumix.Output[*IssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRef]{
		OutputState: o.OutputState,
	}
}

func (o IssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefPtrOutput) Elem() IssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRef) IssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRef {
		if v != nil {
			return *v
		}
		var ret IssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRef
		return ret
	}).(IssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefOutput)
}

// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
func (o IssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefPtrOutput) Key() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRef) *string {
		if v == nil {
			return nil
		}
		return v.Key
	}).(pulumi.StringPtrOutput)
}

// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
func (o IssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefPtrOutput) Name() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRef) *string {
		if v == nil {
			return nil
		}
		return &v.Name
	}).(pulumi.StringPtrOutput)
}

// A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.
type IssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRef struct {
	// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
	Key *string `pulumi:"key"`
	// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
	Name string `pulumi:"name"`
}

// IssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefInput is an input type that accepts IssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefArgs and IssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefInput` via:
//
//	IssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefArgs{...}
type IssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefOutput() IssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefOutput
	ToIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefOutputWithContext(context.Context) IssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefOutput
}

// A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.
type IssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefArgs struct {
	// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
	Key pulumi.StringPtrInput `pulumi:"key"`
	// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
	Name pulumi.StringInput `pulumi:"name"`
}

func (IssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRef)(nil)).Elem()
}

func (i IssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefArgs) ToIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefOutput() IssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefOutput {
	return i.ToIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefArgs) ToIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefOutput)
}

func (i IssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefArgs) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRef] {
	return pulumix.Output[IssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRef]{
		OutputState: i.ToIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefOutputWithContext(ctx).OutputState,
	}
}

func (i IssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefArgs) ToIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefPtrOutput() IssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefPtrOutput {
	return i.ToIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefPtrOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefArgs) ToIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefOutput).ToIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefPtrOutputWithContext(ctx)
}

// IssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefPtrInput is an input type that accepts IssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefArgs, IssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefPtr and IssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefPtrOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefPtrInput` via:
//
//	        IssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefArgs{...}
//
//	or:
//
//	        nil
type IssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefPtrInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefPtrOutput() IssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefPtrOutput
	ToIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefPtrOutputWithContext(context.Context) IssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefPtrOutput
}

type issuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefPtrType IssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefArgs

func IssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefPtr(v *IssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefArgs) IssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefPtrInput {
	return (*issuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefPtrType)(v)
}

func (*issuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRef)(nil)).Elem()
}

func (i *issuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefPtrType) ToIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefPtrOutput() IssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefPtrOutput {
	return i.ToIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefPtrOutputWithContext(context.Background())
}

func (i *issuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefPtrType) ToIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefPtrOutput)
}

func (i *issuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefPtrType) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRef] {
	return pulumix.Output[*IssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRef]{
		OutputState: i.ToIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefPtrOutputWithContext(ctx).OutputState,
	}
}

// A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.
type IssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRef)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefOutput) ToIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefOutput() IssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefOutput {
	return o
}

func (o IssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefOutput) ToIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefOutput {
	return o
}

func (o IssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefOutput) ToIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefPtrOutput() IssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefPtrOutput {
	return o.ToIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefPtrOutputWithContext(context.Background())
}

func (o IssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefOutput) ToIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v IssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRef) *IssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRef {
		return &v
	}).(IssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefPtrOutput)
}

func (o IssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefOutput) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRef] {
	return pulumix.Output[IssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRef]{
		OutputState: o.OutputState,
	}
}

// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
func (o IssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefOutput) Key() pulumi.StringPtrOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRef) *string { return v.Key }).(pulumi.StringPtrOutput)
}

// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
func (o IssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefOutput) Name() pulumi.StringOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRef) string { return v.Name }).(pulumi.StringOutput)
}

type IssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefPtrOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRef)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefPtrOutput) ToIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefPtrOutput() IssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefPtrOutput {
	return o
}

func (o IssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefPtrOutput) ToIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefPtrOutput {
	return o
}

func (o IssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRef] {
	return pulumix.Output[*IssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRef]{
		OutputState: o.OutputState,
	}
}

func (o IssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefPtrOutput) Elem() IssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRef) IssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRef {
		if v != nil {
			return *v
		}
		var ret IssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRef
		return ret
	}).(IssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefOutput)
}

// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
func (o IssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefPtrOutput) Key() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRef) *string {
		if v == nil {
			return nil
		}
		return v.Key
	}).(pulumi.StringPtrOutput)
}

// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
func (o IssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefPtrOutput) Name() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRef) *string {
		if v == nil {
			return nil
		}
		return &v.Name
	}).(pulumi.StringPtrOutput)
}

// Use the Microsoft Azure DNS API to manage DNS01 challenge records.
type IssuerSpecAcmeSolversDns01AzureDNS struct {
	// if both this and ClientSecret are left unset MSI will be used
	ClientID *string `pulumi:"clientID"`
	// if both this and ClientID are left unset MSI will be used
	ClientSecretSecretRef *IssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRef `pulumi:"clientSecretSecretRef"`
	// name of the Azure environment (default AzurePublicCloud)
	Environment *string `pulumi:"environment"`
	// name of the DNS zone that should be used
	HostedZoneName *string `pulumi:"hostedZoneName"`
	// managed identity configuration, can not be used at the same time as clientID, clientSecretSecretRef or tenantID
	ManagedIdentity *IssuerSpecAcmeSolversDns01AzureDNSManagedIdentity `pulumi:"managedIdentity"`
	// resource group the DNS zone is located in
	ResourceGroupName string `pulumi:"resourceGroupName"`
	// ID of the Azure subscription
	SubscriptionID string `pulumi:"subscriptionID"`
	// when specifying ClientID and ClientSecret then this field is also needed
	TenantID *string `pulumi:"tenantID"`
}

// IssuerSpecAcmeSolversDns01AzureDNSInput is an input type that accepts IssuerSpecAcmeSolversDns01AzureDNSArgs and IssuerSpecAcmeSolversDns01AzureDNSOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversDns01AzureDNSInput` via:
//
//	IssuerSpecAcmeSolversDns01AzureDNSArgs{...}
type IssuerSpecAcmeSolversDns01AzureDNSInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversDns01AzureDNSOutput() IssuerSpecAcmeSolversDns01AzureDNSOutput
	ToIssuerSpecAcmeSolversDns01AzureDNSOutputWithContext(context.Context) IssuerSpecAcmeSolversDns01AzureDNSOutput
}

// Use the Microsoft Azure DNS API to manage DNS01 challenge records.
type IssuerSpecAcmeSolversDns01AzureDNSArgs struct {
	// if both this and ClientSecret are left unset MSI will be used
	ClientID pulumi.StringPtrInput `pulumi:"clientID"`
	// if both this and ClientID are left unset MSI will be used
	ClientSecretSecretRef IssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefPtrInput `pulumi:"clientSecretSecretRef"`
	// name of the Azure environment (default AzurePublicCloud)
	Environment pulumi.StringPtrInput `pulumi:"environment"`
	// name of the DNS zone that should be used
	HostedZoneName pulumi.StringPtrInput `pulumi:"hostedZoneName"`
	// managed identity configuration, can not be used at the same time as clientID, clientSecretSecretRef or tenantID
	ManagedIdentity IssuerSpecAcmeSolversDns01AzureDNSManagedIdentityPtrInput `pulumi:"managedIdentity"`
	// resource group the DNS zone is located in
	ResourceGroupName pulumi.StringInput `pulumi:"resourceGroupName"`
	// ID of the Azure subscription
	SubscriptionID pulumi.StringInput `pulumi:"subscriptionID"`
	// when specifying ClientID and ClientSecret then this field is also needed
	TenantID pulumi.StringPtrInput `pulumi:"tenantID"`
}

func (IssuerSpecAcmeSolversDns01AzureDNSArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversDns01AzureDNS)(nil)).Elem()
}

func (i IssuerSpecAcmeSolversDns01AzureDNSArgs) ToIssuerSpecAcmeSolversDns01AzureDNSOutput() IssuerSpecAcmeSolversDns01AzureDNSOutput {
	return i.ToIssuerSpecAcmeSolversDns01AzureDNSOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversDns01AzureDNSArgs) ToIssuerSpecAcmeSolversDns01AzureDNSOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01AzureDNSOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversDns01AzureDNSOutput)
}

func (i IssuerSpecAcmeSolversDns01AzureDNSArgs) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversDns01AzureDNS] {
	return pulumix.Output[IssuerSpecAcmeSolversDns01AzureDNS]{
		OutputState: i.ToIssuerSpecAcmeSolversDns01AzureDNSOutputWithContext(ctx).OutputState,
	}
}

func (i IssuerSpecAcmeSolversDns01AzureDNSArgs) ToIssuerSpecAcmeSolversDns01AzureDNSPtrOutput() IssuerSpecAcmeSolversDns01AzureDNSPtrOutput {
	return i.ToIssuerSpecAcmeSolversDns01AzureDNSPtrOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversDns01AzureDNSArgs) ToIssuerSpecAcmeSolversDns01AzureDNSPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01AzureDNSPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversDns01AzureDNSOutput).ToIssuerSpecAcmeSolversDns01AzureDNSPtrOutputWithContext(ctx)
}

// IssuerSpecAcmeSolversDns01AzureDNSPtrInput is an input type that accepts IssuerSpecAcmeSolversDns01AzureDNSArgs, IssuerSpecAcmeSolversDns01AzureDNSPtr and IssuerSpecAcmeSolversDns01AzureDNSPtrOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversDns01AzureDNSPtrInput` via:
//
//	        IssuerSpecAcmeSolversDns01AzureDNSArgs{...}
//
//	or:
//
//	        nil
type IssuerSpecAcmeSolversDns01AzureDNSPtrInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversDns01AzureDNSPtrOutput() IssuerSpecAcmeSolversDns01AzureDNSPtrOutput
	ToIssuerSpecAcmeSolversDns01AzureDNSPtrOutputWithContext(context.Context) IssuerSpecAcmeSolversDns01AzureDNSPtrOutput
}

type issuerSpecAcmeSolversDns01AzureDNSPtrType IssuerSpecAcmeSolversDns01AzureDNSArgs

func IssuerSpecAcmeSolversDns01AzureDNSPtr(v *IssuerSpecAcmeSolversDns01AzureDNSArgs) IssuerSpecAcmeSolversDns01AzureDNSPtrInput {
	return (*issuerSpecAcmeSolversDns01AzureDNSPtrType)(v)
}

func (*issuerSpecAcmeSolversDns01AzureDNSPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecAcmeSolversDns01AzureDNS)(nil)).Elem()
}

func (i *issuerSpecAcmeSolversDns01AzureDNSPtrType) ToIssuerSpecAcmeSolversDns01AzureDNSPtrOutput() IssuerSpecAcmeSolversDns01AzureDNSPtrOutput {
	return i.ToIssuerSpecAcmeSolversDns01AzureDNSPtrOutputWithContext(context.Background())
}

func (i *issuerSpecAcmeSolversDns01AzureDNSPtrType) ToIssuerSpecAcmeSolversDns01AzureDNSPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01AzureDNSPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversDns01AzureDNSPtrOutput)
}

func (i *issuerSpecAcmeSolversDns01AzureDNSPtrType) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecAcmeSolversDns01AzureDNS] {
	return pulumix.Output[*IssuerSpecAcmeSolversDns01AzureDNS]{
		OutputState: i.ToIssuerSpecAcmeSolversDns01AzureDNSPtrOutputWithContext(ctx).OutputState,
	}
}

// Use the Microsoft Azure DNS API to manage DNS01 challenge records.
type IssuerSpecAcmeSolversDns01AzureDNSOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversDns01AzureDNSOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversDns01AzureDNS)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversDns01AzureDNSOutput) ToIssuerSpecAcmeSolversDns01AzureDNSOutput() IssuerSpecAcmeSolversDns01AzureDNSOutput {
	return o
}

func (o IssuerSpecAcmeSolversDns01AzureDNSOutput) ToIssuerSpecAcmeSolversDns01AzureDNSOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01AzureDNSOutput {
	return o
}

func (o IssuerSpecAcmeSolversDns01AzureDNSOutput) ToIssuerSpecAcmeSolversDns01AzureDNSPtrOutput() IssuerSpecAcmeSolversDns01AzureDNSPtrOutput {
	return o.ToIssuerSpecAcmeSolversDns01AzureDNSPtrOutputWithContext(context.Background())
}

func (o IssuerSpecAcmeSolversDns01AzureDNSOutput) ToIssuerSpecAcmeSolversDns01AzureDNSPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01AzureDNSPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v IssuerSpecAcmeSolversDns01AzureDNS) *IssuerSpecAcmeSolversDns01AzureDNS {
		return &v
	}).(IssuerSpecAcmeSolversDns01AzureDNSPtrOutput)
}

func (o IssuerSpecAcmeSolversDns01AzureDNSOutput) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversDns01AzureDNS] {
	return pulumix.Output[IssuerSpecAcmeSolversDns01AzureDNS]{
		OutputState: o.OutputState,
	}
}

// if both this and ClientSecret are left unset MSI will be used
func (o IssuerSpecAcmeSolversDns01AzureDNSOutput) ClientID() pulumi.StringPtrOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversDns01AzureDNS) *string { return v.ClientID }).(pulumi.StringPtrOutput)
}

// if both this and ClientID are left unset MSI will be used
func (o IssuerSpecAcmeSolversDns01AzureDNSOutput) ClientSecretSecretRef() IssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefPtrOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversDns01AzureDNS) *IssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRef {
		return v.ClientSecretSecretRef
	}).(IssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefPtrOutput)
}

// name of the Azure environment (default AzurePublicCloud)
func (o IssuerSpecAcmeSolversDns01AzureDNSOutput) Environment() pulumi.StringPtrOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversDns01AzureDNS) *string { return v.Environment }).(pulumi.StringPtrOutput)
}

// name of the DNS zone that should be used
func (o IssuerSpecAcmeSolversDns01AzureDNSOutput) HostedZoneName() pulumi.StringPtrOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversDns01AzureDNS) *string { return v.HostedZoneName }).(pulumi.StringPtrOutput)
}

// managed identity configuration, can not be used at the same time as clientID, clientSecretSecretRef or tenantID
func (o IssuerSpecAcmeSolversDns01AzureDNSOutput) ManagedIdentity() IssuerSpecAcmeSolversDns01AzureDNSManagedIdentityPtrOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversDns01AzureDNS) *IssuerSpecAcmeSolversDns01AzureDNSManagedIdentity {
		return v.ManagedIdentity
	}).(IssuerSpecAcmeSolversDns01AzureDNSManagedIdentityPtrOutput)
}

// resource group the DNS zone is located in
func (o IssuerSpecAcmeSolversDns01AzureDNSOutput) ResourceGroupName() pulumi.StringOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversDns01AzureDNS) string { return v.ResourceGroupName }).(pulumi.StringOutput)
}

// ID of the Azure subscription
func (o IssuerSpecAcmeSolversDns01AzureDNSOutput) SubscriptionID() pulumi.StringOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversDns01AzureDNS) string { return v.SubscriptionID }).(pulumi.StringOutput)
}

// when specifying ClientID and ClientSecret then this field is also needed
func (o IssuerSpecAcmeSolversDns01AzureDNSOutput) TenantID() pulumi.StringPtrOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversDns01AzureDNS) *string { return v.TenantID }).(pulumi.StringPtrOutput)
}

type IssuerSpecAcmeSolversDns01AzureDNSPtrOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversDns01AzureDNSPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecAcmeSolversDns01AzureDNS)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversDns01AzureDNSPtrOutput) ToIssuerSpecAcmeSolversDns01AzureDNSPtrOutput() IssuerSpecAcmeSolversDns01AzureDNSPtrOutput {
	return o
}

func (o IssuerSpecAcmeSolversDns01AzureDNSPtrOutput) ToIssuerSpecAcmeSolversDns01AzureDNSPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01AzureDNSPtrOutput {
	return o
}

func (o IssuerSpecAcmeSolversDns01AzureDNSPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecAcmeSolversDns01AzureDNS] {
	return pulumix.Output[*IssuerSpecAcmeSolversDns01AzureDNS]{
		OutputState: o.OutputState,
	}
}

func (o IssuerSpecAcmeSolversDns01AzureDNSPtrOutput) Elem() IssuerSpecAcmeSolversDns01AzureDNSOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversDns01AzureDNS) IssuerSpecAcmeSolversDns01AzureDNS {
		if v != nil {
			return *v
		}
		var ret IssuerSpecAcmeSolversDns01AzureDNS
		return ret
	}).(IssuerSpecAcmeSolversDns01AzureDNSOutput)
}

// if both this and ClientSecret are left unset MSI will be used
func (o IssuerSpecAcmeSolversDns01AzureDNSPtrOutput) ClientID() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversDns01AzureDNS) *string {
		if v == nil {
			return nil
		}
		return v.ClientID
	}).(pulumi.StringPtrOutput)
}

// if both this and ClientID are left unset MSI will be used
func (o IssuerSpecAcmeSolversDns01AzureDNSPtrOutput) ClientSecretSecretRef() IssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefPtrOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversDns01AzureDNS) *IssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRef {
		if v == nil {
			return nil
		}
		return v.ClientSecretSecretRef
	}).(IssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefPtrOutput)
}

// name of the Azure environment (default AzurePublicCloud)
func (o IssuerSpecAcmeSolversDns01AzureDNSPtrOutput) Environment() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversDns01AzureDNS) *string {
		if v == nil {
			return nil
		}
		return v.Environment
	}).(pulumi.StringPtrOutput)
}

// name of the DNS zone that should be used
func (o IssuerSpecAcmeSolversDns01AzureDNSPtrOutput) HostedZoneName() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversDns01AzureDNS) *string {
		if v == nil {
			return nil
		}
		return v.HostedZoneName
	}).(pulumi.StringPtrOutput)
}

// managed identity configuration, can not be used at the same time as clientID, clientSecretSecretRef or tenantID
func (o IssuerSpecAcmeSolversDns01AzureDNSPtrOutput) ManagedIdentity() IssuerSpecAcmeSolversDns01AzureDNSManagedIdentityPtrOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversDns01AzureDNS) *IssuerSpecAcmeSolversDns01AzureDNSManagedIdentity {
		if v == nil {
			return nil
		}
		return v.ManagedIdentity
	}).(IssuerSpecAcmeSolversDns01AzureDNSManagedIdentityPtrOutput)
}

// resource group the DNS zone is located in
func (o IssuerSpecAcmeSolversDns01AzureDNSPtrOutput) ResourceGroupName() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversDns01AzureDNS) *string {
		if v == nil {
			return nil
		}
		return &v.ResourceGroupName
	}).(pulumi.StringPtrOutput)
}

// ID of the Azure subscription
func (o IssuerSpecAcmeSolversDns01AzureDNSPtrOutput) SubscriptionID() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversDns01AzureDNS) *string {
		if v == nil {
			return nil
		}
		return &v.SubscriptionID
	}).(pulumi.StringPtrOutput)
}

// when specifying ClientID and ClientSecret then this field is also needed
func (o IssuerSpecAcmeSolversDns01AzureDNSPtrOutput) TenantID() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversDns01AzureDNS) *string {
		if v == nil {
			return nil
		}
		return v.TenantID
	}).(pulumi.StringPtrOutput)
}

// if both this and ClientID are left unset MSI will be used
type IssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRef struct {
	// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
	Key *string `pulumi:"key"`
	// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
	Name string `pulumi:"name"`
}

// IssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefInput is an input type that accepts IssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefArgs and IssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefInput` via:
//
//	IssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefArgs{...}
type IssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefOutput() IssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefOutput
	ToIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefOutputWithContext(context.Context) IssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefOutput
}

// if both this and ClientID are left unset MSI will be used
type IssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefArgs struct {
	// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
	Key pulumi.StringPtrInput `pulumi:"key"`
	// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
	Name pulumi.StringInput `pulumi:"name"`
}

func (IssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRef)(nil)).Elem()
}

func (i IssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefArgs) ToIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefOutput() IssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefOutput {
	return i.ToIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefArgs) ToIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefOutput)
}

func (i IssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefArgs) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRef] {
	return pulumix.Output[IssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRef]{
		OutputState: i.ToIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefOutputWithContext(ctx).OutputState,
	}
}

func (i IssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefArgs) ToIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefPtrOutput() IssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefPtrOutput {
	return i.ToIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefPtrOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefArgs) ToIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefOutput).ToIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefPtrOutputWithContext(ctx)
}

// IssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefPtrInput is an input type that accepts IssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefArgs, IssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefPtr and IssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefPtrOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefPtrInput` via:
//
//	        IssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefArgs{...}
//
//	or:
//
//	        nil
type IssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefPtrInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefPtrOutput() IssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefPtrOutput
	ToIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefPtrOutputWithContext(context.Context) IssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefPtrOutput
}

type issuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefPtrType IssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefArgs

func IssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefPtr(v *IssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefArgs) IssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefPtrInput {
	return (*issuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefPtrType)(v)
}

func (*issuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRef)(nil)).Elem()
}

func (i *issuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefPtrType) ToIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefPtrOutput() IssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefPtrOutput {
	return i.ToIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefPtrOutputWithContext(context.Background())
}

func (i *issuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefPtrType) ToIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefPtrOutput)
}

func (i *issuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefPtrType) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRef] {
	return pulumix.Output[*IssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRef]{
		OutputState: i.ToIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefPtrOutputWithContext(ctx).OutputState,
	}
}

// if both this and ClientID are left unset MSI will be used
type IssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRef)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefOutput) ToIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefOutput() IssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefOutput {
	return o
}

func (o IssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefOutput) ToIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefOutput {
	return o
}

func (o IssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefOutput) ToIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefPtrOutput() IssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefPtrOutput {
	return o.ToIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefPtrOutputWithContext(context.Background())
}

func (o IssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefOutput) ToIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v IssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRef) *IssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRef {
		return &v
	}).(IssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefPtrOutput)
}

func (o IssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefOutput) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRef] {
	return pulumix.Output[IssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRef]{
		OutputState: o.OutputState,
	}
}

// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
func (o IssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefOutput) Key() pulumi.StringPtrOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRef) *string { return v.Key }).(pulumi.StringPtrOutput)
}

// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
func (o IssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefOutput) Name() pulumi.StringOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRef) string { return v.Name }).(pulumi.StringOutput)
}

type IssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefPtrOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRef)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefPtrOutput) ToIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefPtrOutput() IssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefPtrOutput {
	return o
}

func (o IssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefPtrOutput) ToIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefPtrOutput {
	return o
}

func (o IssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRef] {
	return pulumix.Output[*IssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRef]{
		OutputState: o.OutputState,
	}
}

func (o IssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefPtrOutput) Elem() IssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRef) IssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRef {
		if v != nil {
			return *v
		}
		var ret IssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRef
		return ret
	}).(IssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefOutput)
}

// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
func (o IssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefPtrOutput) Key() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRef) *string {
		if v == nil {
			return nil
		}
		return v.Key
	}).(pulumi.StringPtrOutput)
}

// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
func (o IssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefPtrOutput) Name() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRef) *string {
		if v == nil {
			return nil
		}
		return &v.Name
	}).(pulumi.StringPtrOutput)
}

// managed identity configuration, can not be used at the same time as clientID, clientSecretSecretRef or tenantID
type IssuerSpecAcmeSolversDns01AzureDNSManagedIdentity struct {
	// client ID of the managed identity, can not be used at the same time as resourceID
	ClientID *string `pulumi:"clientID"`
	// resource ID of the managed identity, can not be used at the same time as clientID
	ResourceID *string `pulumi:"resourceID"`
}

// IssuerSpecAcmeSolversDns01AzureDNSManagedIdentityInput is an input type that accepts IssuerSpecAcmeSolversDns01AzureDNSManagedIdentityArgs and IssuerSpecAcmeSolversDns01AzureDNSManagedIdentityOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversDns01AzureDNSManagedIdentityInput` via:
//
//	IssuerSpecAcmeSolversDns01AzureDNSManagedIdentityArgs{...}
type IssuerSpecAcmeSolversDns01AzureDNSManagedIdentityInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityOutput() IssuerSpecAcmeSolversDns01AzureDNSManagedIdentityOutput
	ToIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityOutputWithContext(context.Context) IssuerSpecAcmeSolversDns01AzureDNSManagedIdentityOutput
}

// managed identity configuration, can not be used at the same time as clientID, clientSecretSecretRef or tenantID
type IssuerSpecAcmeSolversDns01AzureDNSManagedIdentityArgs struct {
	// client ID of the managed identity, can not be used at the same time as resourceID
	ClientID pulumi.StringPtrInput `pulumi:"clientID"`
	// resource ID of the managed identity, can not be used at the same time as clientID
	ResourceID pulumi.StringPtrInput `pulumi:"resourceID"`
}

func (IssuerSpecAcmeSolversDns01AzureDNSManagedIdentityArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversDns01AzureDNSManagedIdentity)(nil)).Elem()
}

func (i IssuerSpecAcmeSolversDns01AzureDNSManagedIdentityArgs) ToIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityOutput() IssuerSpecAcmeSolversDns01AzureDNSManagedIdentityOutput {
	return i.ToIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversDns01AzureDNSManagedIdentityArgs) ToIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01AzureDNSManagedIdentityOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversDns01AzureDNSManagedIdentityOutput)
}

func (i IssuerSpecAcmeSolversDns01AzureDNSManagedIdentityArgs) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversDns01AzureDNSManagedIdentity] {
	return pulumix.Output[IssuerSpecAcmeSolversDns01AzureDNSManagedIdentity]{
		OutputState: i.ToIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityOutputWithContext(ctx).OutputState,
	}
}

func (i IssuerSpecAcmeSolversDns01AzureDNSManagedIdentityArgs) ToIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityPtrOutput() IssuerSpecAcmeSolversDns01AzureDNSManagedIdentityPtrOutput {
	return i.ToIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityPtrOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversDns01AzureDNSManagedIdentityArgs) ToIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01AzureDNSManagedIdentityPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversDns01AzureDNSManagedIdentityOutput).ToIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityPtrOutputWithContext(ctx)
}

// IssuerSpecAcmeSolversDns01AzureDNSManagedIdentityPtrInput is an input type that accepts IssuerSpecAcmeSolversDns01AzureDNSManagedIdentityArgs, IssuerSpecAcmeSolversDns01AzureDNSManagedIdentityPtr and IssuerSpecAcmeSolversDns01AzureDNSManagedIdentityPtrOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversDns01AzureDNSManagedIdentityPtrInput` via:
//
//	        IssuerSpecAcmeSolversDns01AzureDNSManagedIdentityArgs{...}
//
//	or:
//
//	        nil
type IssuerSpecAcmeSolversDns01AzureDNSManagedIdentityPtrInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityPtrOutput() IssuerSpecAcmeSolversDns01AzureDNSManagedIdentityPtrOutput
	ToIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityPtrOutputWithContext(context.Context) IssuerSpecAcmeSolversDns01AzureDNSManagedIdentityPtrOutput
}

type issuerSpecAcmeSolversDns01AzureDNSManagedIdentityPtrType IssuerSpecAcmeSolversDns01AzureDNSManagedIdentityArgs

func IssuerSpecAcmeSolversDns01AzureDNSManagedIdentityPtr(v *IssuerSpecAcmeSolversDns01AzureDNSManagedIdentityArgs) IssuerSpecAcmeSolversDns01AzureDNSManagedIdentityPtrInput {
	return (*issuerSpecAcmeSolversDns01AzureDNSManagedIdentityPtrType)(v)
}

func (*issuerSpecAcmeSolversDns01AzureDNSManagedIdentityPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecAcmeSolversDns01AzureDNSManagedIdentity)(nil)).Elem()
}

func (i *issuerSpecAcmeSolversDns01AzureDNSManagedIdentityPtrType) ToIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityPtrOutput() IssuerSpecAcmeSolversDns01AzureDNSManagedIdentityPtrOutput {
	return i.ToIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityPtrOutputWithContext(context.Background())
}

func (i *issuerSpecAcmeSolversDns01AzureDNSManagedIdentityPtrType) ToIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01AzureDNSManagedIdentityPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversDns01AzureDNSManagedIdentityPtrOutput)
}

func (i *issuerSpecAcmeSolversDns01AzureDNSManagedIdentityPtrType) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecAcmeSolversDns01AzureDNSManagedIdentity] {
	return pulumix.Output[*IssuerSpecAcmeSolversDns01AzureDNSManagedIdentity]{
		OutputState: i.ToIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityPtrOutputWithContext(ctx).OutputState,
	}
}

// managed identity configuration, can not be used at the same time as clientID, clientSecretSecretRef or tenantID
type IssuerSpecAcmeSolversDns01AzureDNSManagedIdentityOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversDns01AzureDNSManagedIdentityOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversDns01AzureDNSManagedIdentity)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversDns01AzureDNSManagedIdentityOutput) ToIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityOutput() IssuerSpecAcmeSolversDns01AzureDNSManagedIdentityOutput {
	return o
}

func (o IssuerSpecAcmeSolversDns01AzureDNSManagedIdentityOutput) ToIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01AzureDNSManagedIdentityOutput {
	return o
}

func (o IssuerSpecAcmeSolversDns01AzureDNSManagedIdentityOutput) ToIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityPtrOutput() IssuerSpecAcmeSolversDns01AzureDNSManagedIdentityPtrOutput {
	return o.ToIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityPtrOutputWithContext(context.Background())
}

func (o IssuerSpecAcmeSolversDns01AzureDNSManagedIdentityOutput) ToIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01AzureDNSManagedIdentityPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v IssuerSpecAcmeSolversDns01AzureDNSManagedIdentity) *IssuerSpecAcmeSolversDns01AzureDNSManagedIdentity {
		return &v
	}).(IssuerSpecAcmeSolversDns01AzureDNSManagedIdentityPtrOutput)
}

func (o IssuerSpecAcmeSolversDns01AzureDNSManagedIdentityOutput) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversDns01AzureDNSManagedIdentity] {
	return pulumix.Output[IssuerSpecAcmeSolversDns01AzureDNSManagedIdentity]{
		OutputState: o.OutputState,
	}
}

// client ID of the managed identity, can not be used at the same time as resourceID
func (o IssuerSpecAcmeSolversDns01AzureDNSManagedIdentityOutput) ClientID() pulumi.StringPtrOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversDns01AzureDNSManagedIdentity) *string { return v.ClientID }).(pulumi.StringPtrOutput)
}

// resource ID of the managed identity, can not be used at the same time as clientID
func (o IssuerSpecAcmeSolversDns01AzureDNSManagedIdentityOutput) ResourceID() pulumi.StringPtrOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversDns01AzureDNSManagedIdentity) *string { return v.ResourceID }).(pulumi.StringPtrOutput)
}

type IssuerSpecAcmeSolversDns01AzureDNSManagedIdentityPtrOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversDns01AzureDNSManagedIdentityPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecAcmeSolversDns01AzureDNSManagedIdentity)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversDns01AzureDNSManagedIdentityPtrOutput) ToIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityPtrOutput() IssuerSpecAcmeSolversDns01AzureDNSManagedIdentityPtrOutput {
	return o
}

func (o IssuerSpecAcmeSolversDns01AzureDNSManagedIdentityPtrOutput) ToIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01AzureDNSManagedIdentityPtrOutput {
	return o
}

func (o IssuerSpecAcmeSolversDns01AzureDNSManagedIdentityPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecAcmeSolversDns01AzureDNSManagedIdentity] {
	return pulumix.Output[*IssuerSpecAcmeSolversDns01AzureDNSManagedIdentity]{
		OutputState: o.OutputState,
	}
}

func (o IssuerSpecAcmeSolversDns01AzureDNSManagedIdentityPtrOutput) Elem() IssuerSpecAcmeSolversDns01AzureDNSManagedIdentityOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversDns01AzureDNSManagedIdentity) IssuerSpecAcmeSolversDns01AzureDNSManagedIdentity {
		if v != nil {
			return *v
		}
		var ret IssuerSpecAcmeSolversDns01AzureDNSManagedIdentity
		return ret
	}).(IssuerSpecAcmeSolversDns01AzureDNSManagedIdentityOutput)
}

// client ID of the managed identity, can not be used at the same time as resourceID
func (o IssuerSpecAcmeSolversDns01AzureDNSManagedIdentityPtrOutput) ClientID() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversDns01AzureDNSManagedIdentity) *string {
		if v == nil {
			return nil
		}
		return v.ClientID
	}).(pulumi.StringPtrOutput)
}

// resource ID of the managed identity, can not be used at the same time as clientID
func (o IssuerSpecAcmeSolversDns01AzureDNSManagedIdentityPtrOutput) ResourceID() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversDns01AzureDNSManagedIdentity) *string {
		if v == nil {
			return nil
		}
		return v.ResourceID
	}).(pulumi.StringPtrOutput)
}

// Use the Google Cloud DNS API to manage DNS01 challenge records.
type IssuerSpecAcmeSolversDns01CloudDNS struct {
	// HostedZoneName is an optional field that tells cert-manager in which Cloud DNS zone the challenge record has to be created. If left empty cert-manager will automatically choose a zone.
	HostedZoneName *string `pulumi:"hostedZoneName"`
	Project        string  `pulumi:"project"`
	// A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.
	ServiceAccountSecretRef *IssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRef `pulumi:"serviceAccountSecretRef"`
}

// IssuerSpecAcmeSolversDns01CloudDNSInput is an input type that accepts IssuerSpecAcmeSolversDns01CloudDNSArgs and IssuerSpecAcmeSolversDns01CloudDNSOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversDns01CloudDNSInput` via:
//
//	IssuerSpecAcmeSolversDns01CloudDNSArgs{...}
type IssuerSpecAcmeSolversDns01CloudDNSInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversDns01CloudDNSOutput() IssuerSpecAcmeSolversDns01CloudDNSOutput
	ToIssuerSpecAcmeSolversDns01CloudDNSOutputWithContext(context.Context) IssuerSpecAcmeSolversDns01CloudDNSOutput
}

// Use the Google Cloud DNS API to manage DNS01 challenge records.
type IssuerSpecAcmeSolversDns01CloudDNSArgs struct {
	// HostedZoneName is an optional field that tells cert-manager in which Cloud DNS zone the challenge record has to be created. If left empty cert-manager will automatically choose a zone.
	HostedZoneName pulumi.StringPtrInput `pulumi:"hostedZoneName"`
	Project        pulumi.StringInput    `pulumi:"project"`
	// A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.
	ServiceAccountSecretRef IssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefPtrInput `pulumi:"serviceAccountSecretRef"`
}

func (IssuerSpecAcmeSolversDns01CloudDNSArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversDns01CloudDNS)(nil)).Elem()
}

func (i IssuerSpecAcmeSolversDns01CloudDNSArgs) ToIssuerSpecAcmeSolversDns01CloudDNSOutput() IssuerSpecAcmeSolversDns01CloudDNSOutput {
	return i.ToIssuerSpecAcmeSolversDns01CloudDNSOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversDns01CloudDNSArgs) ToIssuerSpecAcmeSolversDns01CloudDNSOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01CloudDNSOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversDns01CloudDNSOutput)
}

func (i IssuerSpecAcmeSolversDns01CloudDNSArgs) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversDns01CloudDNS] {
	return pulumix.Output[IssuerSpecAcmeSolversDns01CloudDNS]{
		OutputState: i.ToIssuerSpecAcmeSolversDns01CloudDNSOutputWithContext(ctx).OutputState,
	}
}

func (i IssuerSpecAcmeSolversDns01CloudDNSArgs) ToIssuerSpecAcmeSolversDns01CloudDNSPtrOutput() IssuerSpecAcmeSolversDns01CloudDNSPtrOutput {
	return i.ToIssuerSpecAcmeSolversDns01CloudDNSPtrOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversDns01CloudDNSArgs) ToIssuerSpecAcmeSolversDns01CloudDNSPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01CloudDNSPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversDns01CloudDNSOutput).ToIssuerSpecAcmeSolversDns01CloudDNSPtrOutputWithContext(ctx)
}

// IssuerSpecAcmeSolversDns01CloudDNSPtrInput is an input type that accepts IssuerSpecAcmeSolversDns01CloudDNSArgs, IssuerSpecAcmeSolversDns01CloudDNSPtr and IssuerSpecAcmeSolversDns01CloudDNSPtrOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversDns01CloudDNSPtrInput` via:
//
//	        IssuerSpecAcmeSolversDns01CloudDNSArgs{...}
//
//	or:
//
//	        nil
type IssuerSpecAcmeSolversDns01CloudDNSPtrInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversDns01CloudDNSPtrOutput() IssuerSpecAcmeSolversDns01CloudDNSPtrOutput
	ToIssuerSpecAcmeSolversDns01CloudDNSPtrOutputWithContext(context.Context) IssuerSpecAcmeSolversDns01CloudDNSPtrOutput
}

type issuerSpecAcmeSolversDns01CloudDNSPtrType IssuerSpecAcmeSolversDns01CloudDNSArgs

func IssuerSpecAcmeSolversDns01CloudDNSPtr(v *IssuerSpecAcmeSolversDns01CloudDNSArgs) IssuerSpecAcmeSolversDns01CloudDNSPtrInput {
	return (*issuerSpecAcmeSolversDns01CloudDNSPtrType)(v)
}

func (*issuerSpecAcmeSolversDns01CloudDNSPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecAcmeSolversDns01CloudDNS)(nil)).Elem()
}

func (i *issuerSpecAcmeSolversDns01CloudDNSPtrType) ToIssuerSpecAcmeSolversDns01CloudDNSPtrOutput() IssuerSpecAcmeSolversDns01CloudDNSPtrOutput {
	return i.ToIssuerSpecAcmeSolversDns01CloudDNSPtrOutputWithContext(context.Background())
}

func (i *issuerSpecAcmeSolversDns01CloudDNSPtrType) ToIssuerSpecAcmeSolversDns01CloudDNSPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01CloudDNSPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversDns01CloudDNSPtrOutput)
}

func (i *issuerSpecAcmeSolversDns01CloudDNSPtrType) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecAcmeSolversDns01CloudDNS] {
	return pulumix.Output[*IssuerSpecAcmeSolversDns01CloudDNS]{
		OutputState: i.ToIssuerSpecAcmeSolversDns01CloudDNSPtrOutputWithContext(ctx).OutputState,
	}
}

// Use the Google Cloud DNS API to manage DNS01 challenge records.
type IssuerSpecAcmeSolversDns01CloudDNSOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversDns01CloudDNSOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversDns01CloudDNS)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversDns01CloudDNSOutput) ToIssuerSpecAcmeSolversDns01CloudDNSOutput() IssuerSpecAcmeSolversDns01CloudDNSOutput {
	return o
}

func (o IssuerSpecAcmeSolversDns01CloudDNSOutput) ToIssuerSpecAcmeSolversDns01CloudDNSOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01CloudDNSOutput {
	return o
}

func (o IssuerSpecAcmeSolversDns01CloudDNSOutput) ToIssuerSpecAcmeSolversDns01CloudDNSPtrOutput() IssuerSpecAcmeSolversDns01CloudDNSPtrOutput {
	return o.ToIssuerSpecAcmeSolversDns01CloudDNSPtrOutputWithContext(context.Background())
}

func (o IssuerSpecAcmeSolversDns01CloudDNSOutput) ToIssuerSpecAcmeSolversDns01CloudDNSPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01CloudDNSPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v IssuerSpecAcmeSolversDns01CloudDNS) *IssuerSpecAcmeSolversDns01CloudDNS {
		return &v
	}).(IssuerSpecAcmeSolversDns01CloudDNSPtrOutput)
}

func (o IssuerSpecAcmeSolversDns01CloudDNSOutput) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversDns01CloudDNS] {
	return pulumix.Output[IssuerSpecAcmeSolversDns01CloudDNS]{
		OutputState: o.OutputState,
	}
}

// HostedZoneName is an optional field that tells cert-manager in which Cloud DNS zone the challenge record has to be created. If left empty cert-manager will automatically choose a zone.
func (o IssuerSpecAcmeSolversDns01CloudDNSOutput) HostedZoneName() pulumi.StringPtrOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversDns01CloudDNS) *string { return v.HostedZoneName }).(pulumi.StringPtrOutput)
}

func (o IssuerSpecAcmeSolversDns01CloudDNSOutput) Project() pulumi.StringOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversDns01CloudDNS) string { return v.Project }).(pulumi.StringOutput)
}

// A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.
func (o IssuerSpecAcmeSolversDns01CloudDNSOutput) ServiceAccountSecretRef() IssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefPtrOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversDns01CloudDNS) *IssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRef {
		return v.ServiceAccountSecretRef
	}).(IssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefPtrOutput)
}

type IssuerSpecAcmeSolversDns01CloudDNSPtrOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversDns01CloudDNSPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecAcmeSolversDns01CloudDNS)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversDns01CloudDNSPtrOutput) ToIssuerSpecAcmeSolversDns01CloudDNSPtrOutput() IssuerSpecAcmeSolversDns01CloudDNSPtrOutput {
	return o
}

func (o IssuerSpecAcmeSolversDns01CloudDNSPtrOutput) ToIssuerSpecAcmeSolversDns01CloudDNSPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01CloudDNSPtrOutput {
	return o
}

func (o IssuerSpecAcmeSolversDns01CloudDNSPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecAcmeSolversDns01CloudDNS] {
	return pulumix.Output[*IssuerSpecAcmeSolversDns01CloudDNS]{
		OutputState: o.OutputState,
	}
}

func (o IssuerSpecAcmeSolversDns01CloudDNSPtrOutput) Elem() IssuerSpecAcmeSolversDns01CloudDNSOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversDns01CloudDNS) IssuerSpecAcmeSolversDns01CloudDNS {
		if v != nil {
			return *v
		}
		var ret IssuerSpecAcmeSolversDns01CloudDNS
		return ret
	}).(IssuerSpecAcmeSolversDns01CloudDNSOutput)
}

// HostedZoneName is an optional field that tells cert-manager in which Cloud DNS zone the challenge record has to be created. If left empty cert-manager will automatically choose a zone.
func (o IssuerSpecAcmeSolversDns01CloudDNSPtrOutput) HostedZoneName() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversDns01CloudDNS) *string {
		if v == nil {
			return nil
		}
		return v.HostedZoneName
	}).(pulumi.StringPtrOutput)
}

func (o IssuerSpecAcmeSolversDns01CloudDNSPtrOutput) Project() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversDns01CloudDNS) *string {
		if v == nil {
			return nil
		}
		return &v.Project
	}).(pulumi.StringPtrOutput)
}

// A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.
func (o IssuerSpecAcmeSolversDns01CloudDNSPtrOutput) ServiceAccountSecretRef() IssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefPtrOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversDns01CloudDNS) *IssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRef {
		if v == nil {
			return nil
		}
		return v.ServiceAccountSecretRef
	}).(IssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefPtrOutput)
}

// A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.
type IssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRef struct {
	// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
	Key *string `pulumi:"key"`
	// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
	Name string `pulumi:"name"`
}

// IssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefInput is an input type that accepts IssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefArgs and IssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefInput` via:
//
//	IssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefArgs{...}
type IssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefOutput() IssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefOutput
	ToIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefOutputWithContext(context.Context) IssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefOutput
}

// A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.
type IssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefArgs struct {
	// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
	Key pulumi.StringPtrInput `pulumi:"key"`
	// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
	Name pulumi.StringInput `pulumi:"name"`
}

func (IssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRef)(nil)).Elem()
}

func (i IssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefArgs) ToIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefOutput() IssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefOutput {
	return i.ToIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefArgs) ToIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefOutput)
}

func (i IssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefArgs) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRef] {
	return pulumix.Output[IssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRef]{
		OutputState: i.ToIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefOutputWithContext(ctx).OutputState,
	}
}

func (i IssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefArgs) ToIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefPtrOutput() IssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefPtrOutput {
	return i.ToIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefPtrOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefArgs) ToIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefOutput).ToIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefPtrOutputWithContext(ctx)
}

// IssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefPtrInput is an input type that accepts IssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefArgs, IssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefPtr and IssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefPtrOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefPtrInput` via:
//
//	        IssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefArgs{...}
//
//	or:
//
//	        nil
type IssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefPtrInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefPtrOutput() IssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefPtrOutput
	ToIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefPtrOutputWithContext(context.Context) IssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefPtrOutput
}

type issuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefPtrType IssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefArgs

func IssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefPtr(v *IssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefArgs) IssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefPtrInput {
	return (*issuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefPtrType)(v)
}

func (*issuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRef)(nil)).Elem()
}

func (i *issuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefPtrType) ToIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefPtrOutput() IssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefPtrOutput {
	return i.ToIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefPtrOutputWithContext(context.Background())
}

func (i *issuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefPtrType) ToIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefPtrOutput)
}

func (i *issuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefPtrType) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRef] {
	return pulumix.Output[*IssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRef]{
		OutputState: i.ToIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefPtrOutputWithContext(ctx).OutputState,
	}
}

// A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.
type IssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRef)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefOutput) ToIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefOutput() IssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefOutput {
	return o
}

func (o IssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefOutput) ToIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefOutput {
	return o
}

func (o IssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefOutput) ToIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefPtrOutput() IssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefPtrOutput {
	return o.ToIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefPtrOutputWithContext(context.Background())
}

func (o IssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefOutput) ToIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v IssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRef) *IssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRef {
		return &v
	}).(IssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefPtrOutput)
}

func (o IssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefOutput) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRef] {
	return pulumix.Output[IssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRef]{
		OutputState: o.OutputState,
	}
}

// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
func (o IssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefOutput) Key() pulumi.StringPtrOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRef) *string { return v.Key }).(pulumi.StringPtrOutput)
}

// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
func (o IssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefOutput) Name() pulumi.StringOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRef) string { return v.Name }).(pulumi.StringOutput)
}

type IssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefPtrOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRef)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefPtrOutput) ToIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefPtrOutput() IssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefPtrOutput {
	return o
}

func (o IssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefPtrOutput) ToIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefPtrOutput {
	return o
}

func (o IssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRef] {
	return pulumix.Output[*IssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRef]{
		OutputState: o.OutputState,
	}
}

func (o IssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefPtrOutput) Elem() IssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRef) IssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRef {
		if v != nil {
			return *v
		}
		var ret IssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRef
		return ret
	}).(IssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefOutput)
}

// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
func (o IssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefPtrOutput) Key() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRef) *string {
		if v == nil {
			return nil
		}
		return v.Key
	}).(pulumi.StringPtrOutput)
}

// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
func (o IssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefPtrOutput) Name() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRef) *string {
		if v == nil {
			return nil
		}
		return &v.Name
	}).(pulumi.StringPtrOutput)
}

// Use the Cloudflare API to manage DNS01 challenge records.
type IssuerSpecAcmeSolversDns01Cloudflare struct {
	// API key to use to authenticate with Cloudflare. Note: using an API token to authenticate is now the recommended method as it allows greater control of permissions.
	ApiKeySecretRef *IssuerSpecAcmeSolversDns01CloudflareApiKeySecretRef `pulumi:"apiKeySecretRef"`
	// API token used to authenticate with Cloudflare.
	ApiTokenSecretRef *IssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRef `pulumi:"apiTokenSecretRef"`
	// Email of the account, only required when using API key based authentication.
	Email *string `pulumi:"email"`
}

// IssuerSpecAcmeSolversDns01CloudflareInput is an input type that accepts IssuerSpecAcmeSolversDns01CloudflareArgs and IssuerSpecAcmeSolversDns01CloudflareOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversDns01CloudflareInput` via:
//
//	IssuerSpecAcmeSolversDns01CloudflareArgs{...}
type IssuerSpecAcmeSolversDns01CloudflareInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversDns01CloudflareOutput() IssuerSpecAcmeSolversDns01CloudflareOutput
	ToIssuerSpecAcmeSolversDns01CloudflareOutputWithContext(context.Context) IssuerSpecAcmeSolversDns01CloudflareOutput
}

// Use the Cloudflare API to manage DNS01 challenge records.
type IssuerSpecAcmeSolversDns01CloudflareArgs struct {
	// API key to use to authenticate with Cloudflare. Note: using an API token to authenticate is now the recommended method as it allows greater control of permissions.
	ApiKeySecretRef IssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefPtrInput `pulumi:"apiKeySecretRef"`
	// API token used to authenticate with Cloudflare.
	ApiTokenSecretRef IssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefPtrInput `pulumi:"apiTokenSecretRef"`
	// Email of the account, only required when using API key based authentication.
	Email pulumi.StringPtrInput `pulumi:"email"`
}

func (IssuerSpecAcmeSolversDns01CloudflareArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversDns01Cloudflare)(nil)).Elem()
}

func (i IssuerSpecAcmeSolversDns01CloudflareArgs) ToIssuerSpecAcmeSolversDns01CloudflareOutput() IssuerSpecAcmeSolversDns01CloudflareOutput {
	return i.ToIssuerSpecAcmeSolversDns01CloudflareOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversDns01CloudflareArgs) ToIssuerSpecAcmeSolversDns01CloudflareOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01CloudflareOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversDns01CloudflareOutput)
}

func (i IssuerSpecAcmeSolversDns01CloudflareArgs) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversDns01Cloudflare] {
	return pulumix.Output[IssuerSpecAcmeSolversDns01Cloudflare]{
		OutputState: i.ToIssuerSpecAcmeSolversDns01CloudflareOutputWithContext(ctx).OutputState,
	}
}

func (i IssuerSpecAcmeSolversDns01CloudflareArgs) ToIssuerSpecAcmeSolversDns01CloudflarePtrOutput() IssuerSpecAcmeSolversDns01CloudflarePtrOutput {
	return i.ToIssuerSpecAcmeSolversDns01CloudflarePtrOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversDns01CloudflareArgs) ToIssuerSpecAcmeSolversDns01CloudflarePtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01CloudflarePtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversDns01CloudflareOutput).ToIssuerSpecAcmeSolversDns01CloudflarePtrOutputWithContext(ctx)
}

// IssuerSpecAcmeSolversDns01CloudflarePtrInput is an input type that accepts IssuerSpecAcmeSolversDns01CloudflareArgs, IssuerSpecAcmeSolversDns01CloudflarePtr and IssuerSpecAcmeSolversDns01CloudflarePtrOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversDns01CloudflarePtrInput` via:
//
//	        IssuerSpecAcmeSolversDns01CloudflareArgs{...}
//
//	or:
//
//	        nil
type IssuerSpecAcmeSolversDns01CloudflarePtrInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversDns01CloudflarePtrOutput() IssuerSpecAcmeSolversDns01CloudflarePtrOutput
	ToIssuerSpecAcmeSolversDns01CloudflarePtrOutputWithContext(context.Context) IssuerSpecAcmeSolversDns01CloudflarePtrOutput
}

type issuerSpecAcmeSolversDns01CloudflarePtrType IssuerSpecAcmeSolversDns01CloudflareArgs

func IssuerSpecAcmeSolversDns01CloudflarePtr(v *IssuerSpecAcmeSolversDns01CloudflareArgs) IssuerSpecAcmeSolversDns01CloudflarePtrInput {
	return (*issuerSpecAcmeSolversDns01CloudflarePtrType)(v)
}

func (*issuerSpecAcmeSolversDns01CloudflarePtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecAcmeSolversDns01Cloudflare)(nil)).Elem()
}

func (i *issuerSpecAcmeSolversDns01CloudflarePtrType) ToIssuerSpecAcmeSolversDns01CloudflarePtrOutput() IssuerSpecAcmeSolversDns01CloudflarePtrOutput {
	return i.ToIssuerSpecAcmeSolversDns01CloudflarePtrOutputWithContext(context.Background())
}

func (i *issuerSpecAcmeSolversDns01CloudflarePtrType) ToIssuerSpecAcmeSolversDns01CloudflarePtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01CloudflarePtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversDns01CloudflarePtrOutput)
}

func (i *issuerSpecAcmeSolversDns01CloudflarePtrType) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecAcmeSolversDns01Cloudflare] {
	return pulumix.Output[*IssuerSpecAcmeSolversDns01Cloudflare]{
		OutputState: i.ToIssuerSpecAcmeSolversDns01CloudflarePtrOutputWithContext(ctx).OutputState,
	}
}

// Use the Cloudflare API to manage DNS01 challenge records.
type IssuerSpecAcmeSolversDns01CloudflareOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversDns01CloudflareOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversDns01Cloudflare)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversDns01CloudflareOutput) ToIssuerSpecAcmeSolversDns01CloudflareOutput() IssuerSpecAcmeSolversDns01CloudflareOutput {
	return o
}

func (o IssuerSpecAcmeSolversDns01CloudflareOutput) ToIssuerSpecAcmeSolversDns01CloudflareOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01CloudflareOutput {
	return o
}

func (o IssuerSpecAcmeSolversDns01CloudflareOutput) ToIssuerSpecAcmeSolversDns01CloudflarePtrOutput() IssuerSpecAcmeSolversDns01CloudflarePtrOutput {
	return o.ToIssuerSpecAcmeSolversDns01CloudflarePtrOutputWithContext(context.Background())
}

func (o IssuerSpecAcmeSolversDns01CloudflareOutput) ToIssuerSpecAcmeSolversDns01CloudflarePtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01CloudflarePtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v IssuerSpecAcmeSolversDns01Cloudflare) *IssuerSpecAcmeSolversDns01Cloudflare {
		return &v
	}).(IssuerSpecAcmeSolversDns01CloudflarePtrOutput)
}

func (o IssuerSpecAcmeSolversDns01CloudflareOutput) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversDns01Cloudflare] {
	return pulumix.Output[IssuerSpecAcmeSolversDns01Cloudflare]{
		OutputState: o.OutputState,
	}
}

// API key to use to authenticate with Cloudflare. Note: using an API token to authenticate is now the recommended method as it allows greater control of permissions.
func (o IssuerSpecAcmeSolversDns01CloudflareOutput) ApiKeySecretRef() IssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefPtrOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversDns01Cloudflare) *IssuerSpecAcmeSolversDns01CloudflareApiKeySecretRef {
		return v.ApiKeySecretRef
	}).(IssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefPtrOutput)
}

// API token used to authenticate with Cloudflare.
func (o IssuerSpecAcmeSolversDns01CloudflareOutput) ApiTokenSecretRef() IssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefPtrOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversDns01Cloudflare) *IssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRef {
		return v.ApiTokenSecretRef
	}).(IssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefPtrOutput)
}

// Email of the account, only required when using API key based authentication.
func (o IssuerSpecAcmeSolversDns01CloudflareOutput) Email() pulumi.StringPtrOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversDns01Cloudflare) *string { return v.Email }).(pulumi.StringPtrOutput)
}

type IssuerSpecAcmeSolversDns01CloudflarePtrOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversDns01CloudflarePtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecAcmeSolversDns01Cloudflare)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversDns01CloudflarePtrOutput) ToIssuerSpecAcmeSolversDns01CloudflarePtrOutput() IssuerSpecAcmeSolversDns01CloudflarePtrOutput {
	return o
}

func (o IssuerSpecAcmeSolversDns01CloudflarePtrOutput) ToIssuerSpecAcmeSolversDns01CloudflarePtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01CloudflarePtrOutput {
	return o
}

func (o IssuerSpecAcmeSolversDns01CloudflarePtrOutput) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecAcmeSolversDns01Cloudflare] {
	return pulumix.Output[*IssuerSpecAcmeSolversDns01Cloudflare]{
		OutputState: o.OutputState,
	}
}

func (o IssuerSpecAcmeSolversDns01CloudflarePtrOutput) Elem() IssuerSpecAcmeSolversDns01CloudflareOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversDns01Cloudflare) IssuerSpecAcmeSolversDns01Cloudflare {
		if v != nil {
			return *v
		}
		var ret IssuerSpecAcmeSolversDns01Cloudflare
		return ret
	}).(IssuerSpecAcmeSolversDns01CloudflareOutput)
}

// API key to use to authenticate with Cloudflare. Note: using an API token to authenticate is now the recommended method as it allows greater control of permissions.
func (o IssuerSpecAcmeSolversDns01CloudflarePtrOutput) ApiKeySecretRef() IssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefPtrOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversDns01Cloudflare) *IssuerSpecAcmeSolversDns01CloudflareApiKeySecretRef {
		if v == nil {
			return nil
		}
		return v.ApiKeySecretRef
	}).(IssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefPtrOutput)
}

// API token used to authenticate with Cloudflare.
func (o IssuerSpecAcmeSolversDns01CloudflarePtrOutput) ApiTokenSecretRef() IssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefPtrOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversDns01Cloudflare) *IssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRef {
		if v == nil {
			return nil
		}
		return v.ApiTokenSecretRef
	}).(IssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefPtrOutput)
}

// Email of the account, only required when using API key based authentication.
func (o IssuerSpecAcmeSolversDns01CloudflarePtrOutput) Email() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversDns01Cloudflare) *string {
		if v == nil {
			return nil
		}
		return v.Email
	}).(pulumi.StringPtrOutput)
}

// API key to use to authenticate with Cloudflare. Note: using an API token to authenticate is now the recommended method as it allows greater control of permissions.
type IssuerSpecAcmeSolversDns01CloudflareApiKeySecretRef struct {
	// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
	Key *string `pulumi:"key"`
	// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
	Name string `pulumi:"name"`
}

// IssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefInput is an input type that accepts IssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefArgs and IssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefInput` via:
//
//	IssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefArgs{...}
type IssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefOutput() IssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefOutput
	ToIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefOutputWithContext(context.Context) IssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefOutput
}

// API key to use to authenticate with Cloudflare. Note: using an API token to authenticate is now the recommended method as it allows greater control of permissions.
type IssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefArgs struct {
	// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
	Key pulumi.StringPtrInput `pulumi:"key"`
	// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
	Name pulumi.StringInput `pulumi:"name"`
}

func (IssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversDns01CloudflareApiKeySecretRef)(nil)).Elem()
}

func (i IssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefArgs) ToIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefOutput() IssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefOutput {
	return i.ToIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefArgs) ToIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefOutput)
}

func (i IssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefArgs) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversDns01CloudflareApiKeySecretRef] {
	return pulumix.Output[IssuerSpecAcmeSolversDns01CloudflareApiKeySecretRef]{
		OutputState: i.ToIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefOutputWithContext(ctx).OutputState,
	}
}

func (i IssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefArgs) ToIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefPtrOutput() IssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefPtrOutput {
	return i.ToIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefPtrOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefArgs) ToIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefOutput).ToIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefPtrOutputWithContext(ctx)
}

// IssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefPtrInput is an input type that accepts IssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefArgs, IssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefPtr and IssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefPtrOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefPtrInput` via:
//
//	        IssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefArgs{...}
//
//	or:
//
//	        nil
type IssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefPtrInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefPtrOutput() IssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefPtrOutput
	ToIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefPtrOutputWithContext(context.Context) IssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefPtrOutput
}

type issuerSpecAcmeSolversDns01CloudflareApiKeySecretRefPtrType IssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefArgs

func IssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefPtr(v *IssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefArgs) IssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefPtrInput {
	return (*issuerSpecAcmeSolversDns01CloudflareApiKeySecretRefPtrType)(v)
}

func (*issuerSpecAcmeSolversDns01CloudflareApiKeySecretRefPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecAcmeSolversDns01CloudflareApiKeySecretRef)(nil)).Elem()
}

func (i *issuerSpecAcmeSolversDns01CloudflareApiKeySecretRefPtrType) ToIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefPtrOutput() IssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefPtrOutput {
	return i.ToIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefPtrOutputWithContext(context.Background())
}

func (i *issuerSpecAcmeSolversDns01CloudflareApiKeySecretRefPtrType) ToIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefPtrOutput)
}

func (i *issuerSpecAcmeSolversDns01CloudflareApiKeySecretRefPtrType) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecAcmeSolversDns01CloudflareApiKeySecretRef] {
	return pulumix.Output[*IssuerSpecAcmeSolversDns01CloudflareApiKeySecretRef]{
		OutputState: i.ToIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefPtrOutputWithContext(ctx).OutputState,
	}
}

// API key to use to authenticate with Cloudflare. Note: using an API token to authenticate is now the recommended method as it allows greater control of permissions.
type IssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversDns01CloudflareApiKeySecretRef)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefOutput) ToIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefOutput() IssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefOutput {
	return o
}

func (o IssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefOutput) ToIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefOutput {
	return o
}

func (o IssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefOutput) ToIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefPtrOutput() IssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefPtrOutput {
	return o.ToIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefPtrOutputWithContext(context.Background())
}

func (o IssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefOutput) ToIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v IssuerSpecAcmeSolversDns01CloudflareApiKeySecretRef) *IssuerSpecAcmeSolversDns01CloudflareApiKeySecretRef {
		return &v
	}).(IssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefPtrOutput)
}

func (o IssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefOutput) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversDns01CloudflareApiKeySecretRef] {
	return pulumix.Output[IssuerSpecAcmeSolversDns01CloudflareApiKeySecretRef]{
		OutputState: o.OutputState,
	}
}

// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
func (o IssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefOutput) Key() pulumi.StringPtrOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversDns01CloudflareApiKeySecretRef) *string { return v.Key }).(pulumi.StringPtrOutput)
}

// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
func (o IssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefOutput) Name() pulumi.StringOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversDns01CloudflareApiKeySecretRef) string { return v.Name }).(pulumi.StringOutput)
}

type IssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefPtrOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecAcmeSolversDns01CloudflareApiKeySecretRef)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefPtrOutput) ToIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefPtrOutput() IssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefPtrOutput {
	return o
}

func (o IssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefPtrOutput) ToIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefPtrOutput {
	return o
}

func (o IssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecAcmeSolversDns01CloudflareApiKeySecretRef] {
	return pulumix.Output[*IssuerSpecAcmeSolversDns01CloudflareApiKeySecretRef]{
		OutputState: o.OutputState,
	}
}

func (o IssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefPtrOutput) Elem() IssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversDns01CloudflareApiKeySecretRef) IssuerSpecAcmeSolversDns01CloudflareApiKeySecretRef {
		if v != nil {
			return *v
		}
		var ret IssuerSpecAcmeSolversDns01CloudflareApiKeySecretRef
		return ret
	}).(IssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefOutput)
}

// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
func (o IssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefPtrOutput) Key() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversDns01CloudflareApiKeySecretRef) *string {
		if v == nil {
			return nil
		}
		return v.Key
	}).(pulumi.StringPtrOutput)
}

// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
func (o IssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefPtrOutput) Name() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversDns01CloudflareApiKeySecretRef) *string {
		if v == nil {
			return nil
		}
		return &v.Name
	}).(pulumi.StringPtrOutput)
}

// API token used to authenticate with Cloudflare.
type IssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRef struct {
	// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
	Key *string `pulumi:"key"`
	// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
	Name string `pulumi:"name"`
}

// IssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefInput is an input type that accepts IssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefArgs and IssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefInput` via:
//
//	IssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefArgs{...}
type IssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefOutput() IssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefOutput
	ToIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefOutputWithContext(context.Context) IssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefOutput
}

// API token used to authenticate with Cloudflare.
type IssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefArgs struct {
	// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
	Key pulumi.StringPtrInput `pulumi:"key"`
	// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
	Name pulumi.StringInput `pulumi:"name"`
}

func (IssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRef)(nil)).Elem()
}

func (i IssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefArgs) ToIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefOutput() IssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefOutput {
	return i.ToIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefArgs) ToIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefOutput)
}

func (i IssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefArgs) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRef] {
	return pulumix.Output[IssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRef]{
		OutputState: i.ToIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefOutputWithContext(ctx).OutputState,
	}
}

func (i IssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefArgs) ToIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefPtrOutput() IssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefPtrOutput {
	return i.ToIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefPtrOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefArgs) ToIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefOutput).ToIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefPtrOutputWithContext(ctx)
}

// IssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefPtrInput is an input type that accepts IssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefArgs, IssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefPtr and IssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefPtrOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefPtrInput` via:
//
//	        IssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefArgs{...}
//
//	or:
//
//	        nil
type IssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefPtrInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefPtrOutput() IssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefPtrOutput
	ToIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefPtrOutputWithContext(context.Context) IssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefPtrOutput
}

type issuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefPtrType IssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefArgs

func IssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefPtr(v *IssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefArgs) IssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefPtrInput {
	return (*issuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefPtrType)(v)
}

func (*issuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRef)(nil)).Elem()
}

func (i *issuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefPtrType) ToIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefPtrOutput() IssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefPtrOutput {
	return i.ToIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefPtrOutputWithContext(context.Background())
}

func (i *issuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefPtrType) ToIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefPtrOutput)
}

func (i *issuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefPtrType) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRef] {
	return pulumix.Output[*IssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRef]{
		OutputState: i.ToIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefPtrOutputWithContext(ctx).OutputState,
	}
}

// API token used to authenticate with Cloudflare.
type IssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRef)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefOutput) ToIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefOutput() IssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefOutput {
	return o
}

func (o IssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefOutput) ToIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefOutput {
	return o
}

func (o IssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefOutput) ToIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefPtrOutput() IssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefPtrOutput {
	return o.ToIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefPtrOutputWithContext(context.Background())
}

func (o IssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefOutput) ToIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v IssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRef) *IssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRef {
		return &v
	}).(IssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefPtrOutput)
}

func (o IssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefOutput) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRef] {
	return pulumix.Output[IssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRef]{
		OutputState: o.OutputState,
	}
}

// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
func (o IssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefOutput) Key() pulumi.StringPtrOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRef) *string { return v.Key }).(pulumi.StringPtrOutput)
}

// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
func (o IssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefOutput) Name() pulumi.StringOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRef) string { return v.Name }).(pulumi.StringOutput)
}

type IssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefPtrOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRef)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefPtrOutput) ToIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefPtrOutput() IssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefPtrOutput {
	return o
}

func (o IssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefPtrOutput) ToIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefPtrOutput {
	return o
}

func (o IssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRef] {
	return pulumix.Output[*IssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRef]{
		OutputState: o.OutputState,
	}
}

func (o IssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefPtrOutput) Elem() IssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRef) IssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRef {
		if v != nil {
			return *v
		}
		var ret IssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRef
		return ret
	}).(IssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefOutput)
}

// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
func (o IssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefPtrOutput) Key() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRef) *string {
		if v == nil {
			return nil
		}
		return v.Key
	}).(pulumi.StringPtrOutput)
}

// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
func (o IssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefPtrOutput) Name() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRef) *string {
		if v == nil {
			return nil
		}
		return &v.Name
	}).(pulumi.StringPtrOutput)
}

// Use the DigitalOcean DNS API to manage DNS01 challenge records.
type IssuerSpecAcmeSolversDns01Digitalocean struct {
	// A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.
	TokenSecretRef IssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRef `pulumi:"tokenSecretRef"`
}

// IssuerSpecAcmeSolversDns01DigitaloceanInput is an input type that accepts IssuerSpecAcmeSolversDns01DigitaloceanArgs and IssuerSpecAcmeSolversDns01DigitaloceanOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversDns01DigitaloceanInput` via:
//
//	IssuerSpecAcmeSolversDns01DigitaloceanArgs{...}
type IssuerSpecAcmeSolversDns01DigitaloceanInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversDns01DigitaloceanOutput() IssuerSpecAcmeSolversDns01DigitaloceanOutput
	ToIssuerSpecAcmeSolversDns01DigitaloceanOutputWithContext(context.Context) IssuerSpecAcmeSolversDns01DigitaloceanOutput
}

// Use the DigitalOcean DNS API to manage DNS01 challenge records.
type IssuerSpecAcmeSolversDns01DigitaloceanArgs struct {
	// A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.
	TokenSecretRef IssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefInput `pulumi:"tokenSecretRef"`
}

func (IssuerSpecAcmeSolversDns01DigitaloceanArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversDns01Digitalocean)(nil)).Elem()
}

func (i IssuerSpecAcmeSolversDns01DigitaloceanArgs) ToIssuerSpecAcmeSolversDns01DigitaloceanOutput() IssuerSpecAcmeSolversDns01DigitaloceanOutput {
	return i.ToIssuerSpecAcmeSolversDns01DigitaloceanOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversDns01DigitaloceanArgs) ToIssuerSpecAcmeSolversDns01DigitaloceanOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01DigitaloceanOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversDns01DigitaloceanOutput)
}

func (i IssuerSpecAcmeSolversDns01DigitaloceanArgs) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversDns01Digitalocean] {
	return pulumix.Output[IssuerSpecAcmeSolversDns01Digitalocean]{
		OutputState: i.ToIssuerSpecAcmeSolversDns01DigitaloceanOutputWithContext(ctx).OutputState,
	}
}

func (i IssuerSpecAcmeSolversDns01DigitaloceanArgs) ToIssuerSpecAcmeSolversDns01DigitaloceanPtrOutput() IssuerSpecAcmeSolversDns01DigitaloceanPtrOutput {
	return i.ToIssuerSpecAcmeSolversDns01DigitaloceanPtrOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversDns01DigitaloceanArgs) ToIssuerSpecAcmeSolversDns01DigitaloceanPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01DigitaloceanPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversDns01DigitaloceanOutput).ToIssuerSpecAcmeSolversDns01DigitaloceanPtrOutputWithContext(ctx)
}

// IssuerSpecAcmeSolversDns01DigitaloceanPtrInput is an input type that accepts IssuerSpecAcmeSolversDns01DigitaloceanArgs, IssuerSpecAcmeSolversDns01DigitaloceanPtr and IssuerSpecAcmeSolversDns01DigitaloceanPtrOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversDns01DigitaloceanPtrInput` via:
//
//	        IssuerSpecAcmeSolversDns01DigitaloceanArgs{...}
//
//	or:
//
//	        nil
type IssuerSpecAcmeSolversDns01DigitaloceanPtrInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversDns01DigitaloceanPtrOutput() IssuerSpecAcmeSolversDns01DigitaloceanPtrOutput
	ToIssuerSpecAcmeSolversDns01DigitaloceanPtrOutputWithContext(context.Context) IssuerSpecAcmeSolversDns01DigitaloceanPtrOutput
}

type issuerSpecAcmeSolversDns01DigitaloceanPtrType IssuerSpecAcmeSolversDns01DigitaloceanArgs

func IssuerSpecAcmeSolversDns01DigitaloceanPtr(v *IssuerSpecAcmeSolversDns01DigitaloceanArgs) IssuerSpecAcmeSolversDns01DigitaloceanPtrInput {
	return (*issuerSpecAcmeSolversDns01DigitaloceanPtrType)(v)
}

func (*issuerSpecAcmeSolversDns01DigitaloceanPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecAcmeSolversDns01Digitalocean)(nil)).Elem()
}

func (i *issuerSpecAcmeSolversDns01DigitaloceanPtrType) ToIssuerSpecAcmeSolversDns01DigitaloceanPtrOutput() IssuerSpecAcmeSolversDns01DigitaloceanPtrOutput {
	return i.ToIssuerSpecAcmeSolversDns01DigitaloceanPtrOutputWithContext(context.Background())
}

func (i *issuerSpecAcmeSolversDns01DigitaloceanPtrType) ToIssuerSpecAcmeSolversDns01DigitaloceanPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01DigitaloceanPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversDns01DigitaloceanPtrOutput)
}

func (i *issuerSpecAcmeSolversDns01DigitaloceanPtrType) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecAcmeSolversDns01Digitalocean] {
	return pulumix.Output[*IssuerSpecAcmeSolversDns01Digitalocean]{
		OutputState: i.ToIssuerSpecAcmeSolversDns01DigitaloceanPtrOutputWithContext(ctx).OutputState,
	}
}

// Use the DigitalOcean DNS API to manage DNS01 challenge records.
type IssuerSpecAcmeSolversDns01DigitaloceanOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversDns01DigitaloceanOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversDns01Digitalocean)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversDns01DigitaloceanOutput) ToIssuerSpecAcmeSolversDns01DigitaloceanOutput() IssuerSpecAcmeSolversDns01DigitaloceanOutput {
	return o
}

func (o IssuerSpecAcmeSolversDns01DigitaloceanOutput) ToIssuerSpecAcmeSolversDns01DigitaloceanOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01DigitaloceanOutput {
	return o
}

func (o IssuerSpecAcmeSolversDns01DigitaloceanOutput) ToIssuerSpecAcmeSolversDns01DigitaloceanPtrOutput() IssuerSpecAcmeSolversDns01DigitaloceanPtrOutput {
	return o.ToIssuerSpecAcmeSolversDns01DigitaloceanPtrOutputWithContext(context.Background())
}

func (o IssuerSpecAcmeSolversDns01DigitaloceanOutput) ToIssuerSpecAcmeSolversDns01DigitaloceanPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01DigitaloceanPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v IssuerSpecAcmeSolversDns01Digitalocean) *IssuerSpecAcmeSolversDns01Digitalocean {
		return &v
	}).(IssuerSpecAcmeSolversDns01DigitaloceanPtrOutput)
}

func (o IssuerSpecAcmeSolversDns01DigitaloceanOutput) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversDns01Digitalocean] {
	return pulumix.Output[IssuerSpecAcmeSolversDns01Digitalocean]{
		OutputState: o.OutputState,
	}
}

// A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.
func (o IssuerSpecAcmeSolversDns01DigitaloceanOutput) TokenSecretRef() IssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversDns01Digitalocean) IssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRef {
		return v.TokenSecretRef
	}).(IssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefOutput)
}

type IssuerSpecAcmeSolversDns01DigitaloceanPtrOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversDns01DigitaloceanPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecAcmeSolversDns01Digitalocean)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversDns01DigitaloceanPtrOutput) ToIssuerSpecAcmeSolversDns01DigitaloceanPtrOutput() IssuerSpecAcmeSolversDns01DigitaloceanPtrOutput {
	return o
}

func (o IssuerSpecAcmeSolversDns01DigitaloceanPtrOutput) ToIssuerSpecAcmeSolversDns01DigitaloceanPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01DigitaloceanPtrOutput {
	return o
}

func (o IssuerSpecAcmeSolversDns01DigitaloceanPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecAcmeSolversDns01Digitalocean] {
	return pulumix.Output[*IssuerSpecAcmeSolversDns01Digitalocean]{
		OutputState: o.OutputState,
	}
}

func (o IssuerSpecAcmeSolversDns01DigitaloceanPtrOutput) Elem() IssuerSpecAcmeSolversDns01DigitaloceanOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversDns01Digitalocean) IssuerSpecAcmeSolversDns01Digitalocean {
		if v != nil {
			return *v
		}
		var ret IssuerSpecAcmeSolversDns01Digitalocean
		return ret
	}).(IssuerSpecAcmeSolversDns01DigitaloceanOutput)
}

// A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.
func (o IssuerSpecAcmeSolversDns01DigitaloceanPtrOutput) TokenSecretRef() IssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefPtrOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversDns01Digitalocean) *IssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRef {
		if v == nil {
			return nil
		}
		return &v.TokenSecretRef
	}).(IssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefPtrOutput)
}

// A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.
type IssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRef struct {
	// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
	Key *string `pulumi:"key"`
	// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
	Name string `pulumi:"name"`
}

// IssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefInput is an input type that accepts IssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefArgs and IssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefInput` via:
//
//	IssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefArgs{...}
type IssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefOutput() IssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefOutput
	ToIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefOutputWithContext(context.Context) IssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefOutput
}

// A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.
type IssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefArgs struct {
	// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
	Key pulumi.StringPtrInput `pulumi:"key"`
	// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
	Name pulumi.StringInput `pulumi:"name"`
}

func (IssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRef)(nil)).Elem()
}

func (i IssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefArgs) ToIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefOutput() IssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefOutput {
	return i.ToIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefArgs) ToIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefOutput)
}

func (i IssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefArgs) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRef] {
	return pulumix.Output[IssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRef]{
		OutputState: i.ToIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefOutputWithContext(ctx).OutputState,
	}
}

func (i IssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefArgs) ToIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefPtrOutput() IssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefPtrOutput {
	return i.ToIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefPtrOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefArgs) ToIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefOutput).ToIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefPtrOutputWithContext(ctx)
}

// IssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefPtrInput is an input type that accepts IssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefArgs, IssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefPtr and IssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefPtrOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefPtrInput` via:
//
//	        IssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefArgs{...}
//
//	or:
//
//	        nil
type IssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefPtrInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefPtrOutput() IssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefPtrOutput
	ToIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefPtrOutputWithContext(context.Context) IssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefPtrOutput
}

type issuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefPtrType IssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefArgs

func IssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefPtr(v *IssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefArgs) IssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefPtrInput {
	return (*issuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefPtrType)(v)
}

func (*issuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRef)(nil)).Elem()
}

func (i *issuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefPtrType) ToIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefPtrOutput() IssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefPtrOutput {
	return i.ToIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefPtrOutputWithContext(context.Background())
}

func (i *issuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefPtrType) ToIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefPtrOutput)
}

func (i *issuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefPtrType) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRef] {
	return pulumix.Output[*IssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRef]{
		OutputState: i.ToIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefPtrOutputWithContext(ctx).OutputState,
	}
}

// A reference to a specific 'key' within a Secret resource. In some instances, `key` is a required field.
type IssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRef)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefOutput) ToIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefOutput() IssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefOutput {
	return o
}

func (o IssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefOutput) ToIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefOutput {
	return o
}

func (o IssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefOutput) ToIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefPtrOutput() IssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefPtrOutput {
	return o.ToIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefPtrOutputWithContext(context.Background())
}

func (o IssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefOutput) ToIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v IssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRef) *IssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRef {
		return &v
	}).(IssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefPtrOutput)
}

func (o IssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefOutput) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRef] {
	return pulumix.Output[IssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRef]{
		OutputState: o.OutputState,
	}
}

// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
func (o IssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefOutput) Key() pulumi.StringPtrOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRef) *string { return v.Key }).(pulumi.StringPtrOutput)
}

// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
func (o IssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefOutput) Name() pulumi.StringOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRef) string { return v.Name }).(pulumi.StringOutput)
}

type IssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefPtrOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRef)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefPtrOutput) ToIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefPtrOutput() IssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefPtrOutput {
	return o
}

func (o IssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefPtrOutput) ToIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefPtrOutput {
	return o
}

func (o IssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRef] {
	return pulumix.Output[*IssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRef]{
		OutputState: o.OutputState,
	}
}

func (o IssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefPtrOutput) Elem() IssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRef) IssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRef {
		if v != nil {
			return *v
		}
		var ret IssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRef
		return ret
	}).(IssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefOutput)
}

// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
func (o IssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefPtrOutput) Key() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRef) *string {
		if v == nil {
			return nil
		}
		return v.Key
	}).(pulumi.StringPtrOutput)
}

// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
func (o IssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefPtrOutput) Name() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRef) *string {
		if v == nil {
			return nil
		}
		return &v.Name
	}).(pulumi.StringPtrOutput)
}

// Use RFC2136 ("Dynamic Updates in the Domain Name System") (https://datatracker.ietf.org/doc/rfc2136/) to manage DNS01 challenge records.
type IssuerSpecAcmeSolversDns01Rfc2136 struct {
	// The IP address or hostname of an authoritative DNS server supporting RFC2136 in the form host:port. If the host is an IPv6 address it must be enclosed in square brackets (e.g [2001:db8::1]) ; port is optional. This field is required.
	Nameserver string `pulumi:"nameserver"`
	// The TSIG Algorithm configured in the DNS supporting RFC2136. Used only when ``tsigSecretSecretRef`` and ``tsigKeyName`` are defined. Supported values are (case-insensitive): ``HMACMD5`` (default), ``HMACSHA1``, ``HMACSHA256`` or ``HMACSHA512``.
	TsigAlgorithm *string `pulumi:"tsigAlgorithm"`
	// The TSIG Key name configured in the DNS. If ``tsigSecretSecretRef`` is defined, this field is required.
	TsigKeyName *string `pulumi:"tsigKeyName"`
	// The name of the secret containing the TSIG value. If ``tsigKeyName`` is defined, this field is required.
	TsigSecretSecretRef *IssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRef `pulumi:"tsigSecretSecretRef"`
}

// IssuerSpecAcmeSolversDns01Rfc2136Input is an input type that accepts IssuerSpecAcmeSolversDns01Rfc2136Args and IssuerSpecAcmeSolversDns01Rfc2136Output values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversDns01Rfc2136Input` via:
//
//	IssuerSpecAcmeSolversDns01Rfc2136Args{...}
type IssuerSpecAcmeSolversDns01Rfc2136Input interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversDns01Rfc2136Output() IssuerSpecAcmeSolversDns01Rfc2136Output
	ToIssuerSpecAcmeSolversDns01Rfc2136OutputWithContext(context.Context) IssuerSpecAcmeSolversDns01Rfc2136Output
}

// Use RFC2136 ("Dynamic Updates in the Domain Name System") (https://datatracker.ietf.org/doc/rfc2136/) to manage DNS01 challenge records.
type IssuerSpecAcmeSolversDns01Rfc2136Args struct {
	// The IP address or hostname of an authoritative DNS server supporting RFC2136 in the form host:port. If the host is an IPv6 address it must be enclosed in square brackets (e.g [2001:db8::1]) ; port is optional. This field is required.
	Nameserver pulumi.StringInput `pulumi:"nameserver"`
	// The TSIG Algorithm configured in the DNS supporting RFC2136. Used only when ``tsigSecretSecretRef`` and ``tsigKeyName`` are defined. Supported values are (case-insensitive): ``HMACMD5`` (default), ``HMACSHA1``, ``HMACSHA256`` or ``HMACSHA512``.
	TsigAlgorithm pulumi.StringPtrInput `pulumi:"tsigAlgorithm"`
	// The TSIG Key name configured in the DNS. If ``tsigSecretSecretRef`` is defined, this field is required.
	TsigKeyName pulumi.StringPtrInput `pulumi:"tsigKeyName"`
	// The name of the secret containing the TSIG value. If ``tsigKeyName`` is defined, this field is required.
	TsigSecretSecretRef IssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefPtrInput `pulumi:"tsigSecretSecretRef"`
}

func (IssuerSpecAcmeSolversDns01Rfc2136Args) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversDns01Rfc2136)(nil)).Elem()
}

func (i IssuerSpecAcmeSolversDns01Rfc2136Args) ToIssuerSpecAcmeSolversDns01Rfc2136Output() IssuerSpecAcmeSolversDns01Rfc2136Output {
	return i.ToIssuerSpecAcmeSolversDns01Rfc2136OutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversDns01Rfc2136Args) ToIssuerSpecAcmeSolversDns01Rfc2136OutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01Rfc2136Output {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversDns01Rfc2136Output)
}

func (i IssuerSpecAcmeSolversDns01Rfc2136Args) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversDns01Rfc2136] {
	return pulumix.Output[IssuerSpecAcmeSolversDns01Rfc2136]{
		OutputState: i.ToIssuerSpecAcmeSolversDns01Rfc2136OutputWithContext(ctx).OutputState,
	}
}

func (i IssuerSpecAcmeSolversDns01Rfc2136Args) ToIssuerSpecAcmeSolversDns01Rfc2136PtrOutput() IssuerSpecAcmeSolversDns01Rfc2136PtrOutput {
	return i.ToIssuerSpecAcmeSolversDns01Rfc2136PtrOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversDns01Rfc2136Args) ToIssuerSpecAcmeSolversDns01Rfc2136PtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01Rfc2136PtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversDns01Rfc2136Output).ToIssuerSpecAcmeSolversDns01Rfc2136PtrOutputWithContext(ctx)
}

// IssuerSpecAcmeSolversDns01Rfc2136PtrInput is an input type that accepts IssuerSpecAcmeSolversDns01Rfc2136Args, IssuerSpecAcmeSolversDns01Rfc2136Ptr and IssuerSpecAcmeSolversDns01Rfc2136PtrOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversDns01Rfc2136PtrInput` via:
//
//	        IssuerSpecAcmeSolversDns01Rfc2136Args{...}
//
//	or:
//
//	        nil
type IssuerSpecAcmeSolversDns01Rfc2136PtrInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversDns01Rfc2136PtrOutput() IssuerSpecAcmeSolversDns01Rfc2136PtrOutput
	ToIssuerSpecAcmeSolversDns01Rfc2136PtrOutputWithContext(context.Context) IssuerSpecAcmeSolversDns01Rfc2136PtrOutput
}

type issuerSpecAcmeSolversDns01Rfc2136PtrType IssuerSpecAcmeSolversDns01Rfc2136Args

func IssuerSpecAcmeSolversDns01Rfc2136Ptr(v *IssuerSpecAcmeSolversDns01Rfc2136Args) IssuerSpecAcmeSolversDns01Rfc2136PtrInput {
	return (*issuerSpecAcmeSolversDns01Rfc2136PtrType)(v)
}

func (*issuerSpecAcmeSolversDns01Rfc2136PtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecAcmeSolversDns01Rfc2136)(nil)).Elem()
}

func (i *issuerSpecAcmeSolversDns01Rfc2136PtrType) ToIssuerSpecAcmeSolversDns01Rfc2136PtrOutput() IssuerSpecAcmeSolversDns01Rfc2136PtrOutput {
	return i.ToIssuerSpecAcmeSolversDns01Rfc2136PtrOutputWithContext(context.Background())
}

func (i *issuerSpecAcmeSolversDns01Rfc2136PtrType) ToIssuerSpecAcmeSolversDns01Rfc2136PtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01Rfc2136PtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversDns01Rfc2136PtrOutput)
}

func (i *issuerSpecAcmeSolversDns01Rfc2136PtrType) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecAcmeSolversDns01Rfc2136] {
	return pulumix.Output[*IssuerSpecAcmeSolversDns01Rfc2136]{
		OutputState: i.ToIssuerSpecAcmeSolversDns01Rfc2136PtrOutputWithContext(ctx).OutputState,
	}
}

// Use RFC2136 ("Dynamic Updates in the Domain Name System") (https://datatracker.ietf.org/doc/rfc2136/) to manage DNS01 challenge records.
type IssuerSpecAcmeSolversDns01Rfc2136Output struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversDns01Rfc2136Output) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversDns01Rfc2136)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversDns01Rfc2136Output) ToIssuerSpecAcmeSolversDns01Rfc2136Output() IssuerSpecAcmeSolversDns01Rfc2136Output {
	return o
}

func (o IssuerSpecAcmeSolversDns01Rfc2136Output) ToIssuerSpecAcmeSolversDns01Rfc2136OutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01Rfc2136Output {
	return o
}

func (o IssuerSpecAcmeSolversDns01Rfc2136Output) ToIssuerSpecAcmeSolversDns01Rfc2136PtrOutput() IssuerSpecAcmeSolversDns01Rfc2136PtrOutput {
	return o.ToIssuerSpecAcmeSolversDns01Rfc2136PtrOutputWithContext(context.Background())
}

func (o IssuerSpecAcmeSolversDns01Rfc2136Output) ToIssuerSpecAcmeSolversDns01Rfc2136PtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01Rfc2136PtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v IssuerSpecAcmeSolversDns01Rfc2136) *IssuerSpecAcmeSolversDns01Rfc2136 {
		return &v
	}).(IssuerSpecAcmeSolversDns01Rfc2136PtrOutput)
}

func (o IssuerSpecAcmeSolversDns01Rfc2136Output) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversDns01Rfc2136] {
	return pulumix.Output[IssuerSpecAcmeSolversDns01Rfc2136]{
		OutputState: o.OutputState,
	}
}

// The IP address or hostname of an authoritative DNS server supporting RFC2136 in the form host:port. If the host is an IPv6 address it must be enclosed in square brackets (e.g [2001:db8::1]) ; port is optional. This field is required.
func (o IssuerSpecAcmeSolversDns01Rfc2136Output) Nameserver() pulumi.StringOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversDns01Rfc2136) string { return v.Nameserver }).(pulumi.StringOutput)
}

// The TSIG Algorithm configured in the DNS supporting RFC2136. Used only when “tsigSecretSecretRef“ and “tsigKeyName“ are defined. Supported values are (case-insensitive): “HMACMD5“ (default), “HMACSHA1“, “HMACSHA256“ or “HMACSHA512“.
func (o IssuerSpecAcmeSolversDns01Rfc2136Output) TsigAlgorithm() pulumi.StringPtrOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversDns01Rfc2136) *string { return v.TsigAlgorithm }).(pulumi.StringPtrOutput)
}

// The TSIG Key name configured in the DNS. If “tsigSecretSecretRef“ is defined, this field is required.
func (o IssuerSpecAcmeSolversDns01Rfc2136Output) TsigKeyName() pulumi.StringPtrOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversDns01Rfc2136) *string { return v.TsigKeyName }).(pulumi.StringPtrOutput)
}

// The name of the secret containing the TSIG value. If “tsigKeyName“ is defined, this field is required.
func (o IssuerSpecAcmeSolversDns01Rfc2136Output) TsigSecretSecretRef() IssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefPtrOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversDns01Rfc2136) *IssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRef {
		return v.TsigSecretSecretRef
	}).(IssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefPtrOutput)
}

type IssuerSpecAcmeSolversDns01Rfc2136PtrOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversDns01Rfc2136PtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecAcmeSolversDns01Rfc2136)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversDns01Rfc2136PtrOutput) ToIssuerSpecAcmeSolversDns01Rfc2136PtrOutput() IssuerSpecAcmeSolversDns01Rfc2136PtrOutput {
	return o
}

func (o IssuerSpecAcmeSolversDns01Rfc2136PtrOutput) ToIssuerSpecAcmeSolversDns01Rfc2136PtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01Rfc2136PtrOutput {
	return o
}

func (o IssuerSpecAcmeSolversDns01Rfc2136PtrOutput) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecAcmeSolversDns01Rfc2136] {
	return pulumix.Output[*IssuerSpecAcmeSolversDns01Rfc2136]{
		OutputState: o.OutputState,
	}
}

func (o IssuerSpecAcmeSolversDns01Rfc2136PtrOutput) Elem() IssuerSpecAcmeSolversDns01Rfc2136Output {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversDns01Rfc2136) IssuerSpecAcmeSolversDns01Rfc2136 {
		if v != nil {
			return *v
		}
		var ret IssuerSpecAcmeSolversDns01Rfc2136
		return ret
	}).(IssuerSpecAcmeSolversDns01Rfc2136Output)
}

// The IP address or hostname of an authoritative DNS server supporting RFC2136 in the form host:port. If the host is an IPv6 address it must be enclosed in square brackets (e.g [2001:db8::1]) ; port is optional. This field is required.
func (o IssuerSpecAcmeSolversDns01Rfc2136PtrOutput) Nameserver() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversDns01Rfc2136) *string {
		if v == nil {
			return nil
		}
		return &v.Nameserver
	}).(pulumi.StringPtrOutput)
}

// The TSIG Algorithm configured in the DNS supporting RFC2136. Used only when “tsigSecretSecretRef“ and “tsigKeyName“ are defined. Supported values are (case-insensitive): “HMACMD5“ (default), “HMACSHA1“, “HMACSHA256“ or “HMACSHA512“.
func (o IssuerSpecAcmeSolversDns01Rfc2136PtrOutput) TsigAlgorithm() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversDns01Rfc2136) *string {
		if v == nil {
			return nil
		}
		return v.TsigAlgorithm
	}).(pulumi.StringPtrOutput)
}

// The TSIG Key name configured in the DNS. If “tsigSecretSecretRef“ is defined, this field is required.
func (o IssuerSpecAcmeSolversDns01Rfc2136PtrOutput) TsigKeyName() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversDns01Rfc2136) *string {
		if v == nil {
			return nil
		}
		return v.TsigKeyName
	}).(pulumi.StringPtrOutput)
}

// The name of the secret containing the TSIG value. If “tsigKeyName“ is defined, this field is required.
func (o IssuerSpecAcmeSolversDns01Rfc2136PtrOutput) TsigSecretSecretRef() IssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefPtrOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversDns01Rfc2136) *IssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRef {
		if v == nil {
			return nil
		}
		return v.TsigSecretSecretRef
	}).(IssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefPtrOutput)
}

// The name of the secret containing the TSIG value. If “tsigKeyName“ is defined, this field is required.
type IssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRef struct {
	// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
	Key *string `pulumi:"key"`
	// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
	Name string `pulumi:"name"`
}

// IssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefInput is an input type that accepts IssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefArgs and IssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefInput` via:
//
//	IssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefArgs{...}
type IssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefOutput() IssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefOutput
	ToIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefOutputWithContext(context.Context) IssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefOutput
}

// The name of the secret containing the TSIG value. If “tsigKeyName“ is defined, this field is required.
type IssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefArgs struct {
	// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
	Key pulumi.StringPtrInput `pulumi:"key"`
	// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
	Name pulumi.StringInput `pulumi:"name"`
}

func (IssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRef)(nil)).Elem()
}

func (i IssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefArgs) ToIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefOutput() IssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefOutput {
	return i.ToIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefArgs) ToIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefOutput)
}

func (i IssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefArgs) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRef] {
	return pulumix.Output[IssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRef]{
		OutputState: i.ToIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefOutputWithContext(ctx).OutputState,
	}
}

func (i IssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefArgs) ToIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefPtrOutput() IssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefPtrOutput {
	return i.ToIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefPtrOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefArgs) ToIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefOutput).ToIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefPtrOutputWithContext(ctx)
}

// IssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefPtrInput is an input type that accepts IssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefArgs, IssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefPtr and IssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefPtrOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefPtrInput` via:
//
//	        IssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefArgs{...}
//
//	or:
//
//	        nil
type IssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefPtrInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefPtrOutput() IssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefPtrOutput
	ToIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefPtrOutputWithContext(context.Context) IssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefPtrOutput
}

type issuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefPtrType IssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefArgs

func IssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefPtr(v *IssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefArgs) IssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefPtrInput {
	return (*issuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefPtrType)(v)
}

func (*issuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRef)(nil)).Elem()
}

func (i *issuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefPtrType) ToIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefPtrOutput() IssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefPtrOutput {
	return i.ToIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefPtrOutputWithContext(context.Background())
}

func (i *issuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefPtrType) ToIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefPtrOutput)
}

func (i *issuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefPtrType) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRef] {
	return pulumix.Output[*IssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRef]{
		OutputState: i.ToIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefPtrOutputWithContext(ctx).OutputState,
	}
}

// The name of the secret containing the TSIG value. If “tsigKeyName“ is defined, this field is required.
type IssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRef)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefOutput) ToIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefOutput() IssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefOutput {
	return o
}

func (o IssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefOutput) ToIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefOutput {
	return o
}

func (o IssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefOutput) ToIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefPtrOutput() IssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefPtrOutput {
	return o.ToIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefPtrOutputWithContext(context.Background())
}

func (o IssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefOutput) ToIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v IssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRef) *IssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRef {
		return &v
	}).(IssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefPtrOutput)
}

func (o IssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefOutput) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRef] {
	return pulumix.Output[IssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRef]{
		OutputState: o.OutputState,
	}
}

// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
func (o IssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefOutput) Key() pulumi.StringPtrOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRef) *string { return v.Key }).(pulumi.StringPtrOutput)
}

// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
func (o IssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefOutput) Name() pulumi.StringOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRef) string { return v.Name }).(pulumi.StringOutput)
}

type IssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefPtrOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRef)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefPtrOutput) ToIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefPtrOutput() IssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefPtrOutput {
	return o
}

func (o IssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefPtrOutput) ToIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefPtrOutput {
	return o
}

func (o IssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRef] {
	return pulumix.Output[*IssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRef]{
		OutputState: o.OutputState,
	}
}

func (o IssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefPtrOutput) Elem() IssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRef) IssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRef {
		if v != nil {
			return *v
		}
		var ret IssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRef
		return ret
	}).(IssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefOutput)
}

// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
func (o IssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefPtrOutput) Key() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRef) *string {
		if v == nil {
			return nil
		}
		return v.Key
	}).(pulumi.StringPtrOutput)
}

// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
func (o IssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefPtrOutput) Name() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRef) *string {
		if v == nil {
			return nil
		}
		return &v.Name
	}).(pulumi.StringPtrOutput)
}

// Use the AWS Route53 API to manage DNS01 challenge records.
type IssuerSpecAcmeSolversDns01Route53 struct {
	// The AccessKeyID is used for authentication. If not set we fall-back to using env vars, shared credentials file or AWS Instance metadata see: https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/configuring-sdk.html#specifying-credentials
	AccessKeyID *string `pulumi:"accessKeyID"`
	// If set, the provider will manage only this zone in Route53 and will not do an lookup using the route53:ListHostedZonesByName api call.
	HostedZoneID *string `pulumi:"hostedZoneID"`
	// Always set the region when using AccessKeyID and SecretAccessKey
	Region string `pulumi:"region"`
	// Role is a Role ARN which the Route53 provider will assume using either the explicit credentials AccessKeyID/SecretAccessKey or the inferred credentials from environment variables, shared credentials file or AWS Instance metadata
	Role *string `pulumi:"role"`
	// The SecretAccessKey is used for authentication. If not set we fall-back to using env vars, shared credentials file or AWS Instance metadata https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/configuring-sdk.html#specifying-credentials
	SecretAccessKeySecretRef *IssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRef `pulumi:"secretAccessKeySecretRef"`
}

// IssuerSpecAcmeSolversDns01Route53Input is an input type that accepts IssuerSpecAcmeSolversDns01Route53Args and IssuerSpecAcmeSolversDns01Route53Output values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversDns01Route53Input` via:
//
//	IssuerSpecAcmeSolversDns01Route53Args{...}
type IssuerSpecAcmeSolversDns01Route53Input interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversDns01Route53Output() IssuerSpecAcmeSolversDns01Route53Output
	ToIssuerSpecAcmeSolversDns01Route53OutputWithContext(context.Context) IssuerSpecAcmeSolversDns01Route53Output
}

// Use the AWS Route53 API to manage DNS01 challenge records.
type IssuerSpecAcmeSolversDns01Route53Args struct {
	// The AccessKeyID is used for authentication. If not set we fall-back to using env vars, shared credentials file or AWS Instance metadata see: https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/configuring-sdk.html#specifying-credentials
	AccessKeyID pulumi.StringPtrInput `pulumi:"accessKeyID"`
	// If set, the provider will manage only this zone in Route53 and will not do an lookup using the route53:ListHostedZonesByName api call.
	HostedZoneID pulumi.StringPtrInput `pulumi:"hostedZoneID"`
	// Always set the region when using AccessKeyID and SecretAccessKey
	Region pulumi.StringInput `pulumi:"region"`
	// Role is a Role ARN which the Route53 provider will assume using either the explicit credentials AccessKeyID/SecretAccessKey or the inferred credentials from environment variables, shared credentials file or AWS Instance metadata
	Role pulumi.StringPtrInput `pulumi:"role"`
	// The SecretAccessKey is used for authentication. If not set we fall-back to using env vars, shared credentials file or AWS Instance metadata https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/configuring-sdk.html#specifying-credentials
	SecretAccessKeySecretRef IssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefPtrInput `pulumi:"secretAccessKeySecretRef"`
}

func (IssuerSpecAcmeSolversDns01Route53Args) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversDns01Route53)(nil)).Elem()
}

func (i IssuerSpecAcmeSolversDns01Route53Args) ToIssuerSpecAcmeSolversDns01Route53Output() IssuerSpecAcmeSolversDns01Route53Output {
	return i.ToIssuerSpecAcmeSolversDns01Route53OutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversDns01Route53Args) ToIssuerSpecAcmeSolversDns01Route53OutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01Route53Output {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversDns01Route53Output)
}

func (i IssuerSpecAcmeSolversDns01Route53Args) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversDns01Route53] {
	return pulumix.Output[IssuerSpecAcmeSolversDns01Route53]{
		OutputState: i.ToIssuerSpecAcmeSolversDns01Route53OutputWithContext(ctx).OutputState,
	}
}

func (i IssuerSpecAcmeSolversDns01Route53Args) ToIssuerSpecAcmeSolversDns01Route53PtrOutput() IssuerSpecAcmeSolversDns01Route53PtrOutput {
	return i.ToIssuerSpecAcmeSolversDns01Route53PtrOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversDns01Route53Args) ToIssuerSpecAcmeSolversDns01Route53PtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01Route53PtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversDns01Route53Output).ToIssuerSpecAcmeSolversDns01Route53PtrOutputWithContext(ctx)
}

// IssuerSpecAcmeSolversDns01Route53PtrInput is an input type that accepts IssuerSpecAcmeSolversDns01Route53Args, IssuerSpecAcmeSolversDns01Route53Ptr and IssuerSpecAcmeSolversDns01Route53PtrOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversDns01Route53PtrInput` via:
//
//	        IssuerSpecAcmeSolversDns01Route53Args{...}
//
//	or:
//
//	        nil
type IssuerSpecAcmeSolversDns01Route53PtrInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversDns01Route53PtrOutput() IssuerSpecAcmeSolversDns01Route53PtrOutput
	ToIssuerSpecAcmeSolversDns01Route53PtrOutputWithContext(context.Context) IssuerSpecAcmeSolversDns01Route53PtrOutput
}

type issuerSpecAcmeSolversDns01Route53PtrType IssuerSpecAcmeSolversDns01Route53Args

func IssuerSpecAcmeSolversDns01Route53Ptr(v *IssuerSpecAcmeSolversDns01Route53Args) IssuerSpecAcmeSolversDns01Route53PtrInput {
	return (*issuerSpecAcmeSolversDns01Route53PtrType)(v)
}

func (*issuerSpecAcmeSolversDns01Route53PtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecAcmeSolversDns01Route53)(nil)).Elem()
}

func (i *issuerSpecAcmeSolversDns01Route53PtrType) ToIssuerSpecAcmeSolversDns01Route53PtrOutput() IssuerSpecAcmeSolversDns01Route53PtrOutput {
	return i.ToIssuerSpecAcmeSolversDns01Route53PtrOutputWithContext(context.Background())
}

func (i *issuerSpecAcmeSolversDns01Route53PtrType) ToIssuerSpecAcmeSolversDns01Route53PtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01Route53PtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversDns01Route53PtrOutput)
}

func (i *issuerSpecAcmeSolversDns01Route53PtrType) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecAcmeSolversDns01Route53] {
	return pulumix.Output[*IssuerSpecAcmeSolversDns01Route53]{
		OutputState: i.ToIssuerSpecAcmeSolversDns01Route53PtrOutputWithContext(ctx).OutputState,
	}
}

// Use the AWS Route53 API to manage DNS01 challenge records.
type IssuerSpecAcmeSolversDns01Route53Output struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversDns01Route53Output) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversDns01Route53)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversDns01Route53Output) ToIssuerSpecAcmeSolversDns01Route53Output() IssuerSpecAcmeSolversDns01Route53Output {
	return o
}

func (o IssuerSpecAcmeSolversDns01Route53Output) ToIssuerSpecAcmeSolversDns01Route53OutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01Route53Output {
	return o
}

func (o IssuerSpecAcmeSolversDns01Route53Output) ToIssuerSpecAcmeSolversDns01Route53PtrOutput() IssuerSpecAcmeSolversDns01Route53PtrOutput {
	return o.ToIssuerSpecAcmeSolversDns01Route53PtrOutputWithContext(context.Background())
}

func (o IssuerSpecAcmeSolversDns01Route53Output) ToIssuerSpecAcmeSolversDns01Route53PtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01Route53PtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v IssuerSpecAcmeSolversDns01Route53) *IssuerSpecAcmeSolversDns01Route53 {
		return &v
	}).(IssuerSpecAcmeSolversDns01Route53PtrOutput)
}

func (o IssuerSpecAcmeSolversDns01Route53Output) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversDns01Route53] {
	return pulumix.Output[IssuerSpecAcmeSolversDns01Route53]{
		OutputState: o.OutputState,
	}
}

// The AccessKeyID is used for authentication. If not set we fall-back to using env vars, shared credentials file or AWS Instance metadata see: https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/configuring-sdk.html#specifying-credentials
func (o IssuerSpecAcmeSolversDns01Route53Output) AccessKeyID() pulumi.StringPtrOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversDns01Route53) *string { return v.AccessKeyID }).(pulumi.StringPtrOutput)
}

// If set, the provider will manage only this zone in Route53 and will not do an lookup using the route53:ListHostedZonesByName api call.
func (o IssuerSpecAcmeSolversDns01Route53Output) HostedZoneID() pulumi.StringPtrOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversDns01Route53) *string { return v.HostedZoneID }).(pulumi.StringPtrOutput)
}

// Always set the region when using AccessKeyID and SecretAccessKey
func (o IssuerSpecAcmeSolversDns01Route53Output) Region() pulumi.StringOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversDns01Route53) string { return v.Region }).(pulumi.StringOutput)
}

// Role is a Role ARN which the Route53 provider will assume using either the explicit credentials AccessKeyID/SecretAccessKey or the inferred credentials from environment variables, shared credentials file or AWS Instance metadata
func (o IssuerSpecAcmeSolversDns01Route53Output) Role() pulumi.StringPtrOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversDns01Route53) *string { return v.Role }).(pulumi.StringPtrOutput)
}

// The SecretAccessKey is used for authentication. If not set we fall-back to using env vars, shared credentials file or AWS Instance metadata https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/configuring-sdk.html#specifying-credentials
func (o IssuerSpecAcmeSolversDns01Route53Output) SecretAccessKeySecretRef() IssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefPtrOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversDns01Route53) *IssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRef {
		return v.SecretAccessKeySecretRef
	}).(IssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefPtrOutput)
}

type IssuerSpecAcmeSolversDns01Route53PtrOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversDns01Route53PtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecAcmeSolversDns01Route53)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversDns01Route53PtrOutput) ToIssuerSpecAcmeSolversDns01Route53PtrOutput() IssuerSpecAcmeSolversDns01Route53PtrOutput {
	return o
}

func (o IssuerSpecAcmeSolversDns01Route53PtrOutput) ToIssuerSpecAcmeSolversDns01Route53PtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01Route53PtrOutput {
	return o
}

func (o IssuerSpecAcmeSolversDns01Route53PtrOutput) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecAcmeSolversDns01Route53] {
	return pulumix.Output[*IssuerSpecAcmeSolversDns01Route53]{
		OutputState: o.OutputState,
	}
}

func (o IssuerSpecAcmeSolversDns01Route53PtrOutput) Elem() IssuerSpecAcmeSolversDns01Route53Output {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversDns01Route53) IssuerSpecAcmeSolversDns01Route53 {
		if v != nil {
			return *v
		}
		var ret IssuerSpecAcmeSolversDns01Route53
		return ret
	}).(IssuerSpecAcmeSolversDns01Route53Output)
}

// The AccessKeyID is used for authentication. If not set we fall-back to using env vars, shared credentials file or AWS Instance metadata see: https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/configuring-sdk.html#specifying-credentials
func (o IssuerSpecAcmeSolversDns01Route53PtrOutput) AccessKeyID() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversDns01Route53) *string {
		if v == nil {
			return nil
		}
		return v.AccessKeyID
	}).(pulumi.StringPtrOutput)
}

// If set, the provider will manage only this zone in Route53 and will not do an lookup using the route53:ListHostedZonesByName api call.
func (o IssuerSpecAcmeSolversDns01Route53PtrOutput) HostedZoneID() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversDns01Route53) *string {
		if v == nil {
			return nil
		}
		return v.HostedZoneID
	}).(pulumi.StringPtrOutput)
}

// Always set the region when using AccessKeyID and SecretAccessKey
func (o IssuerSpecAcmeSolversDns01Route53PtrOutput) Region() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversDns01Route53) *string {
		if v == nil {
			return nil
		}
		return &v.Region
	}).(pulumi.StringPtrOutput)
}

// Role is a Role ARN which the Route53 provider will assume using either the explicit credentials AccessKeyID/SecretAccessKey or the inferred credentials from environment variables, shared credentials file or AWS Instance metadata
func (o IssuerSpecAcmeSolversDns01Route53PtrOutput) Role() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversDns01Route53) *string {
		if v == nil {
			return nil
		}
		return v.Role
	}).(pulumi.StringPtrOutput)
}

// The SecretAccessKey is used for authentication. If not set we fall-back to using env vars, shared credentials file or AWS Instance metadata https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/configuring-sdk.html#specifying-credentials
func (o IssuerSpecAcmeSolversDns01Route53PtrOutput) SecretAccessKeySecretRef() IssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefPtrOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversDns01Route53) *IssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRef {
		if v == nil {
			return nil
		}
		return v.SecretAccessKeySecretRef
	}).(IssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefPtrOutput)
}

// The SecretAccessKey is used for authentication. If not set we fall-back to using env vars, shared credentials file or AWS Instance metadata https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/configuring-sdk.html#specifying-credentials
type IssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRef struct {
	// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
	Key *string `pulumi:"key"`
	// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
	Name string `pulumi:"name"`
}

// IssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefInput is an input type that accepts IssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefArgs and IssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefInput` via:
//
//	IssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefArgs{...}
type IssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefOutput() IssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefOutput
	ToIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefOutputWithContext(context.Context) IssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefOutput
}

// The SecretAccessKey is used for authentication. If not set we fall-back to using env vars, shared credentials file or AWS Instance metadata https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/configuring-sdk.html#specifying-credentials
type IssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefArgs struct {
	// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
	Key pulumi.StringPtrInput `pulumi:"key"`
	// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
	Name pulumi.StringInput `pulumi:"name"`
}

func (IssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRef)(nil)).Elem()
}

func (i IssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefArgs) ToIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefOutput() IssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefOutput {
	return i.ToIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefArgs) ToIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefOutput)
}

func (i IssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefArgs) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRef] {
	return pulumix.Output[IssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRef]{
		OutputState: i.ToIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefOutputWithContext(ctx).OutputState,
	}
}

func (i IssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefArgs) ToIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefPtrOutput() IssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefPtrOutput {
	return i.ToIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefPtrOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefArgs) ToIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefOutput).ToIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefPtrOutputWithContext(ctx)
}

// IssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefPtrInput is an input type that accepts IssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefArgs, IssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefPtr and IssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefPtrOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefPtrInput` via:
//
//	        IssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefArgs{...}
//
//	or:
//
//	        nil
type IssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefPtrInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefPtrOutput() IssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefPtrOutput
	ToIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefPtrOutputWithContext(context.Context) IssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefPtrOutput
}

type issuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefPtrType IssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefArgs

func IssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefPtr(v *IssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefArgs) IssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefPtrInput {
	return (*issuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefPtrType)(v)
}

func (*issuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRef)(nil)).Elem()
}

func (i *issuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefPtrType) ToIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefPtrOutput() IssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefPtrOutput {
	return i.ToIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefPtrOutputWithContext(context.Background())
}

func (i *issuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefPtrType) ToIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefPtrOutput)
}

func (i *issuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefPtrType) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRef] {
	return pulumix.Output[*IssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRef]{
		OutputState: i.ToIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefPtrOutputWithContext(ctx).OutputState,
	}
}

// The SecretAccessKey is used for authentication. If not set we fall-back to using env vars, shared credentials file or AWS Instance metadata https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/configuring-sdk.html#specifying-credentials
type IssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRef)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefOutput) ToIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefOutput() IssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefOutput {
	return o
}

func (o IssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefOutput) ToIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefOutput {
	return o
}

func (o IssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefOutput) ToIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefPtrOutput() IssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefPtrOutput {
	return o.ToIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefPtrOutputWithContext(context.Background())
}

func (o IssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefOutput) ToIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v IssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRef) *IssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRef {
		return &v
	}).(IssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefPtrOutput)
}

func (o IssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefOutput) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRef] {
	return pulumix.Output[IssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRef]{
		OutputState: o.OutputState,
	}
}

// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
func (o IssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefOutput) Key() pulumi.StringPtrOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRef) *string { return v.Key }).(pulumi.StringPtrOutput)
}

// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
func (o IssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefOutput) Name() pulumi.StringOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRef) string { return v.Name }).(pulumi.StringOutput)
}

type IssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefPtrOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRef)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefPtrOutput) ToIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefPtrOutput() IssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefPtrOutput {
	return o
}

func (o IssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefPtrOutput) ToIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefPtrOutput {
	return o
}

func (o IssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRef] {
	return pulumix.Output[*IssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRef]{
		OutputState: o.OutputState,
	}
}

func (o IssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefPtrOutput) Elem() IssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRef) IssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRef {
		if v != nil {
			return *v
		}
		var ret IssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRef
		return ret
	}).(IssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefOutput)
}

// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
func (o IssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefPtrOutput) Key() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRef) *string {
		if v == nil {
			return nil
		}
		return v.Key
	}).(pulumi.StringPtrOutput)
}

// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
func (o IssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefPtrOutput) Name() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRef) *string {
		if v == nil {
			return nil
		}
		return &v.Name
	}).(pulumi.StringPtrOutput)
}

// Configure an external webhook based DNS01 challenge solver to manage DNS01 challenge records.
type IssuerSpecAcmeSolversDns01Webhook struct {
	// Additional configuration that should be passed to the webhook apiserver when challenges are processed. This can contain arbitrary JSON data. Secret values should not be specified in this stanza. If secret values are needed (e.g. credentials for a DNS service), you should use a SecretKeySelector to reference a Secret resource. For details on the schema of this field, consult the webhook provider implementation's documentation.
	Config map[string]interface{} `pulumi:"config"`
	// The API group name that should be used when POSTing ChallengePayload resources to the webhook apiserver. This should be the same as the GroupName specified in the webhook provider implementation.
	GroupName string `pulumi:"groupName"`
	// The name of the solver to use, as defined in the webhook provider implementation. This will typically be the name of the provider, e.g. 'cloudflare'.
	SolverName string `pulumi:"solverName"`
}

// IssuerSpecAcmeSolversDns01WebhookInput is an input type that accepts IssuerSpecAcmeSolversDns01WebhookArgs and IssuerSpecAcmeSolversDns01WebhookOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversDns01WebhookInput` via:
//
//	IssuerSpecAcmeSolversDns01WebhookArgs{...}
type IssuerSpecAcmeSolversDns01WebhookInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversDns01WebhookOutput() IssuerSpecAcmeSolversDns01WebhookOutput
	ToIssuerSpecAcmeSolversDns01WebhookOutputWithContext(context.Context) IssuerSpecAcmeSolversDns01WebhookOutput
}

// Configure an external webhook based DNS01 challenge solver to manage DNS01 challenge records.
type IssuerSpecAcmeSolversDns01WebhookArgs struct {
	// Additional configuration that should be passed to the webhook apiserver when challenges are processed. This can contain arbitrary JSON data. Secret values should not be specified in this stanza. If secret values are needed (e.g. credentials for a DNS service), you should use a SecretKeySelector to reference a Secret resource. For details on the schema of this field, consult the webhook provider implementation's documentation.
	Config pulumi.MapInput `pulumi:"config"`
	// The API group name that should be used when POSTing ChallengePayload resources to the webhook apiserver. This should be the same as the GroupName specified in the webhook provider implementation.
	GroupName pulumi.StringInput `pulumi:"groupName"`
	// The name of the solver to use, as defined in the webhook provider implementation. This will typically be the name of the provider, e.g. 'cloudflare'.
	SolverName pulumi.StringInput `pulumi:"solverName"`
}

func (IssuerSpecAcmeSolversDns01WebhookArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversDns01Webhook)(nil)).Elem()
}

func (i IssuerSpecAcmeSolversDns01WebhookArgs) ToIssuerSpecAcmeSolversDns01WebhookOutput() IssuerSpecAcmeSolversDns01WebhookOutput {
	return i.ToIssuerSpecAcmeSolversDns01WebhookOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversDns01WebhookArgs) ToIssuerSpecAcmeSolversDns01WebhookOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01WebhookOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversDns01WebhookOutput)
}

func (i IssuerSpecAcmeSolversDns01WebhookArgs) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversDns01Webhook] {
	return pulumix.Output[IssuerSpecAcmeSolversDns01Webhook]{
		OutputState: i.ToIssuerSpecAcmeSolversDns01WebhookOutputWithContext(ctx).OutputState,
	}
}

func (i IssuerSpecAcmeSolversDns01WebhookArgs) ToIssuerSpecAcmeSolversDns01WebhookPtrOutput() IssuerSpecAcmeSolversDns01WebhookPtrOutput {
	return i.ToIssuerSpecAcmeSolversDns01WebhookPtrOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversDns01WebhookArgs) ToIssuerSpecAcmeSolversDns01WebhookPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01WebhookPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversDns01WebhookOutput).ToIssuerSpecAcmeSolversDns01WebhookPtrOutputWithContext(ctx)
}

// IssuerSpecAcmeSolversDns01WebhookPtrInput is an input type that accepts IssuerSpecAcmeSolversDns01WebhookArgs, IssuerSpecAcmeSolversDns01WebhookPtr and IssuerSpecAcmeSolversDns01WebhookPtrOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversDns01WebhookPtrInput` via:
//
//	        IssuerSpecAcmeSolversDns01WebhookArgs{...}
//
//	or:
//
//	        nil
type IssuerSpecAcmeSolversDns01WebhookPtrInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversDns01WebhookPtrOutput() IssuerSpecAcmeSolversDns01WebhookPtrOutput
	ToIssuerSpecAcmeSolversDns01WebhookPtrOutputWithContext(context.Context) IssuerSpecAcmeSolversDns01WebhookPtrOutput
}

type issuerSpecAcmeSolversDns01WebhookPtrType IssuerSpecAcmeSolversDns01WebhookArgs

func IssuerSpecAcmeSolversDns01WebhookPtr(v *IssuerSpecAcmeSolversDns01WebhookArgs) IssuerSpecAcmeSolversDns01WebhookPtrInput {
	return (*issuerSpecAcmeSolversDns01WebhookPtrType)(v)
}

func (*issuerSpecAcmeSolversDns01WebhookPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecAcmeSolversDns01Webhook)(nil)).Elem()
}

func (i *issuerSpecAcmeSolversDns01WebhookPtrType) ToIssuerSpecAcmeSolversDns01WebhookPtrOutput() IssuerSpecAcmeSolversDns01WebhookPtrOutput {
	return i.ToIssuerSpecAcmeSolversDns01WebhookPtrOutputWithContext(context.Background())
}

func (i *issuerSpecAcmeSolversDns01WebhookPtrType) ToIssuerSpecAcmeSolversDns01WebhookPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01WebhookPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversDns01WebhookPtrOutput)
}

func (i *issuerSpecAcmeSolversDns01WebhookPtrType) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecAcmeSolversDns01Webhook] {
	return pulumix.Output[*IssuerSpecAcmeSolversDns01Webhook]{
		OutputState: i.ToIssuerSpecAcmeSolversDns01WebhookPtrOutputWithContext(ctx).OutputState,
	}
}

// Configure an external webhook based DNS01 challenge solver to manage DNS01 challenge records.
type IssuerSpecAcmeSolversDns01WebhookOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversDns01WebhookOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversDns01Webhook)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversDns01WebhookOutput) ToIssuerSpecAcmeSolversDns01WebhookOutput() IssuerSpecAcmeSolversDns01WebhookOutput {
	return o
}

func (o IssuerSpecAcmeSolversDns01WebhookOutput) ToIssuerSpecAcmeSolversDns01WebhookOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01WebhookOutput {
	return o
}

func (o IssuerSpecAcmeSolversDns01WebhookOutput) ToIssuerSpecAcmeSolversDns01WebhookPtrOutput() IssuerSpecAcmeSolversDns01WebhookPtrOutput {
	return o.ToIssuerSpecAcmeSolversDns01WebhookPtrOutputWithContext(context.Background())
}

func (o IssuerSpecAcmeSolversDns01WebhookOutput) ToIssuerSpecAcmeSolversDns01WebhookPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01WebhookPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v IssuerSpecAcmeSolversDns01Webhook) *IssuerSpecAcmeSolversDns01Webhook {
		return &v
	}).(IssuerSpecAcmeSolversDns01WebhookPtrOutput)
}

func (o IssuerSpecAcmeSolversDns01WebhookOutput) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversDns01Webhook] {
	return pulumix.Output[IssuerSpecAcmeSolversDns01Webhook]{
		OutputState: o.OutputState,
	}
}

// Additional configuration that should be passed to the webhook apiserver when challenges are processed. This can contain arbitrary JSON data. Secret values should not be specified in this stanza. If secret values are needed (e.g. credentials for a DNS service), you should use a SecretKeySelector to reference a Secret resource. For details on the schema of this field, consult the webhook provider implementation's documentation.
func (o IssuerSpecAcmeSolversDns01WebhookOutput) Config() pulumi.MapOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversDns01Webhook) map[string]interface{} { return v.Config }).(pulumi.MapOutput)
}

// The API group name that should be used when POSTing ChallengePayload resources to the webhook apiserver. This should be the same as the GroupName specified in the webhook provider implementation.
func (o IssuerSpecAcmeSolversDns01WebhookOutput) GroupName() pulumi.StringOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversDns01Webhook) string { return v.GroupName }).(pulumi.StringOutput)
}

// The name of the solver to use, as defined in the webhook provider implementation. This will typically be the name of the provider, e.g. 'cloudflare'.
func (o IssuerSpecAcmeSolversDns01WebhookOutput) SolverName() pulumi.StringOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversDns01Webhook) string { return v.SolverName }).(pulumi.StringOutput)
}

type IssuerSpecAcmeSolversDns01WebhookPtrOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversDns01WebhookPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecAcmeSolversDns01Webhook)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversDns01WebhookPtrOutput) ToIssuerSpecAcmeSolversDns01WebhookPtrOutput() IssuerSpecAcmeSolversDns01WebhookPtrOutput {
	return o
}

func (o IssuerSpecAcmeSolversDns01WebhookPtrOutput) ToIssuerSpecAcmeSolversDns01WebhookPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversDns01WebhookPtrOutput {
	return o
}

func (o IssuerSpecAcmeSolversDns01WebhookPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecAcmeSolversDns01Webhook] {
	return pulumix.Output[*IssuerSpecAcmeSolversDns01Webhook]{
		OutputState: o.OutputState,
	}
}

func (o IssuerSpecAcmeSolversDns01WebhookPtrOutput) Elem() IssuerSpecAcmeSolversDns01WebhookOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversDns01Webhook) IssuerSpecAcmeSolversDns01Webhook {
		if v != nil {
			return *v
		}
		var ret IssuerSpecAcmeSolversDns01Webhook
		return ret
	}).(IssuerSpecAcmeSolversDns01WebhookOutput)
}

// Additional configuration that should be passed to the webhook apiserver when challenges are processed. This can contain arbitrary JSON data. Secret values should not be specified in this stanza. If secret values are needed (e.g. credentials for a DNS service), you should use a SecretKeySelector to reference a Secret resource. For details on the schema of this field, consult the webhook provider implementation's documentation.
func (o IssuerSpecAcmeSolversDns01WebhookPtrOutput) Config() pulumi.MapOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversDns01Webhook) map[string]interface{} {
		if v == nil {
			return nil
		}
		return v.Config
	}).(pulumi.MapOutput)
}

// The API group name that should be used when POSTing ChallengePayload resources to the webhook apiserver. This should be the same as the GroupName specified in the webhook provider implementation.
func (o IssuerSpecAcmeSolversDns01WebhookPtrOutput) GroupName() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversDns01Webhook) *string {
		if v == nil {
			return nil
		}
		return &v.GroupName
	}).(pulumi.StringPtrOutput)
}

// The name of the solver to use, as defined in the webhook provider implementation. This will typically be the name of the provider, e.g. 'cloudflare'.
func (o IssuerSpecAcmeSolversDns01WebhookPtrOutput) SolverName() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversDns01Webhook) *string {
		if v == nil {
			return nil
		}
		return &v.SolverName
	}).(pulumi.StringPtrOutput)
}

// Configures cert-manager to attempt to complete authorizations by performing the HTTP01 challenge flow. It is not possible to obtain certificates for wildcard domain names (e.g. `*.example.com`) using the HTTP01 challenge mechanism.
type IssuerSpecAcmeSolversHttp01 struct {
	// The Gateway API is a sig-network community API that models service networking in Kubernetes (https://gateway-api.sigs.k8s.io/). The Gateway solver will create HTTPRoutes with the specified labels in the same namespace as the challenge. This solver is experimental, and fields / behaviour may change in the future.
	GatewayHTTPRoute *IssuerSpecAcmeSolversHttp01GatewayHTTPRoute `pulumi:"gatewayHTTPRoute"`
	// The ingress based HTTP01 challenge solver will solve challenges by creating or modifying Ingress resources in order to route requests for '/.well-known/acme-challenge/XYZ' to 'challenge solver' pods that are provisioned by cert-manager for each Challenge to be completed.
	Ingress *IssuerSpecAcmeSolversHttp01Ingress `pulumi:"ingress"`
}

// IssuerSpecAcmeSolversHttp01Input is an input type that accepts IssuerSpecAcmeSolversHttp01Args and IssuerSpecAcmeSolversHttp01Output values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversHttp01Input` via:
//
//	IssuerSpecAcmeSolversHttp01Args{...}
type IssuerSpecAcmeSolversHttp01Input interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversHttp01Output() IssuerSpecAcmeSolversHttp01Output
	ToIssuerSpecAcmeSolversHttp01OutputWithContext(context.Context) IssuerSpecAcmeSolversHttp01Output
}

// Configures cert-manager to attempt to complete authorizations by performing the HTTP01 challenge flow. It is not possible to obtain certificates for wildcard domain names (e.g. `*.example.com`) using the HTTP01 challenge mechanism.
type IssuerSpecAcmeSolversHttp01Args struct {
	// The Gateway API is a sig-network community API that models service networking in Kubernetes (https://gateway-api.sigs.k8s.io/). The Gateway solver will create HTTPRoutes with the specified labels in the same namespace as the challenge. This solver is experimental, and fields / behaviour may change in the future.
	GatewayHTTPRoute IssuerSpecAcmeSolversHttp01GatewayHTTPRoutePtrInput `pulumi:"gatewayHTTPRoute"`
	// The ingress based HTTP01 challenge solver will solve challenges by creating or modifying Ingress resources in order to route requests for '/.well-known/acme-challenge/XYZ' to 'challenge solver' pods that are provisioned by cert-manager for each Challenge to be completed.
	Ingress IssuerSpecAcmeSolversHttp01IngressPtrInput `pulumi:"ingress"`
}

func (IssuerSpecAcmeSolversHttp01Args) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversHttp01)(nil)).Elem()
}

func (i IssuerSpecAcmeSolversHttp01Args) ToIssuerSpecAcmeSolversHttp01Output() IssuerSpecAcmeSolversHttp01Output {
	return i.ToIssuerSpecAcmeSolversHttp01OutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversHttp01Args) ToIssuerSpecAcmeSolversHttp01OutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01Output {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversHttp01Output)
}

func (i IssuerSpecAcmeSolversHttp01Args) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversHttp01] {
	return pulumix.Output[IssuerSpecAcmeSolversHttp01]{
		OutputState: i.ToIssuerSpecAcmeSolversHttp01OutputWithContext(ctx).OutputState,
	}
}

func (i IssuerSpecAcmeSolversHttp01Args) ToIssuerSpecAcmeSolversHttp01PtrOutput() IssuerSpecAcmeSolversHttp01PtrOutput {
	return i.ToIssuerSpecAcmeSolversHttp01PtrOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversHttp01Args) ToIssuerSpecAcmeSolversHttp01PtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01PtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversHttp01Output).ToIssuerSpecAcmeSolversHttp01PtrOutputWithContext(ctx)
}

// IssuerSpecAcmeSolversHttp01PtrInput is an input type that accepts IssuerSpecAcmeSolversHttp01Args, IssuerSpecAcmeSolversHttp01Ptr and IssuerSpecAcmeSolversHttp01PtrOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversHttp01PtrInput` via:
//
//	        IssuerSpecAcmeSolversHttp01Args{...}
//
//	or:
//
//	        nil
type IssuerSpecAcmeSolversHttp01PtrInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversHttp01PtrOutput() IssuerSpecAcmeSolversHttp01PtrOutput
	ToIssuerSpecAcmeSolversHttp01PtrOutputWithContext(context.Context) IssuerSpecAcmeSolversHttp01PtrOutput
}

type issuerSpecAcmeSolversHttp01PtrType IssuerSpecAcmeSolversHttp01Args

func IssuerSpecAcmeSolversHttp01Ptr(v *IssuerSpecAcmeSolversHttp01Args) IssuerSpecAcmeSolversHttp01PtrInput {
	return (*issuerSpecAcmeSolversHttp01PtrType)(v)
}

func (*issuerSpecAcmeSolversHttp01PtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecAcmeSolversHttp01)(nil)).Elem()
}

func (i *issuerSpecAcmeSolversHttp01PtrType) ToIssuerSpecAcmeSolversHttp01PtrOutput() IssuerSpecAcmeSolversHttp01PtrOutput {
	return i.ToIssuerSpecAcmeSolversHttp01PtrOutputWithContext(context.Background())
}

func (i *issuerSpecAcmeSolversHttp01PtrType) ToIssuerSpecAcmeSolversHttp01PtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01PtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversHttp01PtrOutput)
}

func (i *issuerSpecAcmeSolversHttp01PtrType) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecAcmeSolversHttp01] {
	return pulumix.Output[*IssuerSpecAcmeSolversHttp01]{
		OutputState: i.ToIssuerSpecAcmeSolversHttp01PtrOutputWithContext(ctx).OutputState,
	}
}

// Configures cert-manager to attempt to complete authorizations by performing the HTTP01 challenge flow. It is not possible to obtain certificates for wildcard domain names (e.g. `*.example.com`) using the HTTP01 challenge mechanism.
type IssuerSpecAcmeSolversHttp01Output struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversHttp01Output) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversHttp01)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversHttp01Output) ToIssuerSpecAcmeSolversHttp01Output() IssuerSpecAcmeSolversHttp01Output {
	return o
}

func (o IssuerSpecAcmeSolversHttp01Output) ToIssuerSpecAcmeSolversHttp01OutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01Output {
	return o
}

func (o IssuerSpecAcmeSolversHttp01Output) ToIssuerSpecAcmeSolversHttp01PtrOutput() IssuerSpecAcmeSolversHttp01PtrOutput {
	return o.ToIssuerSpecAcmeSolversHttp01PtrOutputWithContext(context.Background())
}

func (o IssuerSpecAcmeSolversHttp01Output) ToIssuerSpecAcmeSolversHttp01PtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01PtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v IssuerSpecAcmeSolversHttp01) *IssuerSpecAcmeSolversHttp01 {
		return &v
	}).(IssuerSpecAcmeSolversHttp01PtrOutput)
}

func (o IssuerSpecAcmeSolversHttp01Output) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversHttp01] {
	return pulumix.Output[IssuerSpecAcmeSolversHttp01]{
		OutputState: o.OutputState,
	}
}

// The Gateway API is a sig-network community API that models service networking in Kubernetes (https://gateway-api.sigs.k8s.io/). The Gateway solver will create HTTPRoutes with the specified labels in the same namespace as the challenge. This solver is experimental, and fields / behaviour may change in the future.
func (o IssuerSpecAcmeSolversHttp01Output) GatewayHTTPRoute() IssuerSpecAcmeSolversHttp01GatewayHTTPRoutePtrOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversHttp01) *IssuerSpecAcmeSolversHttp01GatewayHTTPRoute {
		return v.GatewayHTTPRoute
	}).(IssuerSpecAcmeSolversHttp01GatewayHTTPRoutePtrOutput)
}

// The ingress based HTTP01 challenge solver will solve challenges by creating or modifying Ingress resources in order to route requests for '/.well-known/acme-challenge/XYZ' to 'challenge solver' pods that are provisioned by cert-manager for each Challenge to be completed.
func (o IssuerSpecAcmeSolversHttp01Output) Ingress() IssuerSpecAcmeSolversHttp01IngressPtrOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversHttp01) *IssuerSpecAcmeSolversHttp01Ingress { return v.Ingress }).(IssuerSpecAcmeSolversHttp01IngressPtrOutput)
}

type IssuerSpecAcmeSolversHttp01PtrOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversHttp01PtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecAcmeSolversHttp01)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversHttp01PtrOutput) ToIssuerSpecAcmeSolversHttp01PtrOutput() IssuerSpecAcmeSolversHttp01PtrOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01PtrOutput) ToIssuerSpecAcmeSolversHttp01PtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01PtrOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01PtrOutput) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecAcmeSolversHttp01] {
	return pulumix.Output[*IssuerSpecAcmeSolversHttp01]{
		OutputState: o.OutputState,
	}
}

func (o IssuerSpecAcmeSolversHttp01PtrOutput) Elem() IssuerSpecAcmeSolversHttp01Output {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversHttp01) IssuerSpecAcmeSolversHttp01 {
		if v != nil {
			return *v
		}
		var ret IssuerSpecAcmeSolversHttp01
		return ret
	}).(IssuerSpecAcmeSolversHttp01Output)
}

// The Gateway API is a sig-network community API that models service networking in Kubernetes (https://gateway-api.sigs.k8s.io/). The Gateway solver will create HTTPRoutes with the specified labels in the same namespace as the challenge. This solver is experimental, and fields / behaviour may change in the future.
func (o IssuerSpecAcmeSolversHttp01PtrOutput) GatewayHTTPRoute() IssuerSpecAcmeSolversHttp01GatewayHTTPRoutePtrOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversHttp01) *IssuerSpecAcmeSolversHttp01GatewayHTTPRoute {
		if v == nil {
			return nil
		}
		return v.GatewayHTTPRoute
	}).(IssuerSpecAcmeSolversHttp01GatewayHTTPRoutePtrOutput)
}

// The ingress based HTTP01 challenge solver will solve challenges by creating or modifying Ingress resources in order to route requests for '/.well-known/acme-challenge/XYZ' to 'challenge solver' pods that are provisioned by cert-manager for each Challenge to be completed.
func (o IssuerSpecAcmeSolversHttp01PtrOutput) Ingress() IssuerSpecAcmeSolversHttp01IngressPtrOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversHttp01) *IssuerSpecAcmeSolversHttp01Ingress {
		if v == nil {
			return nil
		}
		return v.Ingress
	}).(IssuerSpecAcmeSolversHttp01IngressPtrOutput)
}

// The Gateway API is a sig-network community API that models service networking in Kubernetes (https://gateway-api.sigs.k8s.io/). The Gateway solver will create HTTPRoutes with the specified labels in the same namespace as the challenge. This solver is experimental, and fields / behaviour may change in the future.
type IssuerSpecAcmeSolversHttp01GatewayHTTPRoute struct {
	// The labels that cert-manager will use when creating the temporary HTTPRoute needed for solving the HTTP-01 challenge. These labels must match the label selector of at least one Gateway.
	Labels map[string]string `pulumi:"labels"`
	// Optional service type for Kubernetes solver service. Supported values are NodePort or ClusterIP. If unset, defaults to NodePort.
	ServiceType *string `pulumi:"serviceType"`
}

// IssuerSpecAcmeSolversHttp01GatewayHTTPRouteInput is an input type that accepts IssuerSpecAcmeSolversHttp01GatewayHTTPRouteArgs and IssuerSpecAcmeSolversHttp01GatewayHTTPRouteOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversHttp01GatewayHTTPRouteInput` via:
//
//	IssuerSpecAcmeSolversHttp01GatewayHTTPRouteArgs{...}
type IssuerSpecAcmeSolversHttp01GatewayHTTPRouteInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversHttp01GatewayHTTPRouteOutput() IssuerSpecAcmeSolversHttp01GatewayHTTPRouteOutput
	ToIssuerSpecAcmeSolversHttp01GatewayHTTPRouteOutputWithContext(context.Context) IssuerSpecAcmeSolversHttp01GatewayHTTPRouteOutput
}

// The Gateway API is a sig-network community API that models service networking in Kubernetes (https://gateway-api.sigs.k8s.io/). The Gateway solver will create HTTPRoutes with the specified labels in the same namespace as the challenge. This solver is experimental, and fields / behaviour may change in the future.
type IssuerSpecAcmeSolversHttp01GatewayHTTPRouteArgs struct {
	// The labels that cert-manager will use when creating the temporary HTTPRoute needed for solving the HTTP-01 challenge. These labels must match the label selector of at least one Gateway.
	Labels pulumi.StringMapInput `pulumi:"labels"`
	// Optional service type for Kubernetes solver service. Supported values are NodePort or ClusterIP. If unset, defaults to NodePort.
	ServiceType pulumi.StringPtrInput `pulumi:"serviceType"`
}

func (IssuerSpecAcmeSolversHttp01GatewayHTTPRouteArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversHttp01GatewayHTTPRoute)(nil)).Elem()
}

func (i IssuerSpecAcmeSolversHttp01GatewayHTTPRouteArgs) ToIssuerSpecAcmeSolversHttp01GatewayHTTPRouteOutput() IssuerSpecAcmeSolversHttp01GatewayHTTPRouteOutput {
	return i.ToIssuerSpecAcmeSolversHttp01GatewayHTTPRouteOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversHttp01GatewayHTTPRouteArgs) ToIssuerSpecAcmeSolversHttp01GatewayHTTPRouteOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01GatewayHTTPRouteOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversHttp01GatewayHTTPRouteOutput)
}

func (i IssuerSpecAcmeSolversHttp01GatewayHTTPRouteArgs) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversHttp01GatewayHTTPRoute] {
	return pulumix.Output[IssuerSpecAcmeSolversHttp01GatewayHTTPRoute]{
		OutputState: i.ToIssuerSpecAcmeSolversHttp01GatewayHTTPRouteOutputWithContext(ctx).OutputState,
	}
}

func (i IssuerSpecAcmeSolversHttp01GatewayHTTPRouteArgs) ToIssuerSpecAcmeSolversHttp01GatewayHTTPRoutePtrOutput() IssuerSpecAcmeSolversHttp01GatewayHTTPRoutePtrOutput {
	return i.ToIssuerSpecAcmeSolversHttp01GatewayHTTPRoutePtrOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversHttp01GatewayHTTPRouteArgs) ToIssuerSpecAcmeSolversHttp01GatewayHTTPRoutePtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01GatewayHTTPRoutePtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversHttp01GatewayHTTPRouteOutput).ToIssuerSpecAcmeSolversHttp01GatewayHTTPRoutePtrOutputWithContext(ctx)
}

// IssuerSpecAcmeSolversHttp01GatewayHTTPRoutePtrInput is an input type that accepts IssuerSpecAcmeSolversHttp01GatewayHTTPRouteArgs, IssuerSpecAcmeSolversHttp01GatewayHTTPRoutePtr and IssuerSpecAcmeSolversHttp01GatewayHTTPRoutePtrOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversHttp01GatewayHTTPRoutePtrInput` via:
//
//	        IssuerSpecAcmeSolversHttp01GatewayHTTPRouteArgs{...}
//
//	or:
//
//	        nil
type IssuerSpecAcmeSolversHttp01GatewayHTTPRoutePtrInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversHttp01GatewayHTTPRoutePtrOutput() IssuerSpecAcmeSolversHttp01GatewayHTTPRoutePtrOutput
	ToIssuerSpecAcmeSolversHttp01GatewayHTTPRoutePtrOutputWithContext(context.Context) IssuerSpecAcmeSolversHttp01GatewayHTTPRoutePtrOutput
}

type issuerSpecAcmeSolversHttp01GatewayHTTPRoutePtrType IssuerSpecAcmeSolversHttp01GatewayHTTPRouteArgs

func IssuerSpecAcmeSolversHttp01GatewayHTTPRoutePtr(v *IssuerSpecAcmeSolversHttp01GatewayHTTPRouteArgs) IssuerSpecAcmeSolversHttp01GatewayHTTPRoutePtrInput {
	return (*issuerSpecAcmeSolversHttp01GatewayHTTPRoutePtrType)(v)
}

func (*issuerSpecAcmeSolversHttp01GatewayHTTPRoutePtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecAcmeSolversHttp01GatewayHTTPRoute)(nil)).Elem()
}

func (i *issuerSpecAcmeSolversHttp01GatewayHTTPRoutePtrType) ToIssuerSpecAcmeSolversHttp01GatewayHTTPRoutePtrOutput() IssuerSpecAcmeSolversHttp01GatewayHTTPRoutePtrOutput {
	return i.ToIssuerSpecAcmeSolversHttp01GatewayHTTPRoutePtrOutputWithContext(context.Background())
}

func (i *issuerSpecAcmeSolversHttp01GatewayHTTPRoutePtrType) ToIssuerSpecAcmeSolversHttp01GatewayHTTPRoutePtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01GatewayHTTPRoutePtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversHttp01GatewayHTTPRoutePtrOutput)
}

func (i *issuerSpecAcmeSolversHttp01GatewayHTTPRoutePtrType) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecAcmeSolversHttp01GatewayHTTPRoute] {
	return pulumix.Output[*IssuerSpecAcmeSolversHttp01GatewayHTTPRoute]{
		OutputState: i.ToIssuerSpecAcmeSolversHttp01GatewayHTTPRoutePtrOutputWithContext(ctx).OutputState,
	}
}

// The Gateway API is a sig-network community API that models service networking in Kubernetes (https://gateway-api.sigs.k8s.io/). The Gateway solver will create HTTPRoutes with the specified labels in the same namespace as the challenge. This solver is experimental, and fields / behaviour may change in the future.
type IssuerSpecAcmeSolversHttp01GatewayHTTPRouteOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversHttp01GatewayHTTPRouteOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversHttp01GatewayHTTPRoute)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversHttp01GatewayHTTPRouteOutput) ToIssuerSpecAcmeSolversHttp01GatewayHTTPRouteOutput() IssuerSpecAcmeSolversHttp01GatewayHTTPRouteOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01GatewayHTTPRouteOutput) ToIssuerSpecAcmeSolversHttp01GatewayHTTPRouteOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01GatewayHTTPRouteOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01GatewayHTTPRouteOutput) ToIssuerSpecAcmeSolversHttp01GatewayHTTPRoutePtrOutput() IssuerSpecAcmeSolversHttp01GatewayHTTPRoutePtrOutput {
	return o.ToIssuerSpecAcmeSolversHttp01GatewayHTTPRoutePtrOutputWithContext(context.Background())
}

func (o IssuerSpecAcmeSolversHttp01GatewayHTTPRouteOutput) ToIssuerSpecAcmeSolversHttp01GatewayHTTPRoutePtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01GatewayHTTPRoutePtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v IssuerSpecAcmeSolversHttp01GatewayHTTPRoute) *IssuerSpecAcmeSolversHttp01GatewayHTTPRoute {
		return &v
	}).(IssuerSpecAcmeSolversHttp01GatewayHTTPRoutePtrOutput)
}

func (o IssuerSpecAcmeSolversHttp01GatewayHTTPRouteOutput) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversHttp01GatewayHTTPRoute] {
	return pulumix.Output[IssuerSpecAcmeSolversHttp01GatewayHTTPRoute]{
		OutputState: o.OutputState,
	}
}

// The labels that cert-manager will use when creating the temporary HTTPRoute needed for solving the HTTP-01 challenge. These labels must match the label selector of at least one Gateway.
func (o IssuerSpecAcmeSolversHttp01GatewayHTTPRouteOutput) Labels() pulumi.StringMapOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversHttp01GatewayHTTPRoute) map[string]string { return v.Labels }).(pulumi.StringMapOutput)
}

// Optional service type for Kubernetes solver service. Supported values are NodePort or ClusterIP. If unset, defaults to NodePort.
func (o IssuerSpecAcmeSolversHttp01GatewayHTTPRouteOutput) ServiceType() pulumi.StringPtrOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversHttp01GatewayHTTPRoute) *string { return v.ServiceType }).(pulumi.StringPtrOutput)
}

type IssuerSpecAcmeSolversHttp01GatewayHTTPRoutePtrOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversHttp01GatewayHTTPRoutePtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecAcmeSolversHttp01GatewayHTTPRoute)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversHttp01GatewayHTTPRoutePtrOutput) ToIssuerSpecAcmeSolversHttp01GatewayHTTPRoutePtrOutput() IssuerSpecAcmeSolversHttp01GatewayHTTPRoutePtrOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01GatewayHTTPRoutePtrOutput) ToIssuerSpecAcmeSolversHttp01GatewayHTTPRoutePtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01GatewayHTTPRoutePtrOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01GatewayHTTPRoutePtrOutput) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecAcmeSolversHttp01GatewayHTTPRoute] {
	return pulumix.Output[*IssuerSpecAcmeSolversHttp01GatewayHTTPRoute]{
		OutputState: o.OutputState,
	}
}

func (o IssuerSpecAcmeSolversHttp01GatewayHTTPRoutePtrOutput) Elem() IssuerSpecAcmeSolversHttp01GatewayHTTPRouteOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversHttp01GatewayHTTPRoute) IssuerSpecAcmeSolversHttp01GatewayHTTPRoute {
		if v != nil {
			return *v
		}
		var ret IssuerSpecAcmeSolversHttp01GatewayHTTPRoute
		return ret
	}).(IssuerSpecAcmeSolversHttp01GatewayHTTPRouteOutput)
}

// The labels that cert-manager will use when creating the temporary HTTPRoute needed for solving the HTTP-01 challenge. These labels must match the label selector of at least one Gateway.
func (o IssuerSpecAcmeSolversHttp01GatewayHTTPRoutePtrOutput) Labels() pulumi.StringMapOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversHttp01GatewayHTTPRoute) map[string]string {
		if v == nil {
			return nil
		}
		return v.Labels
	}).(pulumi.StringMapOutput)
}

// Optional service type for Kubernetes solver service. Supported values are NodePort or ClusterIP. If unset, defaults to NodePort.
func (o IssuerSpecAcmeSolversHttp01GatewayHTTPRoutePtrOutput) ServiceType() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversHttp01GatewayHTTPRoute) *string {
		if v == nil {
			return nil
		}
		return v.ServiceType
	}).(pulumi.StringPtrOutput)
}

// The labels that cert-manager will use when creating the temporary HTTPRoute needed for solving the HTTP-01 challenge. These labels must match the label selector of at least one Gateway.
type IssuerSpecAcmeSolversHttp01GatewayHTTPRouteLabels struct {
}

// The ingress based HTTP01 challenge solver will solve challenges by creating or modifying Ingress resources in order to route requests for '/.well-known/acme-challenge/XYZ' to 'challenge solver' pods that are provisioned by cert-manager for each Challenge to be completed.
type IssuerSpecAcmeSolversHttp01Ingress struct {
	// The ingress class to use when creating Ingress resources to solve ACME challenges that use this challenge solver. Only one of 'class' or 'name' may be specified.
	Class *string `pulumi:"class"`
	// Optional ingress template used to configure the ACME challenge solver ingress used for HTTP01 challenges.
	IngressTemplate *IssuerSpecAcmeSolversHttp01IngressIngressTemplate `pulumi:"ingressTemplate"`
	// The name of the ingress resource that should have ACME challenge solving routes inserted into it in order to solve HTTP01 challenges. This is typically used in conjunction with ingress controllers like ingress-gce, which maintains a 1:1 mapping between external IPs and ingress resources.
	Name *string `pulumi:"name"`
	// Optional pod template used to configure the ACME challenge solver pods used for HTTP01 challenges
	PodTemplate *IssuerSpecAcmeSolversHttp01IngressPodTemplate `pulumi:"podTemplate"`
	// Optional service type for Kubernetes solver service. Supported values are NodePort or ClusterIP. If unset, defaults to NodePort.
	ServiceType *string `pulumi:"serviceType"`
}

// IssuerSpecAcmeSolversHttp01IngressInput is an input type that accepts IssuerSpecAcmeSolversHttp01IngressArgs and IssuerSpecAcmeSolversHttp01IngressOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversHttp01IngressInput` via:
//
//	IssuerSpecAcmeSolversHttp01IngressArgs{...}
type IssuerSpecAcmeSolversHttp01IngressInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversHttp01IngressOutput() IssuerSpecAcmeSolversHttp01IngressOutput
	ToIssuerSpecAcmeSolversHttp01IngressOutputWithContext(context.Context) IssuerSpecAcmeSolversHttp01IngressOutput
}

// The ingress based HTTP01 challenge solver will solve challenges by creating or modifying Ingress resources in order to route requests for '/.well-known/acme-challenge/XYZ' to 'challenge solver' pods that are provisioned by cert-manager for each Challenge to be completed.
type IssuerSpecAcmeSolversHttp01IngressArgs struct {
	// The ingress class to use when creating Ingress resources to solve ACME challenges that use this challenge solver. Only one of 'class' or 'name' may be specified.
	Class pulumi.StringPtrInput `pulumi:"class"`
	// Optional ingress template used to configure the ACME challenge solver ingress used for HTTP01 challenges.
	IngressTemplate IssuerSpecAcmeSolversHttp01IngressIngressTemplatePtrInput `pulumi:"ingressTemplate"`
	// The name of the ingress resource that should have ACME challenge solving routes inserted into it in order to solve HTTP01 challenges. This is typically used in conjunction with ingress controllers like ingress-gce, which maintains a 1:1 mapping between external IPs and ingress resources.
	Name pulumi.StringPtrInput `pulumi:"name"`
	// Optional pod template used to configure the ACME challenge solver pods used for HTTP01 challenges
	PodTemplate IssuerSpecAcmeSolversHttp01IngressPodTemplatePtrInput `pulumi:"podTemplate"`
	// Optional service type for Kubernetes solver service. Supported values are NodePort or ClusterIP. If unset, defaults to NodePort.
	ServiceType pulumi.StringPtrInput `pulumi:"serviceType"`
}

func (IssuerSpecAcmeSolversHttp01IngressArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversHttp01Ingress)(nil)).Elem()
}

func (i IssuerSpecAcmeSolversHttp01IngressArgs) ToIssuerSpecAcmeSolversHttp01IngressOutput() IssuerSpecAcmeSolversHttp01IngressOutput {
	return i.ToIssuerSpecAcmeSolversHttp01IngressOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversHttp01IngressArgs) ToIssuerSpecAcmeSolversHttp01IngressOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversHttp01IngressOutput)
}

func (i IssuerSpecAcmeSolversHttp01IngressArgs) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversHttp01Ingress] {
	return pulumix.Output[IssuerSpecAcmeSolversHttp01Ingress]{
		OutputState: i.ToIssuerSpecAcmeSolversHttp01IngressOutputWithContext(ctx).OutputState,
	}
}

func (i IssuerSpecAcmeSolversHttp01IngressArgs) ToIssuerSpecAcmeSolversHttp01IngressPtrOutput() IssuerSpecAcmeSolversHttp01IngressPtrOutput {
	return i.ToIssuerSpecAcmeSolversHttp01IngressPtrOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversHttp01IngressArgs) ToIssuerSpecAcmeSolversHttp01IngressPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversHttp01IngressOutput).ToIssuerSpecAcmeSolversHttp01IngressPtrOutputWithContext(ctx)
}

// IssuerSpecAcmeSolversHttp01IngressPtrInput is an input type that accepts IssuerSpecAcmeSolversHttp01IngressArgs, IssuerSpecAcmeSolversHttp01IngressPtr and IssuerSpecAcmeSolversHttp01IngressPtrOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversHttp01IngressPtrInput` via:
//
//	        IssuerSpecAcmeSolversHttp01IngressArgs{...}
//
//	or:
//
//	        nil
type IssuerSpecAcmeSolversHttp01IngressPtrInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversHttp01IngressPtrOutput() IssuerSpecAcmeSolversHttp01IngressPtrOutput
	ToIssuerSpecAcmeSolversHttp01IngressPtrOutputWithContext(context.Context) IssuerSpecAcmeSolversHttp01IngressPtrOutput
}

type issuerSpecAcmeSolversHttp01IngressPtrType IssuerSpecAcmeSolversHttp01IngressArgs

func IssuerSpecAcmeSolversHttp01IngressPtr(v *IssuerSpecAcmeSolversHttp01IngressArgs) IssuerSpecAcmeSolversHttp01IngressPtrInput {
	return (*issuerSpecAcmeSolversHttp01IngressPtrType)(v)
}

func (*issuerSpecAcmeSolversHttp01IngressPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecAcmeSolversHttp01Ingress)(nil)).Elem()
}

func (i *issuerSpecAcmeSolversHttp01IngressPtrType) ToIssuerSpecAcmeSolversHttp01IngressPtrOutput() IssuerSpecAcmeSolversHttp01IngressPtrOutput {
	return i.ToIssuerSpecAcmeSolversHttp01IngressPtrOutputWithContext(context.Background())
}

func (i *issuerSpecAcmeSolversHttp01IngressPtrType) ToIssuerSpecAcmeSolversHttp01IngressPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversHttp01IngressPtrOutput)
}

func (i *issuerSpecAcmeSolversHttp01IngressPtrType) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecAcmeSolversHttp01Ingress] {
	return pulumix.Output[*IssuerSpecAcmeSolversHttp01Ingress]{
		OutputState: i.ToIssuerSpecAcmeSolversHttp01IngressPtrOutputWithContext(ctx).OutputState,
	}
}

// The ingress based HTTP01 challenge solver will solve challenges by creating or modifying Ingress resources in order to route requests for '/.well-known/acme-challenge/XYZ' to 'challenge solver' pods that are provisioned by cert-manager for each Challenge to be completed.
type IssuerSpecAcmeSolversHttp01IngressOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversHttp01IngressOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversHttp01Ingress)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversHttp01IngressOutput) ToIssuerSpecAcmeSolversHttp01IngressOutput() IssuerSpecAcmeSolversHttp01IngressOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressOutput) ToIssuerSpecAcmeSolversHttp01IngressOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressOutput) ToIssuerSpecAcmeSolversHttp01IngressPtrOutput() IssuerSpecAcmeSolversHttp01IngressPtrOutput {
	return o.ToIssuerSpecAcmeSolversHttp01IngressPtrOutputWithContext(context.Background())
}

func (o IssuerSpecAcmeSolversHttp01IngressOutput) ToIssuerSpecAcmeSolversHttp01IngressPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v IssuerSpecAcmeSolversHttp01Ingress) *IssuerSpecAcmeSolversHttp01Ingress {
		return &v
	}).(IssuerSpecAcmeSolversHttp01IngressPtrOutput)
}

func (o IssuerSpecAcmeSolversHttp01IngressOutput) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversHttp01Ingress] {
	return pulumix.Output[IssuerSpecAcmeSolversHttp01Ingress]{
		OutputState: o.OutputState,
	}
}

// The ingress class to use when creating Ingress resources to solve ACME challenges that use this challenge solver. Only one of 'class' or 'name' may be specified.
func (o IssuerSpecAcmeSolversHttp01IngressOutput) Class() pulumi.StringPtrOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversHttp01Ingress) *string { return v.Class }).(pulumi.StringPtrOutput)
}

// Optional ingress template used to configure the ACME challenge solver ingress used for HTTP01 challenges.
func (o IssuerSpecAcmeSolversHttp01IngressOutput) IngressTemplate() IssuerSpecAcmeSolversHttp01IngressIngressTemplatePtrOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversHttp01Ingress) *IssuerSpecAcmeSolversHttp01IngressIngressTemplate {
		return v.IngressTemplate
	}).(IssuerSpecAcmeSolversHttp01IngressIngressTemplatePtrOutput)
}

// The name of the ingress resource that should have ACME challenge solving routes inserted into it in order to solve HTTP01 challenges. This is typically used in conjunction with ingress controllers like ingress-gce, which maintains a 1:1 mapping between external IPs and ingress resources.
func (o IssuerSpecAcmeSolversHttp01IngressOutput) Name() pulumi.StringPtrOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversHttp01Ingress) *string { return v.Name }).(pulumi.StringPtrOutput)
}

// Optional pod template used to configure the ACME challenge solver pods used for HTTP01 challenges
func (o IssuerSpecAcmeSolversHttp01IngressOutput) PodTemplate() IssuerSpecAcmeSolversHttp01IngressPodTemplatePtrOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversHttp01Ingress) *IssuerSpecAcmeSolversHttp01IngressPodTemplate {
		return v.PodTemplate
	}).(IssuerSpecAcmeSolversHttp01IngressPodTemplatePtrOutput)
}

// Optional service type for Kubernetes solver service. Supported values are NodePort or ClusterIP. If unset, defaults to NodePort.
func (o IssuerSpecAcmeSolversHttp01IngressOutput) ServiceType() pulumi.StringPtrOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversHttp01Ingress) *string { return v.ServiceType }).(pulumi.StringPtrOutput)
}

type IssuerSpecAcmeSolversHttp01IngressPtrOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversHttp01IngressPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecAcmeSolversHttp01Ingress)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversHttp01IngressPtrOutput) ToIssuerSpecAcmeSolversHttp01IngressPtrOutput() IssuerSpecAcmeSolversHttp01IngressPtrOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPtrOutput) ToIssuerSpecAcmeSolversHttp01IngressPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPtrOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecAcmeSolversHttp01Ingress] {
	return pulumix.Output[*IssuerSpecAcmeSolversHttp01Ingress]{
		OutputState: o.OutputState,
	}
}

func (o IssuerSpecAcmeSolversHttp01IngressPtrOutput) Elem() IssuerSpecAcmeSolversHttp01IngressOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversHttp01Ingress) IssuerSpecAcmeSolversHttp01Ingress {
		if v != nil {
			return *v
		}
		var ret IssuerSpecAcmeSolversHttp01Ingress
		return ret
	}).(IssuerSpecAcmeSolversHttp01IngressOutput)
}

// The ingress class to use when creating Ingress resources to solve ACME challenges that use this challenge solver. Only one of 'class' or 'name' may be specified.
func (o IssuerSpecAcmeSolversHttp01IngressPtrOutput) Class() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversHttp01Ingress) *string {
		if v == nil {
			return nil
		}
		return v.Class
	}).(pulumi.StringPtrOutput)
}

// Optional ingress template used to configure the ACME challenge solver ingress used for HTTP01 challenges.
func (o IssuerSpecAcmeSolversHttp01IngressPtrOutput) IngressTemplate() IssuerSpecAcmeSolversHttp01IngressIngressTemplatePtrOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversHttp01Ingress) *IssuerSpecAcmeSolversHttp01IngressIngressTemplate {
		if v == nil {
			return nil
		}
		return v.IngressTemplate
	}).(IssuerSpecAcmeSolversHttp01IngressIngressTemplatePtrOutput)
}

// The name of the ingress resource that should have ACME challenge solving routes inserted into it in order to solve HTTP01 challenges. This is typically used in conjunction with ingress controllers like ingress-gce, which maintains a 1:1 mapping between external IPs and ingress resources.
func (o IssuerSpecAcmeSolversHttp01IngressPtrOutput) Name() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversHttp01Ingress) *string {
		if v == nil {
			return nil
		}
		return v.Name
	}).(pulumi.StringPtrOutput)
}

// Optional pod template used to configure the ACME challenge solver pods used for HTTP01 challenges
func (o IssuerSpecAcmeSolversHttp01IngressPtrOutput) PodTemplate() IssuerSpecAcmeSolversHttp01IngressPodTemplatePtrOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversHttp01Ingress) *IssuerSpecAcmeSolversHttp01IngressPodTemplate {
		if v == nil {
			return nil
		}
		return v.PodTemplate
	}).(IssuerSpecAcmeSolversHttp01IngressPodTemplatePtrOutput)
}

// Optional service type for Kubernetes solver service. Supported values are NodePort or ClusterIP. If unset, defaults to NodePort.
func (o IssuerSpecAcmeSolversHttp01IngressPtrOutput) ServiceType() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversHttp01Ingress) *string {
		if v == nil {
			return nil
		}
		return v.ServiceType
	}).(pulumi.StringPtrOutput)
}

// Optional ingress template used to configure the ACME challenge solver ingress used for HTTP01 challenges.
type IssuerSpecAcmeSolversHttp01IngressIngressTemplate struct {
	// ObjectMeta overrides for the ingress used to solve HTTP01 challenges. Only the 'labels' and 'annotations' fields may be set. If labels or annotations overlap with in-built values, the values here will override the in-built values.
	Metadata *IssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadata `pulumi:"metadata"`
}

// IssuerSpecAcmeSolversHttp01IngressIngressTemplateInput is an input type that accepts IssuerSpecAcmeSolversHttp01IngressIngressTemplateArgs and IssuerSpecAcmeSolversHttp01IngressIngressTemplateOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversHttp01IngressIngressTemplateInput` via:
//
//	IssuerSpecAcmeSolversHttp01IngressIngressTemplateArgs{...}
type IssuerSpecAcmeSolversHttp01IngressIngressTemplateInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversHttp01IngressIngressTemplateOutput() IssuerSpecAcmeSolversHttp01IngressIngressTemplateOutput
	ToIssuerSpecAcmeSolversHttp01IngressIngressTemplateOutputWithContext(context.Context) IssuerSpecAcmeSolversHttp01IngressIngressTemplateOutput
}

// Optional ingress template used to configure the ACME challenge solver ingress used for HTTP01 challenges.
type IssuerSpecAcmeSolversHttp01IngressIngressTemplateArgs struct {
	// ObjectMeta overrides for the ingress used to solve HTTP01 challenges. Only the 'labels' and 'annotations' fields may be set. If labels or annotations overlap with in-built values, the values here will override the in-built values.
	Metadata IssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataPtrInput `pulumi:"metadata"`
}

func (IssuerSpecAcmeSolversHttp01IngressIngressTemplateArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressIngressTemplate)(nil)).Elem()
}

func (i IssuerSpecAcmeSolversHttp01IngressIngressTemplateArgs) ToIssuerSpecAcmeSolversHttp01IngressIngressTemplateOutput() IssuerSpecAcmeSolversHttp01IngressIngressTemplateOutput {
	return i.ToIssuerSpecAcmeSolversHttp01IngressIngressTemplateOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversHttp01IngressIngressTemplateArgs) ToIssuerSpecAcmeSolversHttp01IngressIngressTemplateOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressIngressTemplateOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversHttp01IngressIngressTemplateOutput)
}

func (i IssuerSpecAcmeSolversHttp01IngressIngressTemplateArgs) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversHttp01IngressIngressTemplate] {
	return pulumix.Output[IssuerSpecAcmeSolversHttp01IngressIngressTemplate]{
		OutputState: i.ToIssuerSpecAcmeSolversHttp01IngressIngressTemplateOutputWithContext(ctx).OutputState,
	}
}

func (i IssuerSpecAcmeSolversHttp01IngressIngressTemplateArgs) ToIssuerSpecAcmeSolversHttp01IngressIngressTemplatePtrOutput() IssuerSpecAcmeSolversHttp01IngressIngressTemplatePtrOutput {
	return i.ToIssuerSpecAcmeSolversHttp01IngressIngressTemplatePtrOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversHttp01IngressIngressTemplateArgs) ToIssuerSpecAcmeSolversHttp01IngressIngressTemplatePtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressIngressTemplatePtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversHttp01IngressIngressTemplateOutput).ToIssuerSpecAcmeSolversHttp01IngressIngressTemplatePtrOutputWithContext(ctx)
}

// IssuerSpecAcmeSolversHttp01IngressIngressTemplatePtrInput is an input type that accepts IssuerSpecAcmeSolversHttp01IngressIngressTemplateArgs, IssuerSpecAcmeSolversHttp01IngressIngressTemplatePtr and IssuerSpecAcmeSolversHttp01IngressIngressTemplatePtrOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversHttp01IngressIngressTemplatePtrInput` via:
//
//	        IssuerSpecAcmeSolversHttp01IngressIngressTemplateArgs{...}
//
//	or:
//
//	        nil
type IssuerSpecAcmeSolversHttp01IngressIngressTemplatePtrInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversHttp01IngressIngressTemplatePtrOutput() IssuerSpecAcmeSolversHttp01IngressIngressTemplatePtrOutput
	ToIssuerSpecAcmeSolversHttp01IngressIngressTemplatePtrOutputWithContext(context.Context) IssuerSpecAcmeSolversHttp01IngressIngressTemplatePtrOutput
}

type issuerSpecAcmeSolversHttp01IngressIngressTemplatePtrType IssuerSpecAcmeSolversHttp01IngressIngressTemplateArgs

func IssuerSpecAcmeSolversHttp01IngressIngressTemplatePtr(v *IssuerSpecAcmeSolversHttp01IngressIngressTemplateArgs) IssuerSpecAcmeSolversHttp01IngressIngressTemplatePtrInput {
	return (*issuerSpecAcmeSolversHttp01IngressIngressTemplatePtrType)(v)
}

func (*issuerSpecAcmeSolversHttp01IngressIngressTemplatePtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecAcmeSolversHttp01IngressIngressTemplate)(nil)).Elem()
}

func (i *issuerSpecAcmeSolversHttp01IngressIngressTemplatePtrType) ToIssuerSpecAcmeSolversHttp01IngressIngressTemplatePtrOutput() IssuerSpecAcmeSolversHttp01IngressIngressTemplatePtrOutput {
	return i.ToIssuerSpecAcmeSolversHttp01IngressIngressTemplatePtrOutputWithContext(context.Background())
}

func (i *issuerSpecAcmeSolversHttp01IngressIngressTemplatePtrType) ToIssuerSpecAcmeSolversHttp01IngressIngressTemplatePtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressIngressTemplatePtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversHttp01IngressIngressTemplatePtrOutput)
}

func (i *issuerSpecAcmeSolversHttp01IngressIngressTemplatePtrType) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecAcmeSolversHttp01IngressIngressTemplate] {
	return pulumix.Output[*IssuerSpecAcmeSolversHttp01IngressIngressTemplate]{
		OutputState: i.ToIssuerSpecAcmeSolversHttp01IngressIngressTemplatePtrOutputWithContext(ctx).OutputState,
	}
}

// Optional ingress template used to configure the ACME challenge solver ingress used for HTTP01 challenges.
type IssuerSpecAcmeSolversHttp01IngressIngressTemplateOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversHttp01IngressIngressTemplateOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressIngressTemplate)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversHttp01IngressIngressTemplateOutput) ToIssuerSpecAcmeSolversHttp01IngressIngressTemplateOutput() IssuerSpecAcmeSolversHttp01IngressIngressTemplateOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressIngressTemplateOutput) ToIssuerSpecAcmeSolversHttp01IngressIngressTemplateOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressIngressTemplateOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressIngressTemplateOutput) ToIssuerSpecAcmeSolversHttp01IngressIngressTemplatePtrOutput() IssuerSpecAcmeSolversHttp01IngressIngressTemplatePtrOutput {
	return o.ToIssuerSpecAcmeSolversHttp01IngressIngressTemplatePtrOutputWithContext(context.Background())
}

func (o IssuerSpecAcmeSolversHttp01IngressIngressTemplateOutput) ToIssuerSpecAcmeSolversHttp01IngressIngressTemplatePtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressIngressTemplatePtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v IssuerSpecAcmeSolversHttp01IngressIngressTemplate) *IssuerSpecAcmeSolversHttp01IngressIngressTemplate {
		return &v
	}).(IssuerSpecAcmeSolversHttp01IngressIngressTemplatePtrOutput)
}

func (o IssuerSpecAcmeSolversHttp01IngressIngressTemplateOutput) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversHttp01IngressIngressTemplate] {
	return pulumix.Output[IssuerSpecAcmeSolversHttp01IngressIngressTemplate]{
		OutputState: o.OutputState,
	}
}

// ObjectMeta overrides for the ingress used to solve HTTP01 challenges. Only the 'labels' and 'annotations' fields may be set. If labels or annotations overlap with in-built values, the values here will override the in-built values.
func (o IssuerSpecAcmeSolversHttp01IngressIngressTemplateOutput) Metadata() IssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataPtrOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversHttp01IngressIngressTemplate) *IssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadata {
		return v.Metadata
	}).(IssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataPtrOutput)
}

type IssuerSpecAcmeSolversHttp01IngressIngressTemplatePtrOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversHttp01IngressIngressTemplatePtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecAcmeSolversHttp01IngressIngressTemplate)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversHttp01IngressIngressTemplatePtrOutput) ToIssuerSpecAcmeSolversHttp01IngressIngressTemplatePtrOutput() IssuerSpecAcmeSolversHttp01IngressIngressTemplatePtrOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressIngressTemplatePtrOutput) ToIssuerSpecAcmeSolversHttp01IngressIngressTemplatePtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressIngressTemplatePtrOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressIngressTemplatePtrOutput) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecAcmeSolversHttp01IngressIngressTemplate] {
	return pulumix.Output[*IssuerSpecAcmeSolversHttp01IngressIngressTemplate]{
		OutputState: o.OutputState,
	}
}

func (o IssuerSpecAcmeSolversHttp01IngressIngressTemplatePtrOutput) Elem() IssuerSpecAcmeSolversHttp01IngressIngressTemplateOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversHttp01IngressIngressTemplate) IssuerSpecAcmeSolversHttp01IngressIngressTemplate {
		if v != nil {
			return *v
		}
		var ret IssuerSpecAcmeSolversHttp01IngressIngressTemplate
		return ret
	}).(IssuerSpecAcmeSolversHttp01IngressIngressTemplateOutput)
}

// ObjectMeta overrides for the ingress used to solve HTTP01 challenges. Only the 'labels' and 'annotations' fields may be set. If labels or annotations overlap with in-built values, the values here will override the in-built values.
func (o IssuerSpecAcmeSolversHttp01IngressIngressTemplatePtrOutput) Metadata() IssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataPtrOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversHttp01IngressIngressTemplate) *IssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadata {
		if v == nil {
			return nil
		}
		return v.Metadata
	}).(IssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataPtrOutput)
}

// ObjectMeta overrides for the ingress used to solve HTTP01 challenges. Only the 'labels' and 'annotations' fields may be set. If labels or annotations overlap with in-built values, the values here will override the in-built values.
type IssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadata struct {
	// Annotations that should be added to the created ACME HTTP01 solver ingress.
	Annotations map[string]string `pulumi:"annotations"`
	// Labels that should be added to the created ACME HTTP01 solver ingress.
	Labels map[string]string `pulumi:"labels"`
}

// IssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataInput is an input type that accepts IssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataArgs and IssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataInput` via:
//
//	IssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataArgs{...}
type IssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataOutput() IssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataOutput
	ToIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataOutputWithContext(context.Context) IssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataOutput
}

// ObjectMeta overrides for the ingress used to solve HTTP01 challenges. Only the 'labels' and 'annotations' fields may be set. If labels or annotations overlap with in-built values, the values here will override the in-built values.
type IssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataArgs struct {
	// Annotations that should be added to the created ACME HTTP01 solver ingress.
	Annotations pulumi.StringMapInput `pulumi:"annotations"`
	// Labels that should be added to the created ACME HTTP01 solver ingress.
	Labels pulumi.StringMapInput `pulumi:"labels"`
}

func (IssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadata)(nil)).Elem()
}

func (i IssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataArgs) ToIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataOutput() IssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataOutput {
	return i.ToIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataArgs) ToIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataOutput)
}

func (i IssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataArgs) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadata] {
	return pulumix.Output[IssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadata]{
		OutputState: i.ToIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataOutputWithContext(ctx).OutputState,
	}
}

func (i IssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataArgs) ToIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataPtrOutput() IssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataPtrOutput {
	return i.ToIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataPtrOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataArgs) ToIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataOutput).ToIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataPtrOutputWithContext(ctx)
}

// IssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataPtrInput is an input type that accepts IssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataArgs, IssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataPtr and IssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataPtrOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataPtrInput` via:
//
//	        IssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataArgs{...}
//
//	or:
//
//	        nil
type IssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataPtrInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataPtrOutput() IssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataPtrOutput
	ToIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataPtrOutputWithContext(context.Context) IssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataPtrOutput
}

type issuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataPtrType IssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataArgs

func IssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataPtr(v *IssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataArgs) IssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataPtrInput {
	return (*issuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataPtrType)(v)
}

func (*issuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadata)(nil)).Elem()
}

func (i *issuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataPtrType) ToIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataPtrOutput() IssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataPtrOutput {
	return i.ToIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataPtrOutputWithContext(context.Background())
}

func (i *issuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataPtrType) ToIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataPtrOutput)
}

func (i *issuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataPtrType) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadata] {
	return pulumix.Output[*IssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadata]{
		OutputState: i.ToIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataPtrOutputWithContext(ctx).OutputState,
	}
}

// ObjectMeta overrides for the ingress used to solve HTTP01 challenges. Only the 'labels' and 'annotations' fields may be set. If labels or annotations overlap with in-built values, the values here will override the in-built values.
type IssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadata)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataOutput) ToIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataOutput() IssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataOutput) ToIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataOutput) ToIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataPtrOutput() IssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataPtrOutput {
	return o.ToIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataPtrOutputWithContext(context.Background())
}

func (o IssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataOutput) ToIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v IssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadata) *IssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadata {
		return &v
	}).(IssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataPtrOutput)
}

func (o IssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataOutput) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadata] {
	return pulumix.Output[IssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadata]{
		OutputState: o.OutputState,
	}
}

// Annotations that should be added to the created ACME HTTP01 solver ingress.
func (o IssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataOutput) Annotations() pulumi.StringMapOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadata) map[string]string {
		return v.Annotations
	}).(pulumi.StringMapOutput)
}

// Labels that should be added to the created ACME HTTP01 solver ingress.
func (o IssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataOutput) Labels() pulumi.StringMapOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadata) map[string]string { return v.Labels }).(pulumi.StringMapOutput)
}

type IssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataPtrOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadata)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataPtrOutput) ToIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataPtrOutput() IssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataPtrOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataPtrOutput) ToIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataPtrOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadata] {
	return pulumix.Output[*IssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadata]{
		OutputState: o.OutputState,
	}
}

func (o IssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataPtrOutput) Elem() IssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadata) IssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadata {
		if v != nil {
			return *v
		}
		var ret IssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadata
		return ret
	}).(IssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataOutput)
}

// Annotations that should be added to the created ACME HTTP01 solver ingress.
func (o IssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataPtrOutput) Annotations() pulumi.StringMapOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadata) map[string]string {
		if v == nil {
			return nil
		}
		return v.Annotations
	}).(pulumi.StringMapOutput)
}

// Labels that should be added to the created ACME HTTP01 solver ingress.
func (o IssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataPtrOutput) Labels() pulumi.StringMapOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadata) map[string]string {
		if v == nil {
			return nil
		}
		return v.Labels
	}).(pulumi.StringMapOutput)
}

// Annotations that should be added to the created ACME HTTP01 solver ingress.
type IssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataAnnotations struct {
}

// Labels that should be added to the created ACME HTTP01 solver ingress.
type IssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataLabels struct {
}

// Optional pod template used to configure the ACME challenge solver pods used for HTTP01 challenges
type IssuerSpecAcmeSolversHttp01IngressPodTemplate struct {
	// ObjectMeta overrides for the pod used to solve HTTP01 challenges. Only the 'labels' and 'annotations' fields may be set. If labels or annotations overlap with in-built values, the values here will override the in-built values.
	Metadata *IssuerSpecAcmeSolversHttp01IngressPodTemplateMetadata `pulumi:"metadata"`
	// PodSpec defines overrides for the HTTP01 challenge solver pod. Only the 'priorityClassName', 'nodeSelector', 'affinity', 'serviceAccountName' and 'tolerations' fields are supported currently. All other fields will be ignored.
	Spec *IssuerSpecAcmeSolversHttp01IngressPodTemplateSpec `pulumi:"spec"`
}

// IssuerSpecAcmeSolversHttp01IngressPodTemplateInput is an input type that accepts IssuerSpecAcmeSolversHttp01IngressPodTemplateArgs and IssuerSpecAcmeSolversHttp01IngressPodTemplateOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversHttp01IngressPodTemplateInput` via:
//
//	IssuerSpecAcmeSolversHttp01IngressPodTemplateArgs{...}
type IssuerSpecAcmeSolversHttp01IngressPodTemplateInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateOutput
	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateOutputWithContext(context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateOutput
}

// Optional pod template used to configure the ACME challenge solver pods used for HTTP01 challenges
type IssuerSpecAcmeSolversHttp01IngressPodTemplateArgs struct {
	// ObjectMeta overrides for the pod used to solve HTTP01 challenges. Only the 'labels' and 'annotations' fields may be set. If labels or annotations overlap with in-built values, the values here will override the in-built values.
	Metadata IssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataPtrInput `pulumi:"metadata"`
	// PodSpec defines overrides for the HTTP01 challenge solver pod. Only the 'priorityClassName', 'nodeSelector', 'affinity', 'serviceAccountName' and 'tolerations' fields are supported currently. All other fields will be ignored.
	Spec IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtrInput `pulumi:"spec"`
}

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplate)(nil)).Elem()
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateArgs) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateOutput {
	return i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateArgs) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversHttp01IngressPodTemplateOutput)
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateArgs) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplate] {
	return pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplate]{
		OutputState: i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateOutputWithContext(ctx).OutputState,
	}
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateArgs) ToIssuerSpecAcmeSolversHttp01IngressPodTemplatePtrOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplatePtrOutput {
	return i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplatePtrOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateArgs) ToIssuerSpecAcmeSolversHttp01IngressPodTemplatePtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplatePtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversHttp01IngressPodTemplateOutput).ToIssuerSpecAcmeSolversHttp01IngressPodTemplatePtrOutputWithContext(ctx)
}

// IssuerSpecAcmeSolversHttp01IngressPodTemplatePtrInput is an input type that accepts IssuerSpecAcmeSolversHttp01IngressPodTemplateArgs, IssuerSpecAcmeSolversHttp01IngressPodTemplatePtr and IssuerSpecAcmeSolversHttp01IngressPodTemplatePtrOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversHttp01IngressPodTemplatePtrInput` via:
//
//	        IssuerSpecAcmeSolversHttp01IngressPodTemplateArgs{...}
//
//	or:
//
//	        nil
type IssuerSpecAcmeSolversHttp01IngressPodTemplatePtrInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversHttp01IngressPodTemplatePtrOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplatePtrOutput
	ToIssuerSpecAcmeSolversHttp01IngressPodTemplatePtrOutputWithContext(context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplatePtrOutput
}

type issuerSpecAcmeSolversHttp01IngressPodTemplatePtrType IssuerSpecAcmeSolversHttp01IngressPodTemplateArgs

func IssuerSpecAcmeSolversHttp01IngressPodTemplatePtr(v *IssuerSpecAcmeSolversHttp01IngressPodTemplateArgs) IssuerSpecAcmeSolversHttp01IngressPodTemplatePtrInput {
	return (*issuerSpecAcmeSolversHttp01IngressPodTemplatePtrType)(v)
}

func (*issuerSpecAcmeSolversHttp01IngressPodTemplatePtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecAcmeSolversHttp01IngressPodTemplate)(nil)).Elem()
}

func (i *issuerSpecAcmeSolversHttp01IngressPodTemplatePtrType) ToIssuerSpecAcmeSolversHttp01IngressPodTemplatePtrOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplatePtrOutput {
	return i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplatePtrOutputWithContext(context.Background())
}

func (i *issuerSpecAcmeSolversHttp01IngressPodTemplatePtrType) ToIssuerSpecAcmeSolversHttp01IngressPodTemplatePtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplatePtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversHttp01IngressPodTemplatePtrOutput)
}

func (i *issuerSpecAcmeSolversHttp01IngressPodTemplatePtrType) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecAcmeSolversHttp01IngressPodTemplate] {
	return pulumix.Output[*IssuerSpecAcmeSolversHttp01IngressPodTemplate]{
		OutputState: i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplatePtrOutputWithContext(ctx).OutputState,
	}
}

// Optional pod template used to configure the ACME challenge solver pods used for HTTP01 challenges
type IssuerSpecAcmeSolversHttp01IngressPodTemplateOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplate)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplatePtrOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplatePtrOutput {
	return o.ToIssuerSpecAcmeSolversHttp01IngressPodTemplatePtrOutputWithContext(context.Background())
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplatePtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplatePtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v IssuerSpecAcmeSolversHttp01IngressPodTemplate) *IssuerSpecAcmeSolversHttp01IngressPodTemplate {
		return &v
	}).(IssuerSpecAcmeSolversHttp01IngressPodTemplatePtrOutput)
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateOutput) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplate] {
	return pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplate]{
		OutputState: o.OutputState,
	}
}

// ObjectMeta overrides for the pod used to solve HTTP01 challenges. Only the 'labels' and 'annotations' fields may be set. If labels or annotations overlap with in-built values, the values here will override the in-built values.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateOutput) Metadata() IssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataPtrOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversHttp01IngressPodTemplate) *IssuerSpecAcmeSolversHttp01IngressPodTemplateMetadata {
		return v.Metadata
	}).(IssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataPtrOutput)
}

// PodSpec defines overrides for the HTTP01 challenge solver pod. Only the 'priorityClassName', 'nodeSelector', 'affinity', 'serviceAccountName' and 'tolerations' fields are supported currently. All other fields will be ignored.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateOutput) Spec() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtrOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversHttp01IngressPodTemplate) *IssuerSpecAcmeSolversHttp01IngressPodTemplateSpec {
		return v.Spec
	}).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtrOutput)
}

type IssuerSpecAcmeSolversHttp01IngressPodTemplatePtrOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversHttp01IngressPodTemplatePtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecAcmeSolversHttp01IngressPodTemplate)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplatePtrOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplatePtrOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplatePtrOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplatePtrOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplatePtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplatePtrOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplatePtrOutput) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecAcmeSolversHttp01IngressPodTemplate] {
	return pulumix.Output[*IssuerSpecAcmeSolversHttp01IngressPodTemplate]{
		OutputState: o.OutputState,
	}
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplatePtrOutput) Elem() IssuerSpecAcmeSolversHttp01IngressPodTemplateOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversHttp01IngressPodTemplate) IssuerSpecAcmeSolversHttp01IngressPodTemplate {
		if v != nil {
			return *v
		}
		var ret IssuerSpecAcmeSolversHttp01IngressPodTemplate
		return ret
	}).(IssuerSpecAcmeSolversHttp01IngressPodTemplateOutput)
}

// ObjectMeta overrides for the pod used to solve HTTP01 challenges. Only the 'labels' and 'annotations' fields may be set. If labels or annotations overlap with in-built values, the values here will override the in-built values.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplatePtrOutput) Metadata() IssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataPtrOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversHttp01IngressPodTemplate) *IssuerSpecAcmeSolversHttp01IngressPodTemplateMetadata {
		if v == nil {
			return nil
		}
		return v.Metadata
	}).(IssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataPtrOutput)
}

// PodSpec defines overrides for the HTTP01 challenge solver pod. Only the 'priorityClassName', 'nodeSelector', 'affinity', 'serviceAccountName' and 'tolerations' fields are supported currently. All other fields will be ignored.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplatePtrOutput) Spec() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtrOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversHttp01IngressPodTemplate) *IssuerSpecAcmeSolversHttp01IngressPodTemplateSpec {
		if v == nil {
			return nil
		}
		return v.Spec
	}).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtrOutput)
}

// ObjectMeta overrides for the pod used to solve HTTP01 challenges. Only the 'labels' and 'annotations' fields may be set. If labels or annotations overlap with in-built values, the values here will override the in-built values.
type IssuerSpecAcmeSolversHttp01IngressPodTemplateMetadata struct {
	// Annotations that should be added to the create ACME HTTP01 solver pods.
	Annotations map[string]string `pulumi:"annotations"`
	// Labels that should be added to the created ACME HTTP01 solver pods.
	Labels map[string]string `pulumi:"labels"`
}

// IssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataInput is an input type that accepts IssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataArgs and IssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataInput` via:
//
//	IssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataArgs{...}
type IssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataOutput
	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataOutputWithContext(context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataOutput
}

// ObjectMeta overrides for the pod used to solve HTTP01 challenges. Only the 'labels' and 'annotations' fields may be set. If labels or annotations overlap with in-built values, the values here will override the in-built values.
type IssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataArgs struct {
	// Annotations that should be added to the create ACME HTTP01 solver pods.
	Annotations pulumi.StringMapInput `pulumi:"annotations"`
	// Labels that should be added to the created ACME HTTP01 solver pods.
	Labels pulumi.StringMapInput `pulumi:"labels"`
}

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateMetadata)(nil)).Elem()
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataArgs) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataOutput {
	return i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataArgs) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataOutput)
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataArgs) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateMetadata] {
	return pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateMetadata]{
		OutputState: i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataOutputWithContext(ctx).OutputState,
	}
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataArgs) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataPtrOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataPtrOutput {
	return i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataPtrOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataArgs) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataOutput).ToIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataPtrOutputWithContext(ctx)
}

// IssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataPtrInput is an input type that accepts IssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataArgs, IssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataPtr and IssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataPtrOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataPtrInput` via:
//
//	        IssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataArgs{...}
//
//	or:
//
//	        nil
type IssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataPtrInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataPtrOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataPtrOutput
	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataPtrOutputWithContext(context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataPtrOutput
}

type issuerSpecAcmeSolversHttp01IngressPodTemplateMetadataPtrType IssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataArgs

func IssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataPtr(v *IssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataArgs) IssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataPtrInput {
	return (*issuerSpecAcmeSolversHttp01IngressPodTemplateMetadataPtrType)(v)
}

func (*issuerSpecAcmeSolversHttp01IngressPodTemplateMetadataPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecAcmeSolversHttp01IngressPodTemplateMetadata)(nil)).Elem()
}

func (i *issuerSpecAcmeSolversHttp01IngressPodTemplateMetadataPtrType) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataPtrOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataPtrOutput {
	return i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataPtrOutputWithContext(context.Background())
}

func (i *issuerSpecAcmeSolversHttp01IngressPodTemplateMetadataPtrType) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataPtrOutput)
}

func (i *issuerSpecAcmeSolversHttp01IngressPodTemplateMetadataPtrType) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecAcmeSolversHttp01IngressPodTemplateMetadata] {
	return pulumix.Output[*IssuerSpecAcmeSolversHttp01IngressPodTemplateMetadata]{
		OutputState: i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataPtrOutputWithContext(ctx).OutputState,
	}
}

// ObjectMeta overrides for the pod used to solve HTTP01 challenges. Only the 'labels' and 'annotations' fields may be set. If labels or annotations overlap with in-built values, the values here will override the in-built values.
type IssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateMetadata)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataPtrOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataPtrOutput {
	return o.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataPtrOutputWithContext(context.Background())
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v IssuerSpecAcmeSolversHttp01IngressPodTemplateMetadata) *IssuerSpecAcmeSolversHttp01IngressPodTemplateMetadata {
		return &v
	}).(IssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataPtrOutput)
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataOutput) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateMetadata] {
	return pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateMetadata]{
		OutputState: o.OutputState,
	}
}

// Annotations that should be added to the create ACME HTTP01 solver pods.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataOutput) Annotations() pulumi.StringMapOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversHttp01IngressPodTemplateMetadata) map[string]string { return v.Annotations }).(pulumi.StringMapOutput)
}

// Labels that should be added to the created ACME HTTP01 solver pods.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataOutput) Labels() pulumi.StringMapOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversHttp01IngressPodTemplateMetadata) map[string]string { return v.Labels }).(pulumi.StringMapOutput)
}

type IssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataPtrOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecAcmeSolversHttp01IngressPodTemplateMetadata)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataPtrOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataPtrOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataPtrOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataPtrOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataPtrOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecAcmeSolversHttp01IngressPodTemplateMetadata] {
	return pulumix.Output[*IssuerSpecAcmeSolversHttp01IngressPodTemplateMetadata]{
		OutputState: o.OutputState,
	}
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataPtrOutput) Elem() IssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversHttp01IngressPodTemplateMetadata) IssuerSpecAcmeSolversHttp01IngressPodTemplateMetadata {
		if v != nil {
			return *v
		}
		var ret IssuerSpecAcmeSolversHttp01IngressPodTemplateMetadata
		return ret
	}).(IssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataOutput)
}

// Annotations that should be added to the create ACME HTTP01 solver pods.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataPtrOutput) Annotations() pulumi.StringMapOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversHttp01IngressPodTemplateMetadata) map[string]string {
		if v == nil {
			return nil
		}
		return v.Annotations
	}).(pulumi.StringMapOutput)
}

// Labels that should be added to the created ACME HTTP01 solver pods.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataPtrOutput) Labels() pulumi.StringMapOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversHttp01IngressPodTemplateMetadata) map[string]string {
		if v == nil {
			return nil
		}
		return v.Labels
	}).(pulumi.StringMapOutput)
}

// Annotations that should be added to the create ACME HTTP01 solver pods.
type IssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataAnnotations struct {
}

// Labels that should be added to the created ACME HTTP01 solver pods.
type IssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataLabels struct {
}

// PodSpec defines overrides for the HTTP01 challenge solver pod. Only the 'priorityClassName', 'nodeSelector', 'affinity', 'serviceAccountName' and 'tolerations' fields are supported currently. All other fields will be ignored.
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpec struct {
	// If specified, the pod's scheduling constraints
	Affinity *IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinity `pulumi:"affinity"`
	// NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/
	NodeSelector map[string]string `pulumi:"nodeSelector"`
	// If specified, the pod's priorityClassName.
	PriorityClassName *string `pulumi:"priorityClassName"`
	// If specified, the pod's service account
	ServiceAccountName *string `pulumi:"serviceAccountName"`
	// If specified, the pod's tolerations.
	Tolerations []IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerations `pulumi:"tolerations"`
}

// IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecInput is an input type that accepts IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecArgs and IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecInput` via:
//
//	IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecArgs{...}
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecOutput
	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecOutputWithContext(context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecOutput
}

// PodSpec defines overrides for the HTTP01 challenge solver pod. Only the 'priorityClassName', 'nodeSelector', 'affinity', 'serviceAccountName' and 'tolerations' fields are supported currently. All other fields will be ignored.
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecArgs struct {
	// If specified, the pod's scheduling constraints
	Affinity IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPtrInput `pulumi:"affinity"`
	// NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/
	NodeSelector pulumi.StringMapInput `pulumi:"nodeSelector"`
	// If specified, the pod's priorityClassName.
	PriorityClassName pulumi.StringPtrInput `pulumi:"priorityClassName"`
	// If specified, the pod's service account
	ServiceAccountName pulumi.StringPtrInput `pulumi:"serviceAccountName"`
	// If specified, the pod's tolerations.
	Tolerations IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsArrayInput `pulumi:"tolerations"`
}

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpec)(nil)).Elem()
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecArgs) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecOutput {
	return i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecArgs) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecOutput)
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecArgs) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpec] {
	return pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpec]{
		OutputState: i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecOutputWithContext(ctx).OutputState,
	}
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecArgs) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtrOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtrOutput {
	return i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtrOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecArgs) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecOutput).ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtrOutputWithContext(ctx)
}

// IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtrInput is an input type that accepts IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecArgs, IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtr and IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtrOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtrInput` via:
//
//	        IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecArgs{...}
//
//	or:
//
//	        nil
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtrInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtrOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtrOutput
	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtrOutputWithContext(context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtrOutput
}

type issuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtrType IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecArgs

func IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtr(v *IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecArgs) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtrInput {
	return (*issuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtrType)(v)
}

func (*issuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecAcmeSolversHttp01IngressPodTemplateSpec)(nil)).Elem()
}

func (i *issuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtrType) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtrOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtrOutput {
	return i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtrOutputWithContext(context.Background())
}

func (i *issuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtrType) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtrOutput)
}

func (i *issuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtrType) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpec] {
	return pulumix.Output[*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpec]{
		OutputState: i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtrOutputWithContext(ctx).OutputState,
	}
}

// PodSpec defines overrides for the HTTP01 challenge solver pod. Only the 'priorityClassName', 'nodeSelector', 'affinity', 'serviceAccountName' and 'tolerations' fields are supported currently. All other fields will be ignored.
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpec)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtrOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtrOutput {
	return o.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtrOutputWithContext(context.Background())
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v IssuerSpecAcmeSolversHttp01IngressPodTemplateSpec) *IssuerSpecAcmeSolversHttp01IngressPodTemplateSpec {
		return &v
	}).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtrOutput)
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecOutput) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpec] {
	return pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpec]{
		OutputState: o.OutputState,
	}
}

// If specified, the pod's scheduling constraints
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecOutput) Affinity() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPtrOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversHttp01IngressPodTemplateSpec) *IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinity {
		return v.Affinity
	}).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPtrOutput)
}

// NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecOutput) NodeSelector() pulumi.StringMapOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversHttp01IngressPodTemplateSpec) map[string]string { return v.NodeSelector }).(pulumi.StringMapOutput)
}

// If specified, the pod's priorityClassName.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecOutput) PriorityClassName() pulumi.StringPtrOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversHttp01IngressPodTemplateSpec) *string { return v.PriorityClassName }).(pulumi.StringPtrOutput)
}

// If specified, the pod's service account
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecOutput) ServiceAccountName() pulumi.StringPtrOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversHttp01IngressPodTemplateSpec) *string { return v.ServiceAccountName }).(pulumi.StringPtrOutput)
}

// If specified, the pod's tolerations.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecOutput) Tolerations() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsArrayOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversHttp01IngressPodTemplateSpec) []IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerations {
		return v.Tolerations
	}).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsArrayOutput)
}

type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtrOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecAcmeSolversHttp01IngressPodTemplateSpec)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtrOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtrOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtrOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtrOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtrOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpec] {
	return pulumix.Output[*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpec]{
		OutputState: o.OutputState,
	}
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtrOutput) Elem() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversHttp01IngressPodTemplateSpec) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpec {
		if v != nil {
			return *v
		}
		var ret IssuerSpecAcmeSolversHttp01IngressPodTemplateSpec
		return ret
	}).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecOutput)
}

// If specified, the pod's scheduling constraints
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtrOutput) Affinity() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPtrOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversHttp01IngressPodTemplateSpec) *IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinity {
		if v == nil {
			return nil
		}
		return v.Affinity
	}).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPtrOutput)
}

// NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtrOutput) NodeSelector() pulumi.StringMapOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversHttp01IngressPodTemplateSpec) map[string]string {
		if v == nil {
			return nil
		}
		return v.NodeSelector
	}).(pulumi.StringMapOutput)
}

// If specified, the pod's priorityClassName.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtrOutput) PriorityClassName() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversHttp01IngressPodTemplateSpec) *string {
		if v == nil {
			return nil
		}
		return v.PriorityClassName
	}).(pulumi.StringPtrOutput)
}

// If specified, the pod's service account
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtrOutput) ServiceAccountName() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversHttp01IngressPodTemplateSpec) *string {
		if v == nil {
			return nil
		}
		return v.ServiceAccountName
	}).(pulumi.StringPtrOutput)
}

// If specified, the pod's tolerations.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtrOutput) Tolerations() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsArrayOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversHttp01IngressPodTemplateSpec) []IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerations {
		if v == nil {
			return nil
		}
		return v.Tolerations
	}).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsArrayOutput)
}

// If specified, the pod's scheduling constraints
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinity struct {
	// Describes node affinity scheduling rules for the pod.
	NodeAffinity *IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinity `pulumi:"nodeAffinity"`
	// Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).
	PodAffinity *IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinity `pulumi:"podAffinity"`
	// Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).
	PodAntiAffinity *IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinity `pulumi:"podAntiAffinity"`
}

// IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityInput is an input type that accepts IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityArgs and IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityInput` via:
//
//	IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityArgs{...}
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityOutput
	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityOutputWithContext(context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityOutput
}

// If specified, the pod's scheduling constraints
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityArgs struct {
	// Describes node affinity scheduling rules for the pod.
	NodeAffinity IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPtrInput `pulumi:"nodeAffinity"`
	// Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).
	PodAffinity IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPtrInput `pulumi:"podAffinity"`
	// Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).
	PodAntiAffinity IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPtrInput `pulumi:"podAntiAffinity"`
}

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinity)(nil)).Elem()
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityArgs) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityOutput {
	return i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityArgs) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityOutput)
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityArgs) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinity] {
	return pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinity]{
		OutputState: i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityOutputWithContext(ctx).OutputState,
	}
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityArgs) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPtrOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPtrOutput {
	return i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPtrOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityArgs) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityOutput).ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPtrOutputWithContext(ctx)
}

// IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPtrInput is an input type that accepts IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityArgs, IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPtr and IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPtrOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPtrInput` via:
//
//	        IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityArgs{...}
//
//	or:
//
//	        nil
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPtrInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPtrOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPtrOutput
	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPtrOutputWithContext(context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPtrOutput
}

type issuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPtrType IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityArgs

func IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPtr(v *IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityArgs) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPtrInput {
	return (*issuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPtrType)(v)
}

func (*issuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinity)(nil)).Elem()
}

func (i *issuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPtrType) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPtrOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPtrOutput {
	return i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPtrOutputWithContext(context.Background())
}

func (i *issuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPtrType) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPtrOutput)
}

func (i *issuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPtrType) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinity] {
	return pulumix.Output[*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinity]{
		OutputState: i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPtrOutputWithContext(ctx).OutputState,
	}
}

// If specified, the pod's scheduling constraints
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinity)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPtrOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPtrOutput {
	return o.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPtrOutputWithContext(context.Background())
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinity) *IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinity {
		return &v
	}).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPtrOutput)
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityOutput) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinity] {
	return pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinity]{
		OutputState: o.OutputState,
	}
}

// Describes node affinity scheduling rules for the pod.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityOutput) NodeAffinity() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPtrOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinity) *IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinity {
		return v.NodeAffinity
	}).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPtrOutput)
}

// Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityOutput) PodAffinity() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPtrOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinity) *IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinity {
		return v.PodAffinity
	}).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPtrOutput)
}

// Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityOutput) PodAntiAffinity() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPtrOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinity) *IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinity {
		return v.PodAntiAffinity
	}).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPtrOutput)
}

type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPtrOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinity)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPtrOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPtrOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPtrOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPtrOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPtrOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinity] {
	return pulumix.Output[*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinity]{
		OutputState: o.OutputState,
	}
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPtrOutput) Elem() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinity) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinity {
		if v != nil {
			return *v
		}
		var ret IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinity
		return ret
	}).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityOutput)
}

// Describes node affinity scheduling rules for the pod.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPtrOutput) NodeAffinity() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPtrOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinity) *IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinity {
		if v == nil {
			return nil
		}
		return v.NodeAffinity
	}).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPtrOutput)
}

// Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPtrOutput) PodAffinity() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPtrOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinity) *IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinity {
		if v == nil {
			return nil
		}
		return v.PodAffinity
	}).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPtrOutput)
}

// Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPtrOutput) PodAntiAffinity() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPtrOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinity) *IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinity {
		if v == nil {
			return nil
		}
		return v.PodAntiAffinity
	}).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPtrOutput)
}

// Describes node affinity scheduling rules for the pod.
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinity struct {
	// The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.
	PreferredDuringSchedulingIgnoredDuringExecution []IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecution `pulumi:"preferredDuringSchedulingIgnoredDuringExecution"`
	// If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.
	RequiredDuringSchedulingIgnoredDuringExecution *IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecution `pulumi:"requiredDuringSchedulingIgnoredDuringExecution"`
}

// IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityInput is an input type that accepts IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityArgs and IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityInput` via:
//
//	IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityArgs{...}
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityOutput
	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityOutputWithContext(context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityOutput
}

// Describes node affinity scheduling rules for the pod.
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityArgs struct {
	// The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.
	PreferredDuringSchedulingIgnoredDuringExecution IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayInput `pulumi:"preferredDuringSchedulingIgnoredDuringExecution"`
	// If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.
	RequiredDuringSchedulingIgnoredDuringExecution IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionPtrInput `pulumi:"requiredDuringSchedulingIgnoredDuringExecution"`
}

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinity)(nil)).Elem()
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityArgs) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityOutput {
	return i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityArgs) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityOutput)
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityArgs) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinity] {
	return pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinity]{
		OutputState: i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityOutputWithContext(ctx).OutputState,
	}
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityArgs) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPtrOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPtrOutput {
	return i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPtrOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityArgs) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityOutput).ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPtrOutputWithContext(ctx)
}

// IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPtrInput is an input type that accepts IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityArgs, IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPtr and IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPtrOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPtrInput` via:
//
//	        IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityArgs{...}
//
//	or:
//
//	        nil
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPtrInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPtrOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPtrOutput
	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPtrOutputWithContext(context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPtrOutput
}

type issuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPtrType IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityArgs

func IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPtr(v *IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityArgs) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPtrInput {
	return (*issuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPtrType)(v)
}

func (*issuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinity)(nil)).Elem()
}

func (i *issuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPtrType) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPtrOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPtrOutput {
	return i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPtrOutputWithContext(context.Background())
}

func (i *issuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPtrType) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPtrOutput)
}

func (i *issuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPtrType) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinity] {
	return pulumix.Output[*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinity]{
		OutputState: i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPtrOutputWithContext(ctx).OutputState,
	}
}

// Describes node affinity scheduling rules for the pod.
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinity)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPtrOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPtrOutput {
	return o.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPtrOutputWithContext(context.Background())
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinity) *IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinity {
		return &v
	}).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPtrOutput)
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityOutput) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinity] {
	return pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinity]{
		OutputState: o.OutputState,
	}
}

// The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityOutput) PreferredDuringSchedulingIgnoredDuringExecution() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinity) []IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecution {
		return v.PreferredDuringSchedulingIgnoredDuringExecution
	}).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput)
}

// If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityOutput) RequiredDuringSchedulingIgnoredDuringExecution() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionPtrOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinity) *IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecution {
		return v.RequiredDuringSchedulingIgnoredDuringExecution
	}).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionPtrOutput)
}

type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPtrOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinity)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPtrOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPtrOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPtrOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPtrOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPtrOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinity] {
	return pulumix.Output[*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinity]{
		OutputState: o.OutputState,
	}
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPtrOutput) Elem() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinity) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinity {
		if v != nil {
			return *v
		}
		var ret IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinity
		return ret
	}).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityOutput)
}

// The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPtrOutput) PreferredDuringSchedulingIgnoredDuringExecution() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinity) []IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecution {
		if v == nil {
			return nil
		}
		return v.PreferredDuringSchedulingIgnoredDuringExecution
	}).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput)
}

// If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPtrOutput) RequiredDuringSchedulingIgnoredDuringExecution() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionPtrOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinity) *IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecution {
		if v == nil {
			return nil
		}
		return v.RequiredDuringSchedulingIgnoredDuringExecution
	}).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionPtrOutput)
}

// An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecution struct {
	// A node selector term, associated with the corresponding weight.
	Preference IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreference `pulumi:"preference"`
	// Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.
	Weight int `pulumi:"weight"`
}

// IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionInput is an input type that accepts IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionArgs and IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionInput` via:
//
//	IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionArgs{...}
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput
	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutputWithContext(context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput
}

// An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionArgs struct {
	// A node selector term, associated with the corresponding weight.
	Preference IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceInput `pulumi:"preference"`
	// Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.
	Weight pulumi.IntInput `pulumi:"weight"`
}

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecution)(nil)).Elem()
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionArgs) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput {
	return i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionArgs) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput)
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionArgs) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecution] {
	return pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecution]{
		OutputState: i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutputWithContext(ctx).OutputState,
	}
}

// IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayInput is an input type that accepts IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionArray and IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayInput` via:
//
//	IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionArray{ IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionArgs{...} }
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput
	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutputWithContext(context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput
}

type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionArray []IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionInput

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionArray) ElementType() reflect.Type {
	return reflect.TypeOf((*[]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecution)(nil)).Elem()
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionArray) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput {
	return i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionArray) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput)
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionArray) ToOutput(ctx context.Context) pulumix.Output[[]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecution] {
	return pulumix.Output[[]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecution]{
		OutputState: i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutputWithContext(ctx).OutputState,
	}
}

// An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecution)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecution] {
	return pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecution]{
		OutputState: o.OutputState,
	}
}

// A node selector term, associated with the corresponding weight.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput) Preference() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecution) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreference {
		return v.Preference
	}).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceOutput)
}

// Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput) Weight() pulumi.IntOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecution) int {
		return v.Weight
	}).(pulumi.IntOutput)
}

type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*[]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecution)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput) ToOutput(ctx context.Context) pulumix.Output[[]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecution] {
	return pulumix.Output[[]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecution]{
		OutputState: o.OutputState,
	}
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput) Index(i pulumi.IntInput) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput {
	return pulumi.All(o, i).ApplyT(func(vs []interface{}) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecution {
		return vs[0].([]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecution)[vs[1].(int)]
	}).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput)
}

// A node selector term, associated with the corresponding weight.
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreference struct {
	// A list of node selector requirements by node's labels.
	MatchExpressions []IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressions `pulumi:"matchExpressions"`
	// A list of node selector requirements by node's fields.
	MatchFields []IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFields `pulumi:"matchFields"`
}

// IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceInput is an input type that accepts IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceArgs and IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceInput` via:
//
//	IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceArgs{...}
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceOutput
	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceOutputWithContext(context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceOutput
}

// A node selector term, associated with the corresponding weight.
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceArgs struct {
	// A list of node selector requirements by node's labels.
	MatchExpressions IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsArrayInput `pulumi:"matchExpressions"`
	// A list of node selector requirements by node's fields.
	MatchFields IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsArrayInput `pulumi:"matchFields"`
}

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreference)(nil)).Elem()
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceArgs) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceOutput {
	return i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceArgs) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceOutput)
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceArgs) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreference] {
	return pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreference]{
		OutputState: i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceOutputWithContext(ctx).OutputState,
	}
}

// A node selector term, associated with the corresponding weight.
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreference)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceOutput) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreference] {
	return pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreference]{
		OutputState: o.OutputState,
	}
}

// A list of node selector requirements by node's labels.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceOutput) MatchExpressions() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsArrayOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreference) []IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressions {
		return v.MatchExpressions
	}).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsArrayOutput)
}

// A list of node selector requirements by node's fields.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceOutput) MatchFields() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsArrayOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreference) []IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFields {
		return v.MatchFields
	}).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsArrayOutput)
}

// A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressions struct {
	// The label key that the selector applies to.
	Key string `pulumi:"key"`
	// Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
	Operator string `pulumi:"operator"`
	// An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.
	Values []string `pulumi:"values"`
}

// IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsInput is an input type that accepts IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsArgs and IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsInput` via:
//
//	IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsArgs{...}
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsOutput
	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsOutputWithContext(context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsOutput
}

// A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsArgs struct {
	// The label key that the selector applies to.
	Key pulumi.StringInput `pulumi:"key"`
	// Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
	Operator pulumi.StringInput `pulumi:"operator"`
	// An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.
	Values pulumi.StringArrayInput `pulumi:"values"`
}

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressions)(nil)).Elem()
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsArgs) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsOutput {
	return i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsArgs) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsOutput)
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsArgs) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressions] {
	return pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressions]{
		OutputState: i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsOutputWithContext(ctx).OutputState,
	}
}

// IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsArrayInput is an input type that accepts IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsArray and IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsArrayOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsArrayInput` via:
//
//	IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsArray{ IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsArgs{...} }
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsArrayInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsArrayOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsArrayOutput
	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsArrayOutputWithContext(context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsArrayOutput
}

type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsArray []IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsInput

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsArray) ElementType() reflect.Type {
	return reflect.TypeOf((*[]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressions)(nil)).Elem()
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsArray) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsArrayOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsArrayOutput {
	return i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsArrayOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsArray) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsArrayOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsArrayOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsArrayOutput)
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsArray) ToOutput(ctx context.Context) pulumix.Output[[]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressions] {
	return pulumix.Output[[]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressions]{
		OutputState: i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsArrayOutputWithContext(ctx).OutputState,
	}
}

// A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressions)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsOutput) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressions] {
	return pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressions]{
		OutputState: o.OutputState,
	}
}

// The label key that the selector applies to.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsOutput) Key() pulumi.StringOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressions) string {
		return v.Key
	}).(pulumi.StringOutput)
}

// Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsOutput) Operator() pulumi.StringOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressions) string {
		return v.Operator
	}).(pulumi.StringOutput)
}

// An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsOutput) Values() pulumi.StringArrayOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressions) []string {
		return v.Values
	}).(pulumi.StringArrayOutput)
}

type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsArrayOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsArrayOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*[]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressions)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsArrayOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsArrayOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsArrayOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsArrayOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsArrayOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsArrayOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsArrayOutput) ToOutput(ctx context.Context) pulumix.Output[[]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressions] {
	return pulumix.Output[[]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressions]{
		OutputState: o.OutputState,
	}
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsArrayOutput) Index(i pulumi.IntInput) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsOutput {
	return pulumi.All(o, i).ApplyT(func(vs []interface{}) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressions {
		return vs[0].([]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressions)[vs[1].(int)]
	}).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsOutput)
}

// A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFields struct {
	// The label key that the selector applies to.
	Key string `pulumi:"key"`
	// Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
	Operator string `pulumi:"operator"`
	// An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.
	Values []string `pulumi:"values"`
}

// IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsInput is an input type that accepts IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsArgs and IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsInput` via:
//
//	IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsArgs{...}
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsOutput
	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsOutputWithContext(context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsOutput
}

// A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsArgs struct {
	// The label key that the selector applies to.
	Key pulumi.StringInput `pulumi:"key"`
	// Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
	Operator pulumi.StringInput `pulumi:"operator"`
	// An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.
	Values pulumi.StringArrayInput `pulumi:"values"`
}

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFields)(nil)).Elem()
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsArgs) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsOutput {
	return i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsArgs) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsOutput)
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsArgs) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFields] {
	return pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFields]{
		OutputState: i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsOutputWithContext(ctx).OutputState,
	}
}

// IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsArrayInput is an input type that accepts IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsArray and IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsArrayOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsArrayInput` via:
//
//	IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsArray{ IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsArgs{...} }
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsArrayInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsArrayOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsArrayOutput
	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsArrayOutputWithContext(context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsArrayOutput
}

type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsArray []IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsInput

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsArray) ElementType() reflect.Type {
	return reflect.TypeOf((*[]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFields)(nil)).Elem()
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsArray) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsArrayOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsArrayOutput {
	return i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsArrayOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsArray) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsArrayOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsArrayOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsArrayOutput)
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsArray) ToOutput(ctx context.Context) pulumix.Output[[]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFields] {
	return pulumix.Output[[]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFields]{
		OutputState: i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsArrayOutputWithContext(ctx).OutputState,
	}
}

// A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFields)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsOutput) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFields] {
	return pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFields]{
		OutputState: o.OutputState,
	}
}

// The label key that the selector applies to.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsOutput) Key() pulumi.StringOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFields) string {
		return v.Key
	}).(pulumi.StringOutput)
}

// Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsOutput) Operator() pulumi.StringOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFields) string {
		return v.Operator
	}).(pulumi.StringOutput)
}

// An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsOutput) Values() pulumi.StringArrayOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFields) []string {
		return v.Values
	}).(pulumi.StringArrayOutput)
}

type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsArrayOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsArrayOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*[]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFields)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsArrayOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsArrayOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsArrayOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsArrayOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsArrayOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsArrayOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsArrayOutput) ToOutput(ctx context.Context) pulumix.Output[[]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFields] {
	return pulumix.Output[[]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFields]{
		OutputState: o.OutputState,
	}
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsArrayOutput) Index(i pulumi.IntInput) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsOutput {
	return pulumi.All(o, i).ApplyT(func(vs []interface{}) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFields {
		return vs[0].([]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFields)[vs[1].(int)]
	}).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsOutput)
}

// If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecution struct {
	// Required. A list of node selector terms. The terms are ORed.
	NodeSelectorTerms []IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTerms `pulumi:"nodeSelectorTerms"`
}

// IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionInput is an input type that accepts IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionArgs and IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionInput` via:
//
//	IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionArgs{...}
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput
	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutputWithContext(context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput
}

// If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionArgs struct {
	// Required. A list of node selector terms. The terms are ORed.
	NodeSelectorTerms IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsArrayInput `pulumi:"nodeSelectorTerms"`
}

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecution)(nil)).Elem()
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionArgs) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput {
	return i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionArgs) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput)
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionArgs) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecution] {
	return pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecution]{
		OutputState: i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutputWithContext(ctx).OutputState,
	}
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionArgs) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionPtrOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionPtrOutput {
	return i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionPtrOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionArgs) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput).ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionPtrOutputWithContext(ctx)
}

// IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionPtrInput is an input type that accepts IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionArgs, IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionPtr and IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionPtrOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionPtrInput` via:
//
//	        IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionArgs{...}
//
//	or:
//
//	        nil
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionPtrInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionPtrOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionPtrOutput
	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionPtrOutputWithContext(context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionPtrOutput
}

type issuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionPtrType IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionArgs

func IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionPtr(v *IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionArgs) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionPtrInput {
	return (*issuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionPtrType)(v)
}

func (*issuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecution)(nil)).Elem()
}

func (i *issuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionPtrType) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionPtrOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionPtrOutput {
	return i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionPtrOutputWithContext(context.Background())
}

func (i *issuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionPtrType) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionPtrOutput)
}

func (i *issuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionPtrType) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecution] {
	return pulumix.Output[*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecution]{
		OutputState: i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionPtrOutputWithContext(ctx).OutputState,
	}
}

// If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecution)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionPtrOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionPtrOutput {
	return o.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionPtrOutputWithContext(context.Background())
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecution) *IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecution {
		return &v
	}).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionPtrOutput)
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecution] {
	return pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecution]{
		OutputState: o.OutputState,
	}
}

// Required. A list of node selector terms. The terms are ORed.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput) NodeSelectorTerms() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsArrayOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecution) []IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTerms {
		return v.NodeSelectorTerms
	}).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsArrayOutput)
}

type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionPtrOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecution)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionPtrOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionPtrOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionPtrOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionPtrOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionPtrOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecution] {
	return pulumix.Output[*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecution]{
		OutputState: o.OutputState,
	}
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionPtrOutput) Elem() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecution) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecution {
		if v != nil {
			return *v
		}
		var ret IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecution
		return ret
	}).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput)
}

// Required. A list of node selector terms. The terms are ORed.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionPtrOutput) NodeSelectorTerms() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsArrayOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecution) []IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTerms {
		if v == nil {
			return nil
		}
		return v.NodeSelectorTerms
	}).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsArrayOutput)
}

// A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTerms struct {
	// A list of node selector requirements by node's labels.
	MatchExpressions []IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressions `pulumi:"matchExpressions"`
	// A list of node selector requirements by node's fields.
	MatchFields []IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFields `pulumi:"matchFields"`
}

// IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsInput is an input type that accepts IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsArgs and IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsInput` via:
//
//	IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsArgs{...}
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsOutput
	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsOutputWithContext(context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsOutput
}

// A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsArgs struct {
	// A list of node selector requirements by node's labels.
	MatchExpressions IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsArrayInput `pulumi:"matchExpressions"`
	// A list of node selector requirements by node's fields.
	MatchFields IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsArrayInput `pulumi:"matchFields"`
}

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTerms)(nil)).Elem()
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsArgs) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsOutput {
	return i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsArgs) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsOutput)
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsArgs) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTerms] {
	return pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTerms]{
		OutputState: i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsOutputWithContext(ctx).OutputState,
	}
}

// IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsArrayInput is an input type that accepts IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsArray and IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsArrayOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsArrayInput` via:
//
//	IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsArray{ IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsArgs{...} }
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsArrayInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsArrayOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsArrayOutput
	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsArrayOutputWithContext(context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsArrayOutput
}

type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsArray []IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsInput

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsArray) ElementType() reflect.Type {
	return reflect.TypeOf((*[]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTerms)(nil)).Elem()
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsArray) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsArrayOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsArrayOutput {
	return i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsArrayOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsArray) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsArrayOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsArrayOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsArrayOutput)
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsArray) ToOutput(ctx context.Context) pulumix.Output[[]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTerms] {
	return pulumix.Output[[]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTerms]{
		OutputState: i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsArrayOutputWithContext(ctx).OutputState,
	}
}

// A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTerms)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsOutput) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTerms] {
	return pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTerms]{
		OutputState: o.OutputState,
	}
}

// A list of node selector requirements by node's labels.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsOutput) MatchExpressions() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsArrayOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTerms) []IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressions {
		return v.MatchExpressions
	}).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsArrayOutput)
}

// A list of node selector requirements by node's fields.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsOutput) MatchFields() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsArrayOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTerms) []IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFields {
		return v.MatchFields
	}).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsArrayOutput)
}

type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsArrayOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsArrayOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*[]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTerms)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsArrayOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsArrayOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsArrayOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsArrayOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsArrayOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsArrayOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsArrayOutput) ToOutput(ctx context.Context) pulumix.Output[[]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTerms] {
	return pulumix.Output[[]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTerms]{
		OutputState: o.OutputState,
	}
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsArrayOutput) Index(i pulumi.IntInput) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsOutput {
	return pulumi.All(o, i).ApplyT(func(vs []interface{}) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTerms {
		return vs[0].([]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTerms)[vs[1].(int)]
	}).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsOutput)
}

// A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressions struct {
	// The label key that the selector applies to.
	Key string `pulumi:"key"`
	// Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
	Operator string `pulumi:"operator"`
	// An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.
	Values []string `pulumi:"values"`
}

// IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsInput is an input type that accepts IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsArgs and IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsInput` via:
//
//	IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsArgs{...}
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsOutput
	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsOutputWithContext(context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsOutput
}

// A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsArgs struct {
	// The label key that the selector applies to.
	Key pulumi.StringInput `pulumi:"key"`
	// Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
	Operator pulumi.StringInput `pulumi:"operator"`
	// An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.
	Values pulumi.StringArrayInput `pulumi:"values"`
}

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressions)(nil)).Elem()
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsArgs) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsOutput {
	return i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsArgs) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsOutput)
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsArgs) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressions] {
	return pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressions]{
		OutputState: i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsOutputWithContext(ctx).OutputState,
	}
}

// IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsArrayInput is an input type that accepts IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsArray and IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsArrayOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsArrayInput` via:
//
//	IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsArray{ IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsArgs{...} }
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsArrayInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsArrayOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsArrayOutput
	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsArrayOutputWithContext(context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsArrayOutput
}

type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsArray []IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsInput

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsArray) ElementType() reflect.Type {
	return reflect.TypeOf((*[]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressions)(nil)).Elem()
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsArray) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsArrayOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsArrayOutput {
	return i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsArrayOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsArray) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsArrayOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsArrayOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsArrayOutput)
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsArray) ToOutput(ctx context.Context) pulumix.Output[[]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressions] {
	return pulumix.Output[[]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressions]{
		OutputState: i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsArrayOutputWithContext(ctx).OutputState,
	}
}

// A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressions)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsOutput) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressions] {
	return pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressions]{
		OutputState: o.OutputState,
	}
}

// The label key that the selector applies to.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsOutput) Key() pulumi.StringOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressions) string {
		return v.Key
	}).(pulumi.StringOutput)
}

// Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsOutput) Operator() pulumi.StringOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressions) string {
		return v.Operator
	}).(pulumi.StringOutput)
}

// An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsOutput) Values() pulumi.StringArrayOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressions) []string {
		return v.Values
	}).(pulumi.StringArrayOutput)
}

type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsArrayOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsArrayOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*[]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressions)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsArrayOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsArrayOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsArrayOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsArrayOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsArrayOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsArrayOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsArrayOutput) ToOutput(ctx context.Context) pulumix.Output[[]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressions] {
	return pulumix.Output[[]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressions]{
		OutputState: o.OutputState,
	}
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsArrayOutput) Index(i pulumi.IntInput) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsOutput {
	return pulumi.All(o, i).ApplyT(func(vs []interface{}) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressions {
		return vs[0].([]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressions)[vs[1].(int)]
	}).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsOutput)
}

// A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFields struct {
	// The label key that the selector applies to.
	Key string `pulumi:"key"`
	// Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
	Operator string `pulumi:"operator"`
	// An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.
	Values []string `pulumi:"values"`
}

// IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsInput is an input type that accepts IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsArgs and IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsInput` via:
//
//	IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsArgs{...}
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsOutput
	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsOutputWithContext(context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsOutput
}

// A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsArgs struct {
	// The label key that the selector applies to.
	Key pulumi.StringInput `pulumi:"key"`
	// Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
	Operator pulumi.StringInput `pulumi:"operator"`
	// An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.
	Values pulumi.StringArrayInput `pulumi:"values"`
}

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFields)(nil)).Elem()
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsArgs) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsOutput {
	return i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsArgs) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsOutput)
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsArgs) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFields] {
	return pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFields]{
		OutputState: i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsOutputWithContext(ctx).OutputState,
	}
}

// IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsArrayInput is an input type that accepts IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsArray and IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsArrayOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsArrayInput` via:
//
//	IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsArray{ IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsArgs{...} }
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsArrayInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsArrayOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsArrayOutput
	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsArrayOutputWithContext(context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsArrayOutput
}

type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsArray []IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsInput

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsArray) ElementType() reflect.Type {
	return reflect.TypeOf((*[]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFields)(nil)).Elem()
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsArray) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsArrayOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsArrayOutput {
	return i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsArrayOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsArray) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsArrayOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsArrayOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsArrayOutput)
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsArray) ToOutput(ctx context.Context) pulumix.Output[[]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFields] {
	return pulumix.Output[[]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFields]{
		OutputState: i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsArrayOutputWithContext(ctx).OutputState,
	}
}

// A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFields)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsOutput) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFields] {
	return pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFields]{
		OutputState: o.OutputState,
	}
}

// The label key that the selector applies to.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsOutput) Key() pulumi.StringOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFields) string {
		return v.Key
	}).(pulumi.StringOutput)
}

// Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsOutput) Operator() pulumi.StringOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFields) string {
		return v.Operator
	}).(pulumi.StringOutput)
}

// An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsOutput) Values() pulumi.StringArrayOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFields) []string {
		return v.Values
	}).(pulumi.StringArrayOutput)
}

type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsArrayOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsArrayOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*[]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFields)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsArrayOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsArrayOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsArrayOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsArrayOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsArrayOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsArrayOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsArrayOutput) ToOutput(ctx context.Context) pulumix.Output[[]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFields] {
	return pulumix.Output[[]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFields]{
		OutputState: o.OutputState,
	}
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsArrayOutput) Index(i pulumi.IntInput) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsOutput {
	return pulumi.All(o, i).ApplyT(func(vs []interface{}) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFields {
		return vs[0].([]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFields)[vs[1].(int)]
	}).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsOutput)
}

// Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinity struct {
	// The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.
	PreferredDuringSchedulingIgnoredDuringExecution []IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecution `pulumi:"preferredDuringSchedulingIgnoredDuringExecution"`
	// If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.
	RequiredDuringSchedulingIgnoredDuringExecution []IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecution `pulumi:"requiredDuringSchedulingIgnoredDuringExecution"`
}

// IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityInput is an input type that accepts IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityArgs and IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityInput` via:
//
//	IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityArgs{...}
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityOutput
	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityOutputWithContext(context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityOutput
}

// Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityArgs struct {
	// The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.
	PreferredDuringSchedulingIgnoredDuringExecution IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayInput `pulumi:"preferredDuringSchedulingIgnoredDuringExecution"`
	// If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.
	RequiredDuringSchedulingIgnoredDuringExecution IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayInput `pulumi:"requiredDuringSchedulingIgnoredDuringExecution"`
}

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinity)(nil)).Elem()
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityArgs) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityOutput {
	return i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityArgs) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityOutput)
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityArgs) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinity] {
	return pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinity]{
		OutputState: i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityOutputWithContext(ctx).OutputState,
	}
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityArgs) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPtrOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPtrOutput {
	return i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPtrOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityArgs) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityOutput).ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPtrOutputWithContext(ctx)
}

// IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPtrInput is an input type that accepts IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityArgs, IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPtr and IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPtrOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPtrInput` via:
//
//	        IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityArgs{...}
//
//	or:
//
//	        nil
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPtrInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPtrOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPtrOutput
	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPtrOutputWithContext(context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPtrOutput
}

type issuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPtrType IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityArgs

func IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPtr(v *IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityArgs) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPtrInput {
	return (*issuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPtrType)(v)
}

func (*issuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinity)(nil)).Elem()
}

func (i *issuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPtrType) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPtrOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPtrOutput {
	return i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPtrOutputWithContext(context.Background())
}

func (i *issuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPtrType) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPtrOutput)
}

func (i *issuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPtrType) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinity] {
	return pulumix.Output[*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinity]{
		OutputState: i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPtrOutputWithContext(ctx).OutputState,
	}
}

// Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinity)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPtrOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPtrOutput {
	return o.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPtrOutputWithContext(context.Background())
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinity) *IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinity {
		return &v
	}).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPtrOutput)
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityOutput) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinity] {
	return pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinity]{
		OutputState: o.OutputState,
	}
}

// The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityOutput) PreferredDuringSchedulingIgnoredDuringExecution() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinity) []IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecution {
		return v.PreferredDuringSchedulingIgnoredDuringExecution
	}).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput)
}

// If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityOutput) RequiredDuringSchedulingIgnoredDuringExecution() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinity) []IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecution {
		return v.RequiredDuringSchedulingIgnoredDuringExecution
	}).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayOutput)
}

type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPtrOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinity)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPtrOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPtrOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPtrOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPtrOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPtrOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinity] {
	return pulumix.Output[*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinity]{
		OutputState: o.OutputState,
	}
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPtrOutput) Elem() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinity) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinity {
		if v != nil {
			return *v
		}
		var ret IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinity
		return ret
	}).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityOutput)
}

// The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPtrOutput) PreferredDuringSchedulingIgnoredDuringExecution() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinity) []IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecution {
		if v == nil {
			return nil
		}
		return v.PreferredDuringSchedulingIgnoredDuringExecution
	}).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput)
}

// If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPtrOutput) RequiredDuringSchedulingIgnoredDuringExecution() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinity) []IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecution {
		if v == nil {
			return nil
		}
		return v.RequiredDuringSchedulingIgnoredDuringExecution
	}).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayOutput)
}

// The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecution struct {
	// Required. A pod affinity term, associated with the corresponding weight.
	PodAffinityTerm IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm `pulumi:"podAffinityTerm"`
	// weight associated with matching the corresponding podAffinityTerm, in the range 1-100.
	Weight int `pulumi:"weight"`
}

// IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionInput is an input type that accepts IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionArgs and IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionInput` via:
//
//	IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionArgs{...}
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput
	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutputWithContext(context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput
}

// The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionArgs struct {
	// Required. A pod affinity term, associated with the corresponding weight.
	PodAffinityTerm IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermInput `pulumi:"podAffinityTerm"`
	// weight associated with matching the corresponding podAffinityTerm, in the range 1-100.
	Weight pulumi.IntInput `pulumi:"weight"`
}

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecution)(nil)).Elem()
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionArgs) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput {
	return i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionArgs) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput)
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionArgs) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecution] {
	return pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecution]{
		OutputState: i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutputWithContext(ctx).OutputState,
	}
}

// IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayInput is an input type that accepts IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionArray and IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayInput` via:
//
//	IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionArray{ IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionArgs{...} }
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput
	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutputWithContext(context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput
}

type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionArray []IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionInput

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionArray) ElementType() reflect.Type {
	return reflect.TypeOf((*[]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecution)(nil)).Elem()
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionArray) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput {
	return i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionArray) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput)
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionArray) ToOutput(ctx context.Context) pulumix.Output[[]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecution] {
	return pulumix.Output[[]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecution]{
		OutputState: i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutputWithContext(ctx).OutputState,
	}
}

// The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecution)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecution] {
	return pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecution]{
		OutputState: o.OutputState,
	}
}

// Required. A pod affinity term, associated with the corresponding weight.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput) PodAffinityTerm() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecution) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm {
		return v.PodAffinityTerm
	}).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermOutput)
}

// weight associated with matching the corresponding podAffinityTerm, in the range 1-100.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput) Weight() pulumi.IntOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecution) int {
		return v.Weight
	}).(pulumi.IntOutput)
}

type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*[]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecution)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput) ToOutput(ctx context.Context) pulumix.Output[[]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecution] {
	return pulumix.Output[[]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecution]{
		OutputState: o.OutputState,
	}
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput) Index(i pulumi.IntInput) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput {
	return pulumi.All(o, i).ApplyT(func(vs []interface{}) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecution {
		return vs[0].([]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecution)[vs[1].(int)]
	}).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput)
}

// Required. A pod affinity term, associated with the corresponding weight.
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm struct {
	// A label query over a set of resources, in this case pods.
	LabelSelector *IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector `pulumi:"labelSelector"`
	// A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. This field is beta-level and is only honored when PodAffinityNamespaceSelector feature is enabled.
	NamespaceSelector *IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector `pulumi:"namespaceSelector"`
	// namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace"
	Namespaces []string `pulumi:"namespaces"`
	// This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.
	TopologyKey string `pulumi:"topologyKey"`
}

// IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermInput is an input type that accepts IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermArgs and IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermInput` via:
//
//	IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermArgs{...}
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermOutput
	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermOutputWithContext(context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermOutput
}

// Required. A pod affinity term, associated with the corresponding weight.
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermArgs struct {
	// A label query over a set of resources, in this case pods.
	LabelSelector IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrInput `pulumi:"labelSelector"`
	// A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. This field is beta-level and is only honored when PodAffinityNamespaceSelector feature is enabled.
	NamespaceSelector IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrInput `pulumi:"namespaceSelector"`
	// namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace"
	Namespaces pulumi.StringArrayInput `pulumi:"namespaces"`
	// This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.
	TopologyKey pulumi.StringInput `pulumi:"topologyKey"`
}

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm)(nil)).Elem()
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermArgs) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermOutput {
	return i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermArgs) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermOutput)
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermArgs) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm] {
	return pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm]{
		OutputState: i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermOutputWithContext(ctx).OutputState,
	}
}

// Required. A pod affinity term, associated with the corresponding weight.
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermOutput) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm] {
	return pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm]{
		OutputState: o.OutputState,
	}
}

// A label query over a set of resources, in this case pods.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermOutput) LabelSelector() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm) *IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector {
		return v.LabelSelector
	}).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput)
}

// A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. This field is beta-level and is only honored when PodAffinityNamespaceSelector feature is enabled.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermOutput) NamespaceSelector() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm) *IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector {
		return v.NamespaceSelector
	}).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput)
}

// namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace"
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermOutput) Namespaces() pulumi.StringArrayOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm) []string {
		return v.Namespaces
	}).(pulumi.StringArrayOutput)
}

// This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermOutput) TopologyKey() pulumi.StringOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm) string {
		return v.TopologyKey
	}).(pulumi.StringOutput)
}

// A label query over a set of resources, in this case pods.
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector struct {
	// matchExpressions is a list of label selector requirements. The requirements are ANDed.
	MatchExpressions []IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressions `pulumi:"matchExpressions"`
	// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
	MatchLabels map[string]string `pulumi:"matchLabels"`
}

// IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorInput is an input type that accepts IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorArgs and IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorInput` via:
//
//	IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorArgs{...}
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutput
	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutputWithContext(context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutput
}

// A label query over a set of resources, in this case pods.
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorArgs struct {
	// matchExpressions is a list of label selector requirements. The requirements are ANDed.
	MatchExpressions IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayInput `pulumi:"matchExpressions"`
	// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
	MatchLabels pulumi.StringMapInput `pulumi:"matchLabels"`
}

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector)(nil)).Elem()
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorArgs) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutput {
	return i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorArgs) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutput)
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorArgs) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector] {
	return pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector]{
		OutputState: i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutputWithContext(ctx).OutputState,
	}
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorArgs) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput {
	return i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorArgs) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutput).ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutputWithContext(ctx)
}

// IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrInput is an input type that accepts IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorArgs, IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtr and IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrInput` via:
//
//	        IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorArgs{...}
//
//	or:
//
//	        nil
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput
	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutputWithContext(context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput
}

type issuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrType IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorArgs

func IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtr(v *IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorArgs) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrInput {
	return (*issuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrType)(v)
}

func (*issuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector)(nil)).Elem()
}

func (i *issuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrType) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput {
	return i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutputWithContext(context.Background())
}

func (i *issuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrType) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput)
}

func (i *issuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrType) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector] {
	return pulumix.Output[*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector]{
		OutputState: i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutputWithContext(ctx).OutputState,
	}
}

// A label query over a set of resources, in this case pods.
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput {
	return o.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutputWithContext(context.Background())
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector) *IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector {
		return &v
	}).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput)
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutput) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector] {
	return pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector]{
		OutputState: o.OutputState,
	}
}

// matchExpressions is a list of label selector requirements. The requirements are ANDed.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutput) MatchExpressions() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector) []IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressions {
		return v.MatchExpressions
	}).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayOutput)
}

// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutput) MatchLabels() pulumi.StringMapOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector) map[string]string {
		return v.MatchLabels
	}).(pulumi.StringMapOutput)
}

type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector] {
	return pulumix.Output[*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector]{
		OutputState: o.OutputState,
	}
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput) Elem() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector {
		if v != nil {
			return *v
		}
		var ret IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector
		return ret
	}).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutput)
}

// matchExpressions is a list of label selector requirements. The requirements are ANDed.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput) MatchExpressions() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector) []IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressions {
		if v == nil {
			return nil
		}
		return v.MatchExpressions
	}).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayOutput)
}

// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput) MatchLabels() pulumi.StringMapOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector) map[string]string {
		if v == nil {
			return nil
		}
		return v.MatchLabels
	}).(pulumi.StringMapOutput)
}

// A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressions struct {
	// key is the label key that the selector applies to.
	Key string `pulumi:"key"`
	// operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
	Operator string `pulumi:"operator"`
	// values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
	Values []string `pulumi:"values"`
}

// IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsInput is an input type that accepts IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArgs and IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsInput` via:
//
//	IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArgs{...}
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsOutput
	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsOutputWithContext(context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsOutput
}

// A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArgs struct {
	// key is the label key that the selector applies to.
	Key pulumi.StringInput `pulumi:"key"`
	// operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
	Operator pulumi.StringInput `pulumi:"operator"`
	// values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
	Values pulumi.StringArrayInput `pulumi:"values"`
}

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressions)(nil)).Elem()
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArgs) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsOutput {
	return i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArgs) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsOutput)
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArgs) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressions] {
	return pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressions]{
		OutputState: i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsOutputWithContext(ctx).OutputState,
	}
}

// IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayInput is an input type that accepts IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArray and IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayInput` via:
//
//	IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArray{ IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArgs{...} }
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayOutput
	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayOutputWithContext(context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayOutput
}

type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArray []IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsInput

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArray) ElementType() reflect.Type {
	return reflect.TypeOf((*[]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressions)(nil)).Elem()
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArray) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayOutput {
	return i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArray) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayOutput)
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArray) ToOutput(ctx context.Context) pulumix.Output[[]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressions] {
	return pulumix.Output[[]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressions]{
		OutputState: i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayOutputWithContext(ctx).OutputState,
	}
}

// A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressions)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsOutput) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressions] {
	return pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressions]{
		OutputState: o.OutputState,
	}
}

// key is the label key that the selector applies to.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsOutput) Key() pulumi.StringOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressions) string {
		return v.Key
	}).(pulumi.StringOutput)
}

// operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsOutput) Operator() pulumi.StringOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressions) string {
		return v.Operator
	}).(pulumi.StringOutput)
}

// values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsOutput) Values() pulumi.StringArrayOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressions) []string {
		return v.Values
	}).(pulumi.StringArrayOutput)
}

type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*[]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressions)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayOutput) ToOutput(ctx context.Context) pulumix.Output[[]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressions] {
	return pulumix.Output[[]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressions]{
		OutputState: o.OutputState,
	}
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayOutput) Index(i pulumi.IntInput) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsOutput {
	return pulumi.All(o, i).ApplyT(func(vs []interface{}) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressions {
		return vs[0].([]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressions)[vs[1].(int)]
	}).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsOutput)
}

// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchLabels struct {
}

// A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. This field is beta-level and is only honored when PodAffinityNamespaceSelector feature is enabled.
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector struct {
	// matchExpressions is a list of label selector requirements. The requirements are ANDed.
	MatchExpressions []IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressions `pulumi:"matchExpressions"`
	// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
	MatchLabels map[string]string `pulumi:"matchLabels"`
}

// IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorInput is an input type that accepts IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorArgs and IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorInput` via:
//
//	IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorArgs{...}
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutput
	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutputWithContext(context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutput
}

// A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. This field is beta-level and is only honored when PodAffinityNamespaceSelector feature is enabled.
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorArgs struct {
	// matchExpressions is a list of label selector requirements. The requirements are ANDed.
	MatchExpressions IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayInput `pulumi:"matchExpressions"`
	// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
	MatchLabels pulumi.StringMapInput `pulumi:"matchLabels"`
}

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector)(nil)).Elem()
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorArgs) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutput {
	return i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorArgs) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutput)
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorArgs) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector] {
	return pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector]{
		OutputState: i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutputWithContext(ctx).OutputState,
	}
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorArgs) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput {
	return i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorArgs) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutput).ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutputWithContext(ctx)
}

// IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrInput is an input type that accepts IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorArgs, IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtr and IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrInput` via:
//
//	        IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorArgs{...}
//
//	or:
//
//	        nil
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput
	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutputWithContext(context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput
}

type issuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrType IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorArgs

func IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtr(v *IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorArgs) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrInput {
	return (*issuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrType)(v)
}

func (*issuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector)(nil)).Elem()
}

func (i *issuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrType) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput {
	return i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutputWithContext(context.Background())
}

func (i *issuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrType) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput)
}

func (i *issuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrType) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector] {
	return pulumix.Output[*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector]{
		OutputState: i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutputWithContext(ctx).OutputState,
	}
}

// A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. This field is beta-level and is only honored when PodAffinityNamespaceSelector feature is enabled.
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput {
	return o.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutputWithContext(context.Background())
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector) *IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector {
		return &v
	}).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput)
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutput) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector] {
	return pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector]{
		OutputState: o.OutputState,
	}
}

// matchExpressions is a list of label selector requirements. The requirements are ANDed.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutput) MatchExpressions() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector) []IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressions {
		return v.MatchExpressions
	}).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayOutput)
}

// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutput) MatchLabels() pulumi.StringMapOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector) map[string]string {
		return v.MatchLabels
	}).(pulumi.StringMapOutput)
}

type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector] {
	return pulumix.Output[*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector]{
		OutputState: o.OutputState,
	}
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput) Elem() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector {
		if v != nil {
			return *v
		}
		var ret IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector
		return ret
	}).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutput)
}

// matchExpressions is a list of label selector requirements. The requirements are ANDed.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput) MatchExpressions() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector) []IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressions {
		if v == nil {
			return nil
		}
		return v.MatchExpressions
	}).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayOutput)
}

// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput) MatchLabels() pulumi.StringMapOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector) map[string]string {
		if v == nil {
			return nil
		}
		return v.MatchLabels
	}).(pulumi.StringMapOutput)
}

// A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressions struct {
	// key is the label key that the selector applies to.
	Key string `pulumi:"key"`
	// operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
	Operator string `pulumi:"operator"`
	// values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
	Values []string `pulumi:"values"`
}

// IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsInput is an input type that accepts IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArgs and IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsInput` via:
//
//	IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArgs{...}
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsOutput
	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsOutputWithContext(context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsOutput
}

// A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArgs struct {
	// key is the label key that the selector applies to.
	Key pulumi.StringInput `pulumi:"key"`
	// operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
	Operator pulumi.StringInput `pulumi:"operator"`
	// values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
	Values pulumi.StringArrayInput `pulumi:"values"`
}

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressions)(nil)).Elem()
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArgs) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsOutput {
	return i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArgs) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsOutput)
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArgs) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressions] {
	return pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressions]{
		OutputState: i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsOutputWithContext(ctx).OutputState,
	}
}

// IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayInput is an input type that accepts IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArray and IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayInput` via:
//
//	IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArray{ IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArgs{...} }
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayOutput
	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayOutputWithContext(context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayOutput
}

type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArray []IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsInput

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArray) ElementType() reflect.Type {
	return reflect.TypeOf((*[]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressions)(nil)).Elem()
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArray) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayOutput {
	return i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArray) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayOutput)
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArray) ToOutput(ctx context.Context) pulumix.Output[[]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressions] {
	return pulumix.Output[[]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressions]{
		OutputState: i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayOutputWithContext(ctx).OutputState,
	}
}

// A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressions)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsOutput) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressions] {
	return pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressions]{
		OutputState: o.OutputState,
	}
}

// key is the label key that the selector applies to.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsOutput) Key() pulumi.StringOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressions) string {
		return v.Key
	}).(pulumi.StringOutput)
}

// operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsOutput) Operator() pulumi.StringOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressions) string {
		return v.Operator
	}).(pulumi.StringOutput)
}

// values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsOutput) Values() pulumi.StringArrayOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressions) []string {
		return v.Values
	}).(pulumi.StringArrayOutput)
}

type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*[]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressions)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayOutput) ToOutput(ctx context.Context) pulumix.Output[[]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressions] {
	return pulumix.Output[[]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressions]{
		OutputState: o.OutputState,
	}
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayOutput) Index(i pulumi.IntInput) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsOutput {
	return pulumi.All(o, i).ApplyT(func(vs []interface{}) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressions {
		return vs[0].([]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressions)[vs[1].(int)]
	}).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsOutput)
}

// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchLabels struct {
}

// Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key <topologyKey> matches that of any node on which a pod of the set of pods is running
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecution struct {
	// A label query over a set of resources, in this case pods.
	LabelSelector *IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector `pulumi:"labelSelector"`
	// A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. This field is beta-level and is only honored when PodAffinityNamespaceSelector feature is enabled.
	NamespaceSelector *IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector `pulumi:"namespaceSelector"`
	// namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace"
	Namespaces []string `pulumi:"namespaces"`
	// This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.
	TopologyKey string `pulumi:"topologyKey"`
}

// IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionInput is an input type that accepts IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionArgs and IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionInput` via:
//
//	IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionArgs{...}
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput
	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutputWithContext(context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput
}

// Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key <topologyKey> matches that of any node on which a pod of the set of pods is running
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionArgs struct {
	// A label query over a set of resources, in this case pods.
	LabelSelector IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrInput `pulumi:"labelSelector"`
	// A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. This field is beta-level and is only honored when PodAffinityNamespaceSelector feature is enabled.
	NamespaceSelector IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrInput `pulumi:"namespaceSelector"`
	// namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace"
	Namespaces pulumi.StringArrayInput `pulumi:"namespaces"`
	// This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.
	TopologyKey pulumi.StringInput `pulumi:"topologyKey"`
}

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecution)(nil)).Elem()
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionArgs) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput {
	return i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionArgs) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput)
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionArgs) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecution] {
	return pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecution]{
		OutputState: i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutputWithContext(ctx).OutputState,
	}
}

// IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayInput is an input type that accepts IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionArray and IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayInput` via:
//
//	IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionArray{ IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionArgs{...} }
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayOutput
	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayOutputWithContext(context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayOutput
}

type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionArray []IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionInput

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionArray) ElementType() reflect.Type {
	return reflect.TypeOf((*[]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecution)(nil)).Elem()
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionArray) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayOutput {
	return i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionArray) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayOutput)
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionArray) ToOutput(ctx context.Context) pulumix.Output[[]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecution] {
	return pulumix.Output[[]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecution]{
		OutputState: i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayOutputWithContext(ctx).OutputState,
	}
}

// Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key <topologyKey> matches that of any node on which a pod of the set of pods is running
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecution)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecution] {
	return pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecution]{
		OutputState: o.OutputState,
	}
}

// A label query over a set of resources, in this case pods.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput) LabelSelector() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecution) *IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector {
		return v.LabelSelector
	}).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput)
}

// A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. This field is beta-level and is only honored when PodAffinityNamespaceSelector feature is enabled.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput) NamespaceSelector() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecution) *IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector {
		return v.NamespaceSelector
	}).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput)
}

// namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace"
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput) Namespaces() pulumi.StringArrayOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecution) []string {
		return v.Namespaces
	}).(pulumi.StringArrayOutput)
}

// This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput) TopologyKey() pulumi.StringOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecution) string {
		return v.TopologyKey
	}).(pulumi.StringOutput)
}

type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*[]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecution)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayOutput) ToOutput(ctx context.Context) pulumix.Output[[]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecution] {
	return pulumix.Output[[]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecution]{
		OutputState: o.OutputState,
	}
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayOutput) Index(i pulumi.IntInput) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput {
	return pulumi.All(o, i).ApplyT(func(vs []interface{}) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecution {
		return vs[0].([]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecution)[vs[1].(int)]
	}).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput)
}

// A label query over a set of resources, in this case pods.
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector struct {
	// matchExpressions is a list of label selector requirements. The requirements are ANDed.
	MatchExpressions []IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressions `pulumi:"matchExpressions"`
	// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
	MatchLabels map[string]string `pulumi:"matchLabels"`
}

// IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorInput is an input type that accepts IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorArgs and IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorInput` via:
//
//	IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorArgs{...}
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutput
	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutputWithContext(context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutput
}

// A label query over a set of resources, in this case pods.
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorArgs struct {
	// matchExpressions is a list of label selector requirements. The requirements are ANDed.
	MatchExpressions IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayInput `pulumi:"matchExpressions"`
	// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
	MatchLabels pulumi.StringMapInput `pulumi:"matchLabels"`
}

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector)(nil)).Elem()
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorArgs) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutput {
	return i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorArgs) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutput)
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorArgs) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector] {
	return pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector]{
		OutputState: i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutputWithContext(ctx).OutputState,
	}
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorArgs) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput {
	return i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorArgs) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutput).ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutputWithContext(ctx)
}

// IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrInput is an input type that accepts IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorArgs, IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtr and IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrInput` via:
//
//	        IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorArgs{...}
//
//	or:
//
//	        nil
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput
	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutputWithContext(context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput
}

type issuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrType IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorArgs

func IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtr(v *IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorArgs) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrInput {
	return (*issuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrType)(v)
}

func (*issuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector)(nil)).Elem()
}

func (i *issuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrType) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput {
	return i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutputWithContext(context.Background())
}

func (i *issuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrType) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput)
}

func (i *issuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrType) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector] {
	return pulumix.Output[*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector]{
		OutputState: i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutputWithContext(ctx).OutputState,
	}
}

// A label query over a set of resources, in this case pods.
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput {
	return o.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutputWithContext(context.Background())
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector) *IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector {
		return &v
	}).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput)
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutput) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector] {
	return pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector]{
		OutputState: o.OutputState,
	}
}

// matchExpressions is a list of label selector requirements. The requirements are ANDed.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutput) MatchExpressions() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector) []IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressions {
		return v.MatchExpressions
	}).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayOutput)
}

// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutput) MatchLabels() pulumi.StringMapOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector) map[string]string {
		return v.MatchLabels
	}).(pulumi.StringMapOutput)
}

type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector] {
	return pulumix.Output[*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector]{
		OutputState: o.OutputState,
	}
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput) Elem() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector {
		if v != nil {
			return *v
		}
		var ret IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector
		return ret
	}).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutput)
}

// matchExpressions is a list of label selector requirements. The requirements are ANDed.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput) MatchExpressions() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector) []IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressions {
		if v == nil {
			return nil
		}
		return v.MatchExpressions
	}).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayOutput)
}

// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput) MatchLabels() pulumi.StringMapOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector) map[string]string {
		if v == nil {
			return nil
		}
		return v.MatchLabels
	}).(pulumi.StringMapOutput)
}

// A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressions struct {
	// key is the label key that the selector applies to.
	Key string `pulumi:"key"`
	// operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
	Operator string `pulumi:"operator"`
	// values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
	Values []string `pulumi:"values"`
}

// IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsInput is an input type that accepts IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArgs and IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsInput` via:
//
//	IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArgs{...}
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsOutput
	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsOutputWithContext(context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsOutput
}

// A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArgs struct {
	// key is the label key that the selector applies to.
	Key pulumi.StringInput `pulumi:"key"`
	// operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
	Operator pulumi.StringInput `pulumi:"operator"`
	// values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
	Values pulumi.StringArrayInput `pulumi:"values"`
}

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressions)(nil)).Elem()
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArgs) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsOutput {
	return i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArgs) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsOutput)
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArgs) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressions] {
	return pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressions]{
		OutputState: i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsOutputWithContext(ctx).OutputState,
	}
}

// IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayInput is an input type that accepts IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArray and IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayInput` via:
//
//	IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArray{ IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArgs{...} }
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayOutput
	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayOutputWithContext(context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayOutput
}

type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArray []IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsInput

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArray) ElementType() reflect.Type {
	return reflect.TypeOf((*[]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressions)(nil)).Elem()
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArray) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayOutput {
	return i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArray) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayOutput)
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArray) ToOutput(ctx context.Context) pulumix.Output[[]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressions] {
	return pulumix.Output[[]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressions]{
		OutputState: i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayOutputWithContext(ctx).OutputState,
	}
}

// A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressions)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsOutput) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressions] {
	return pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressions]{
		OutputState: o.OutputState,
	}
}

// key is the label key that the selector applies to.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsOutput) Key() pulumi.StringOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressions) string {
		return v.Key
	}).(pulumi.StringOutput)
}

// operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsOutput) Operator() pulumi.StringOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressions) string {
		return v.Operator
	}).(pulumi.StringOutput)
}

// values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsOutput) Values() pulumi.StringArrayOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressions) []string {
		return v.Values
	}).(pulumi.StringArrayOutput)
}

type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*[]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressions)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayOutput) ToOutput(ctx context.Context) pulumix.Output[[]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressions] {
	return pulumix.Output[[]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressions]{
		OutputState: o.OutputState,
	}
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayOutput) Index(i pulumi.IntInput) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsOutput {
	return pulumi.All(o, i).ApplyT(func(vs []interface{}) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressions {
		return vs[0].([]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressions)[vs[1].(int)]
	}).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsOutput)
}

// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchLabels struct {
}

// A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. This field is beta-level and is only honored when PodAffinityNamespaceSelector feature is enabled.
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector struct {
	// matchExpressions is a list of label selector requirements. The requirements are ANDed.
	MatchExpressions []IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressions `pulumi:"matchExpressions"`
	// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
	MatchLabels map[string]string `pulumi:"matchLabels"`
}

// IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorInput is an input type that accepts IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorArgs and IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorInput` via:
//
//	IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorArgs{...}
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutput
	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutputWithContext(context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutput
}

// A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. This field is beta-level and is only honored when PodAffinityNamespaceSelector feature is enabled.
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorArgs struct {
	// matchExpressions is a list of label selector requirements. The requirements are ANDed.
	MatchExpressions IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayInput `pulumi:"matchExpressions"`
	// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
	MatchLabels pulumi.StringMapInput `pulumi:"matchLabels"`
}

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector)(nil)).Elem()
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorArgs) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutput {
	return i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorArgs) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutput)
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorArgs) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector] {
	return pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector]{
		OutputState: i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutputWithContext(ctx).OutputState,
	}
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorArgs) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput {
	return i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorArgs) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutput).ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutputWithContext(ctx)
}

// IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrInput is an input type that accepts IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorArgs, IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtr and IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrInput` via:
//
//	        IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorArgs{...}
//
//	or:
//
//	        nil
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput
	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutputWithContext(context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput
}

type issuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrType IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorArgs

func IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtr(v *IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorArgs) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrInput {
	return (*issuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrType)(v)
}

func (*issuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector)(nil)).Elem()
}

func (i *issuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrType) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput {
	return i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutputWithContext(context.Background())
}

func (i *issuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrType) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput)
}

func (i *issuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrType) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector] {
	return pulumix.Output[*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector]{
		OutputState: i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutputWithContext(ctx).OutputState,
	}
}

// A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. This field is beta-level and is only honored when PodAffinityNamespaceSelector feature is enabled.
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput {
	return o.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutputWithContext(context.Background())
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector) *IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector {
		return &v
	}).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput)
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutput) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector] {
	return pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector]{
		OutputState: o.OutputState,
	}
}

// matchExpressions is a list of label selector requirements. The requirements are ANDed.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutput) MatchExpressions() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector) []IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressions {
		return v.MatchExpressions
	}).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayOutput)
}

// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutput) MatchLabels() pulumi.StringMapOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector) map[string]string {
		return v.MatchLabels
	}).(pulumi.StringMapOutput)
}

type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector] {
	return pulumix.Output[*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector]{
		OutputState: o.OutputState,
	}
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput) Elem() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector {
		if v != nil {
			return *v
		}
		var ret IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector
		return ret
	}).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutput)
}

// matchExpressions is a list of label selector requirements. The requirements are ANDed.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput) MatchExpressions() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector) []IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressions {
		if v == nil {
			return nil
		}
		return v.MatchExpressions
	}).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayOutput)
}

// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput) MatchLabels() pulumi.StringMapOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector) map[string]string {
		if v == nil {
			return nil
		}
		return v.MatchLabels
	}).(pulumi.StringMapOutput)
}

// A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressions struct {
	// key is the label key that the selector applies to.
	Key string `pulumi:"key"`
	// operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
	Operator string `pulumi:"operator"`
	// values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
	Values []string `pulumi:"values"`
}

// IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsInput is an input type that accepts IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArgs and IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsInput` via:
//
//	IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArgs{...}
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsOutput
	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsOutputWithContext(context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsOutput
}

// A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArgs struct {
	// key is the label key that the selector applies to.
	Key pulumi.StringInput `pulumi:"key"`
	// operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
	Operator pulumi.StringInput `pulumi:"operator"`
	// values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
	Values pulumi.StringArrayInput `pulumi:"values"`
}

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressions)(nil)).Elem()
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArgs) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsOutput {
	return i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArgs) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsOutput)
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArgs) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressions] {
	return pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressions]{
		OutputState: i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsOutputWithContext(ctx).OutputState,
	}
}

// IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayInput is an input type that accepts IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArray and IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayInput` via:
//
//	IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArray{ IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArgs{...} }
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayOutput
	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayOutputWithContext(context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayOutput
}

type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArray []IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsInput

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArray) ElementType() reflect.Type {
	return reflect.TypeOf((*[]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressions)(nil)).Elem()
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArray) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayOutput {
	return i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArray) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayOutput)
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArray) ToOutput(ctx context.Context) pulumix.Output[[]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressions] {
	return pulumix.Output[[]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressions]{
		OutputState: i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayOutputWithContext(ctx).OutputState,
	}
}

// A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressions)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsOutput) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressions] {
	return pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressions]{
		OutputState: o.OutputState,
	}
}

// key is the label key that the selector applies to.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsOutput) Key() pulumi.StringOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressions) string {
		return v.Key
	}).(pulumi.StringOutput)
}

// operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsOutput) Operator() pulumi.StringOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressions) string {
		return v.Operator
	}).(pulumi.StringOutput)
}

// values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsOutput) Values() pulumi.StringArrayOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressions) []string {
		return v.Values
	}).(pulumi.StringArrayOutput)
}

type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*[]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressions)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayOutput) ToOutput(ctx context.Context) pulumix.Output[[]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressions] {
	return pulumix.Output[[]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressions]{
		OutputState: o.OutputState,
	}
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayOutput) Index(i pulumi.IntInput) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsOutput {
	return pulumi.All(o, i).ApplyT(func(vs []interface{}) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressions {
		return vs[0].([]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressions)[vs[1].(int)]
	}).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsOutput)
}

// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchLabels struct {
}

// Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinity struct {
	// The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.
	PreferredDuringSchedulingIgnoredDuringExecution []IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecution `pulumi:"preferredDuringSchedulingIgnoredDuringExecution"`
	// If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.
	RequiredDuringSchedulingIgnoredDuringExecution []IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecution `pulumi:"requiredDuringSchedulingIgnoredDuringExecution"`
}

// IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityInput is an input type that accepts IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityArgs and IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityInput` via:
//
//	IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityArgs{...}
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityOutput
	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityOutputWithContext(context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityOutput
}

// Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityArgs struct {
	// The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.
	PreferredDuringSchedulingIgnoredDuringExecution IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayInput `pulumi:"preferredDuringSchedulingIgnoredDuringExecution"`
	// If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.
	RequiredDuringSchedulingIgnoredDuringExecution IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayInput `pulumi:"requiredDuringSchedulingIgnoredDuringExecution"`
}

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinity)(nil)).Elem()
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityArgs) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityOutput {
	return i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityArgs) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityOutput)
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityArgs) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinity] {
	return pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinity]{
		OutputState: i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityOutputWithContext(ctx).OutputState,
	}
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityArgs) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPtrOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPtrOutput {
	return i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPtrOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityArgs) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityOutput).ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPtrOutputWithContext(ctx)
}

// IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPtrInput is an input type that accepts IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityArgs, IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPtr and IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPtrOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPtrInput` via:
//
//	        IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityArgs{...}
//
//	or:
//
//	        nil
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPtrInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPtrOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPtrOutput
	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPtrOutputWithContext(context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPtrOutput
}

type issuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPtrType IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityArgs

func IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPtr(v *IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityArgs) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPtrInput {
	return (*issuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPtrType)(v)
}

func (*issuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinity)(nil)).Elem()
}

func (i *issuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPtrType) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPtrOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPtrOutput {
	return i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPtrOutputWithContext(context.Background())
}

func (i *issuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPtrType) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPtrOutput)
}

func (i *issuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPtrType) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinity] {
	return pulumix.Output[*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinity]{
		OutputState: i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPtrOutputWithContext(ctx).OutputState,
	}
}

// Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinity)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPtrOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPtrOutput {
	return o.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPtrOutputWithContext(context.Background())
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinity) *IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinity {
		return &v
	}).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPtrOutput)
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityOutput) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinity] {
	return pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinity]{
		OutputState: o.OutputState,
	}
}

// The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityOutput) PreferredDuringSchedulingIgnoredDuringExecution() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinity) []IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecution {
		return v.PreferredDuringSchedulingIgnoredDuringExecution
	}).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput)
}

// If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityOutput) RequiredDuringSchedulingIgnoredDuringExecution() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinity) []IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecution {
		return v.RequiredDuringSchedulingIgnoredDuringExecution
	}).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayOutput)
}

type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPtrOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinity)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPtrOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPtrOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPtrOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPtrOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPtrOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinity] {
	return pulumix.Output[*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinity]{
		OutputState: o.OutputState,
	}
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPtrOutput) Elem() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinity) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinity {
		if v != nil {
			return *v
		}
		var ret IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinity
		return ret
	}).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityOutput)
}

// The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPtrOutput) PreferredDuringSchedulingIgnoredDuringExecution() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinity) []IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecution {
		if v == nil {
			return nil
		}
		return v.PreferredDuringSchedulingIgnoredDuringExecution
	}).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput)
}

// If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPtrOutput) RequiredDuringSchedulingIgnoredDuringExecution() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinity) []IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecution {
		if v == nil {
			return nil
		}
		return v.RequiredDuringSchedulingIgnoredDuringExecution
	}).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayOutput)
}

// The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecution struct {
	// Required. A pod affinity term, associated with the corresponding weight.
	PodAffinityTerm IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm `pulumi:"podAffinityTerm"`
	// weight associated with matching the corresponding podAffinityTerm, in the range 1-100.
	Weight int `pulumi:"weight"`
}

// IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionInput is an input type that accepts IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionArgs and IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionInput` via:
//
//	IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionArgs{...}
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput
	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutputWithContext(context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput
}

// The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionArgs struct {
	// Required. A pod affinity term, associated with the corresponding weight.
	PodAffinityTerm IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermInput `pulumi:"podAffinityTerm"`
	// weight associated with matching the corresponding podAffinityTerm, in the range 1-100.
	Weight pulumi.IntInput `pulumi:"weight"`
}

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecution)(nil)).Elem()
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionArgs) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput {
	return i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionArgs) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput)
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionArgs) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecution] {
	return pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecution]{
		OutputState: i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutputWithContext(ctx).OutputState,
	}
}

// IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayInput is an input type that accepts IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionArray and IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayInput` via:
//
//	IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionArray{ IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionArgs{...} }
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput
	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutputWithContext(context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput
}

type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionArray []IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionInput

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionArray) ElementType() reflect.Type {
	return reflect.TypeOf((*[]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecution)(nil)).Elem()
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionArray) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput {
	return i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionArray) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput)
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionArray) ToOutput(ctx context.Context) pulumix.Output[[]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecution] {
	return pulumix.Output[[]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecution]{
		OutputState: i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutputWithContext(ctx).OutputState,
	}
}

// The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecution)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecution] {
	return pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecution]{
		OutputState: o.OutputState,
	}
}

// Required. A pod affinity term, associated with the corresponding weight.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput) PodAffinityTerm() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecution) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm {
		return v.PodAffinityTerm
	}).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermOutput)
}

// weight associated with matching the corresponding podAffinityTerm, in the range 1-100.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput) Weight() pulumi.IntOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecution) int {
		return v.Weight
	}).(pulumi.IntOutput)
}

type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*[]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecution)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput) ToOutput(ctx context.Context) pulumix.Output[[]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecution] {
	return pulumix.Output[[]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecution]{
		OutputState: o.OutputState,
	}
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput) Index(i pulumi.IntInput) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput {
	return pulumi.All(o, i).ApplyT(func(vs []interface{}) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecution {
		return vs[0].([]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecution)[vs[1].(int)]
	}).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput)
}

// Required. A pod affinity term, associated with the corresponding weight.
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm struct {
	// A label query over a set of resources, in this case pods.
	LabelSelector *IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector `pulumi:"labelSelector"`
	// A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. This field is beta-level and is only honored when PodAffinityNamespaceSelector feature is enabled.
	NamespaceSelector *IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector `pulumi:"namespaceSelector"`
	// namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace"
	Namespaces []string `pulumi:"namespaces"`
	// This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.
	TopologyKey string `pulumi:"topologyKey"`
}

// IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermInput is an input type that accepts IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermArgs and IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermInput` via:
//
//	IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermArgs{...}
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermOutput
	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermOutputWithContext(context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermOutput
}

// Required. A pod affinity term, associated with the corresponding weight.
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermArgs struct {
	// A label query over a set of resources, in this case pods.
	LabelSelector IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrInput `pulumi:"labelSelector"`
	// A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. This field is beta-level and is only honored when PodAffinityNamespaceSelector feature is enabled.
	NamespaceSelector IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrInput `pulumi:"namespaceSelector"`
	// namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace"
	Namespaces pulumi.StringArrayInput `pulumi:"namespaces"`
	// This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.
	TopologyKey pulumi.StringInput `pulumi:"topologyKey"`
}

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm)(nil)).Elem()
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermArgs) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermOutput {
	return i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermArgs) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermOutput)
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermArgs) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm] {
	return pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm]{
		OutputState: i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermOutputWithContext(ctx).OutputState,
	}
}

// Required. A pod affinity term, associated with the corresponding weight.
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermOutput) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm] {
	return pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm]{
		OutputState: o.OutputState,
	}
}

// A label query over a set of resources, in this case pods.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermOutput) LabelSelector() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm) *IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector {
		return v.LabelSelector
	}).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput)
}

// A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. This field is beta-level and is only honored when PodAffinityNamespaceSelector feature is enabled.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermOutput) NamespaceSelector() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm) *IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector {
		return v.NamespaceSelector
	}).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput)
}

// namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace"
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermOutput) Namespaces() pulumi.StringArrayOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm) []string {
		return v.Namespaces
	}).(pulumi.StringArrayOutput)
}

// This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermOutput) TopologyKey() pulumi.StringOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm) string {
		return v.TopologyKey
	}).(pulumi.StringOutput)
}

// A label query over a set of resources, in this case pods.
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector struct {
	// matchExpressions is a list of label selector requirements. The requirements are ANDed.
	MatchExpressions []IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressions `pulumi:"matchExpressions"`
	// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
	MatchLabels map[string]string `pulumi:"matchLabels"`
}

// IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorInput is an input type that accepts IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorArgs and IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorInput` via:
//
//	IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorArgs{...}
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutput
	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutputWithContext(context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutput
}

// A label query over a set of resources, in this case pods.
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorArgs struct {
	// matchExpressions is a list of label selector requirements. The requirements are ANDed.
	MatchExpressions IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayInput `pulumi:"matchExpressions"`
	// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
	MatchLabels pulumi.StringMapInput `pulumi:"matchLabels"`
}

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector)(nil)).Elem()
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorArgs) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutput {
	return i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorArgs) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutput)
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorArgs) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector] {
	return pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector]{
		OutputState: i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutputWithContext(ctx).OutputState,
	}
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorArgs) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput {
	return i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorArgs) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutput).ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutputWithContext(ctx)
}

// IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrInput is an input type that accepts IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorArgs, IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtr and IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrInput` via:
//
//	        IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorArgs{...}
//
//	or:
//
//	        nil
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput
	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutputWithContext(context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput
}

type issuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrType IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorArgs

func IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtr(v *IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorArgs) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrInput {
	return (*issuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrType)(v)
}

func (*issuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector)(nil)).Elem()
}

func (i *issuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrType) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput {
	return i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutputWithContext(context.Background())
}

func (i *issuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrType) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput)
}

func (i *issuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrType) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector] {
	return pulumix.Output[*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector]{
		OutputState: i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutputWithContext(ctx).OutputState,
	}
}

// A label query over a set of resources, in this case pods.
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput {
	return o.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutputWithContext(context.Background())
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector) *IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector {
		return &v
	}).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput)
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutput) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector] {
	return pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector]{
		OutputState: o.OutputState,
	}
}

// matchExpressions is a list of label selector requirements. The requirements are ANDed.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutput) MatchExpressions() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector) []IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressions {
		return v.MatchExpressions
	}).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayOutput)
}

// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutput) MatchLabels() pulumi.StringMapOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector) map[string]string {
		return v.MatchLabels
	}).(pulumi.StringMapOutput)
}

type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector] {
	return pulumix.Output[*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector]{
		OutputState: o.OutputState,
	}
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput) Elem() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector {
		if v != nil {
			return *v
		}
		var ret IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector
		return ret
	}).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutput)
}

// matchExpressions is a list of label selector requirements. The requirements are ANDed.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput) MatchExpressions() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector) []IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressions {
		if v == nil {
			return nil
		}
		return v.MatchExpressions
	}).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayOutput)
}

// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput) MatchLabels() pulumi.StringMapOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector) map[string]string {
		if v == nil {
			return nil
		}
		return v.MatchLabels
	}).(pulumi.StringMapOutput)
}

// A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressions struct {
	// key is the label key that the selector applies to.
	Key string `pulumi:"key"`
	// operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
	Operator string `pulumi:"operator"`
	// values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
	Values []string `pulumi:"values"`
}

// IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsInput is an input type that accepts IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArgs and IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsInput` via:
//
//	IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArgs{...}
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsOutput
	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsOutputWithContext(context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsOutput
}

// A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArgs struct {
	// key is the label key that the selector applies to.
	Key pulumi.StringInput `pulumi:"key"`
	// operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
	Operator pulumi.StringInput `pulumi:"operator"`
	// values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
	Values pulumi.StringArrayInput `pulumi:"values"`
}

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressions)(nil)).Elem()
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArgs) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsOutput {
	return i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArgs) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsOutput)
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArgs) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressions] {
	return pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressions]{
		OutputState: i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsOutputWithContext(ctx).OutputState,
	}
}

// IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayInput is an input type that accepts IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArray and IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayInput` via:
//
//	IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArray{ IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArgs{...} }
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayOutput
	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayOutputWithContext(context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayOutput
}

type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArray []IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsInput

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArray) ElementType() reflect.Type {
	return reflect.TypeOf((*[]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressions)(nil)).Elem()
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArray) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayOutput {
	return i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArray) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayOutput)
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArray) ToOutput(ctx context.Context) pulumix.Output[[]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressions] {
	return pulumix.Output[[]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressions]{
		OutputState: i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayOutputWithContext(ctx).OutputState,
	}
}

// A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressions)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsOutput) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressions] {
	return pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressions]{
		OutputState: o.OutputState,
	}
}

// key is the label key that the selector applies to.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsOutput) Key() pulumi.StringOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressions) string {
		return v.Key
	}).(pulumi.StringOutput)
}

// operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsOutput) Operator() pulumi.StringOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressions) string {
		return v.Operator
	}).(pulumi.StringOutput)
}

// values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsOutput) Values() pulumi.StringArrayOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressions) []string {
		return v.Values
	}).(pulumi.StringArrayOutput)
}

type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*[]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressions)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayOutput) ToOutput(ctx context.Context) pulumix.Output[[]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressions] {
	return pulumix.Output[[]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressions]{
		OutputState: o.OutputState,
	}
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayOutput) Index(i pulumi.IntInput) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsOutput {
	return pulumi.All(o, i).ApplyT(func(vs []interface{}) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressions {
		return vs[0].([]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressions)[vs[1].(int)]
	}).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsOutput)
}

// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchLabels struct {
}

// A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. This field is beta-level and is only honored when PodAffinityNamespaceSelector feature is enabled.
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector struct {
	// matchExpressions is a list of label selector requirements. The requirements are ANDed.
	MatchExpressions []IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressions `pulumi:"matchExpressions"`
	// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
	MatchLabels map[string]string `pulumi:"matchLabels"`
}

// IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorInput is an input type that accepts IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorArgs and IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorInput` via:
//
//	IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorArgs{...}
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutput
	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutputWithContext(context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutput
}

// A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. This field is beta-level and is only honored when PodAffinityNamespaceSelector feature is enabled.
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorArgs struct {
	// matchExpressions is a list of label selector requirements. The requirements are ANDed.
	MatchExpressions IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayInput `pulumi:"matchExpressions"`
	// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
	MatchLabels pulumi.StringMapInput `pulumi:"matchLabels"`
}

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector)(nil)).Elem()
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorArgs) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutput {
	return i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorArgs) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutput)
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorArgs) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector] {
	return pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector]{
		OutputState: i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutputWithContext(ctx).OutputState,
	}
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorArgs) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput {
	return i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorArgs) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutput).ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutputWithContext(ctx)
}

// IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrInput is an input type that accepts IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorArgs, IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtr and IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrInput` via:
//
//	        IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorArgs{...}
//
//	or:
//
//	        nil
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput
	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutputWithContext(context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput
}

type issuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrType IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorArgs

func IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtr(v *IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorArgs) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrInput {
	return (*issuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrType)(v)
}

func (*issuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector)(nil)).Elem()
}

func (i *issuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrType) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput {
	return i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutputWithContext(context.Background())
}

func (i *issuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrType) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput)
}

func (i *issuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrType) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector] {
	return pulumix.Output[*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector]{
		OutputState: i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutputWithContext(ctx).OutputState,
	}
}

// A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. This field is beta-level and is only honored when PodAffinityNamespaceSelector feature is enabled.
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput {
	return o.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutputWithContext(context.Background())
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector) *IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector {
		return &v
	}).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput)
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutput) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector] {
	return pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector]{
		OutputState: o.OutputState,
	}
}

// matchExpressions is a list of label selector requirements. The requirements are ANDed.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutput) MatchExpressions() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector) []IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressions {
		return v.MatchExpressions
	}).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayOutput)
}

// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutput) MatchLabels() pulumi.StringMapOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector) map[string]string {
		return v.MatchLabels
	}).(pulumi.StringMapOutput)
}

type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector] {
	return pulumix.Output[*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector]{
		OutputState: o.OutputState,
	}
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput) Elem() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector {
		if v != nil {
			return *v
		}
		var ret IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector
		return ret
	}).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutput)
}

// matchExpressions is a list of label selector requirements. The requirements are ANDed.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput) MatchExpressions() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector) []IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressions {
		if v == nil {
			return nil
		}
		return v.MatchExpressions
	}).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayOutput)
}

// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput) MatchLabels() pulumi.StringMapOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector) map[string]string {
		if v == nil {
			return nil
		}
		return v.MatchLabels
	}).(pulumi.StringMapOutput)
}

// A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressions struct {
	// key is the label key that the selector applies to.
	Key string `pulumi:"key"`
	// operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
	Operator string `pulumi:"operator"`
	// values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
	Values []string `pulumi:"values"`
}

// IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsInput is an input type that accepts IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArgs and IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsInput` via:
//
//	IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArgs{...}
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsOutput
	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsOutputWithContext(context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsOutput
}

// A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArgs struct {
	// key is the label key that the selector applies to.
	Key pulumi.StringInput `pulumi:"key"`
	// operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
	Operator pulumi.StringInput `pulumi:"operator"`
	// values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
	Values pulumi.StringArrayInput `pulumi:"values"`
}

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressions)(nil)).Elem()
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArgs) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsOutput {
	return i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArgs) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsOutput)
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArgs) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressions] {
	return pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressions]{
		OutputState: i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsOutputWithContext(ctx).OutputState,
	}
}

// IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayInput is an input type that accepts IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArray and IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayInput` via:
//
//	IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArray{ IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArgs{...} }
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayOutput
	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayOutputWithContext(context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayOutput
}

type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArray []IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsInput

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArray) ElementType() reflect.Type {
	return reflect.TypeOf((*[]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressions)(nil)).Elem()
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArray) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayOutput {
	return i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArray) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayOutput)
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArray) ToOutput(ctx context.Context) pulumix.Output[[]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressions] {
	return pulumix.Output[[]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressions]{
		OutputState: i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayOutputWithContext(ctx).OutputState,
	}
}

// A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressions)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsOutput) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressions] {
	return pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressions]{
		OutputState: o.OutputState,
	}
}

// key is the label key that the selector applies to.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsOutput) Key() pulumi.StringOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressions) string {
		return v.Key
	}).(pulumi.StringOutput)
}

// operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsOutput) Operator() pulumi.StringOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressions) string {
		return v.Operator
	}).(pulumi.StringOutput)
}

// values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsOutput) Values() pulumi.StringArrayOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressions) []string {
		return v.Values
	}).(pulumi.StringArrayOutput)
}

type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*[]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressions)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayOutput) ToOutput(ctx context.Context) pulumix.Output[[]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressions] {
	return pulumix.Output[[]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressions]{
		OutputState: o.OutputState,
	}
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayOutput) Index(i pulumi.IntInput) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsOutput {
	return pulumi.All(o, i).ApplyT(func(vs []interface{}) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressions {
		return vs[0].([]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressions)[vs[1].(int)]
	}).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsOutput)
}

// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchLabels struct {
}

// Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key <topologyKey> matches that of any node on which a pod of the set of pods is running
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecution struct {
	// A label query over a set of resources, in this case pods.
	LabelSelector *IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector `pulumi:"labelSelector"`
	// A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. This field is beta-level and is only honored when PodAffinityNamespaceSelector feature is enabled.
	NamespaceSelector *IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector `pulumi:"namespaceSelector"`
	// namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace"
	Namespaces []string `pulumi:"namespaces"`
	// This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.
	TopologyKey string `pulumi:"topologyKey"`
}

// IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionInput is an input type that accepts IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionArgs and IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionInput` via:
//
//	IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionArgs{...}
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput
	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutputWithContext(context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput
}

// Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key <topologyKey> matches that of any node on which a pod of the set of pods is running
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionArgs struct {
	// A label query over a set of resources, in this case pods.
	LabelSelector IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrInput `pulumi:"labelSelector"`
	// A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. This field is beta-level and is only honored when PodAffinityNamespaceSelector feature is enabled.
	NamespaceSelector IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrInput `pulumi:"namespaceSelector"`
	// namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace"
	Namespaces pulumi.StringArrayInput `pulumi:"namespaces"`
	// This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.
	TopologyKey pulumi.StringInput `pulumi:"topologyKey"`
}

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecution)(nil)).Elem()
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionArgs) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput {
	return i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionArgs) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput)
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionArgs) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecution] {
	return pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecution]{
		OutputState: i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutputWithContext(ctx).OutputState,
	}
}

// IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayInput is an input type that accepts IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionArray and IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayInput` via:
//
//	IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionArray{ IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionArgs{...} }
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayOutput
	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayOutputWithContext(context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayOutput
}

type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionArray []IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionInput

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionArray) ElementType() reflect.Type {
	return reflect.TypeOf((*[]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecution)(nil)).Elem()
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionArray) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayOutput {
	return i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionArray) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayOutput)
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionArray) ToOutput(ctx context.Context) pulumix.Output[[]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecution] {
	return pulumix.Output[[]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecution]{
		OutputState: i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayOutputWithContext(ctx).OutputState,
	}
}

// Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key <topologyKey> matches that of any node on which a pod of the set of pods is running
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecution)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecution] {
	return pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecution]{
		OutputState: o.OutputState,
	}
}

// A label query over a set of resources, in this case pods.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput) LabelSelector() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecution) *IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector {
		return v.LabelSelector
	}).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput)
}

// A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. This field is beta-level and is only honored when PodAffinityNamespaceSelector feature is enabled.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput) NamespaceSelector() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecution) *IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector {
		return v.NamespaceSelector
	}).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput)
}

// namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace"
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput) Namespaces() pulumi.StringArrayOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecution) []string {
		return v.Namespaces
	}).(pulumi.StringArrayOutput)
}

// This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput) TopologyKey() pulumi.StringOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecution) string {
		return v.TopologyKey
	}).(pulumi.StringOutput)
}

type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*[]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecution)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayOutput) ToOutput(ctx context.Context) pulumix.Output[[]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecution] {
	return pulumix.Output[[]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecution]{
		OutputState: o.OutputState,
	}
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayOutput) Index(i pulumi.IntInput) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput {
	return pulumi.All(o, i).ApplyT(func(vs []interface{}) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecution {
		return vs[0].([]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecution)[vs[1].(int)]
	}).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput)
}

// A label query over a set of resources, in this case pods.
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector struct {
	// matchExpressions is a list of label selector requirements. The requirements are ANDed.
	MatchExpressions []IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressions `pulumi:"matchExpressions"`
	// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
	MatchLabels map[string]string `pulumi:"matchLabels"`
}

// IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorInput is an input type that accepts IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorArgs and IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorInput` via:
//
//	IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorArgs{...}
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutput
	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutputWithContext(context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutput
}

// A label query over a set of resources, in this case pods.
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorArgs struct {
	// matchExpressions is a list of label selector requirements. The requirements are ANDed.
	MatchExpressions IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayInput `pulumi:"matchExpressions"`
	// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
	MatchLabels pulumi.StringMapInput `pulumi:"matchLabels"`
}

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector)(nil)).Elem()
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorArgs) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutput {
	return i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorArgs) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutput)
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorArgs) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector] {
	return pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector]{
		OutputState: i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutputWithContext(ctx).OutputState,
	}
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorArgs) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput {
	return i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorArgs) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutput).ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutputWithContext(ctx)
}

// IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrInput is an input type that accepts IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorArgs, IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtr and IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrInput` via:
//
//	        IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorArgs{...}
//
//	or:
//
//	        nil
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput
	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutputWithContext(context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput
}

type issuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrType IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorArgs

func IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtr(v *IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorArgs) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrInput {
	return (*issuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrType)(v)
}

func (*issuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector)(nil)).Elem()
}

func (i *issuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrType) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput {
	return i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutputWithContext(context.Background())
}

func (i *issuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrType) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput)
}

func (i *issuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrType) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector] {
	return pulumix.Output[*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector]{
		OutputState: i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutputWithContext(ctx).OutputState,
	}
}

// A label query over a set of resources, in this case pods.
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput {
	return o.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutputWithContext(context.Background())
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector) *IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector {
		return &v
	}).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput)
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutput) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector] {
	return pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector]{
		OutputState: o.OutputState,
	}
}

// matchExpressions is a list of label selector requirements. The requirements are ANDed.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutput) MatchExpressions() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector) []IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressions {
		return v.MatchExpressions
	}).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayOutput)
}

// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutput) MatchLabels() pulumi.StringMapOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector) map[string]string {
		return v.MatchLabels
	}).(pulumi.StringMapOutput)
}

type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector] {
	return pulumix.Output[*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector]{
		OutputState: o.OutputState,
	}
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput) Elem() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector {
		if v != nil {
			return *v
		}
		var ret IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector
		return ret
	}).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutput)
}

// matchExpressions is a list of label selector requirements. The requirements are ANDed.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput) MatchExpressions() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector) []IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressions {
		if v == nil {
			return nil
		}
		return v.MatchExpressions
	}).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayOutput)
}

// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput) MatchLabels() pulumi.StringMapOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector) map[string]string {
		if v == nil {
			return nil
		}
		return v.MatchLabels
	}).(pulumi.StringMapOutput)
}

// A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressions struct {
	// key is the label key that the selector applies to.
	Key string `pulumi:"key"`
	// operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
	Operator string `pulumi:"operator"`
	// values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
	Values []string `pulumi:"values"`
}

// IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsInput is an input type that accepts IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArgs and IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsInput` via:
//
//	IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArgs{...}
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsOutput
	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsOutputWithContext(context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsOutput
}

// A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArgs struct {
	// key is the label key that the selector applies to.
	Key pulumi.StringInput `pulumi:"key"`
	// operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
	Operator pulumi.StringInput `pulumi:"operator"`
	// values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
	Values pulumi.StringArrayInput `pulumi:"values"`
}

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressions)(nil)).Elem()
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArgs) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsOutput {
	return i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArgs) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsOutput)
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArgs) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressions] {
	return pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressions]{
		OutputState: i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsOutputWithContext(ctx).OutputState,
	}
}

// IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayInput is an input type that accepts IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArray and IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayInput` via:
//
//	IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArray{ IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArgs{...} }
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayOutput
	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayOutputWithContext(context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayOutput
}

type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArray []IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsInput

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArray) ElementType() reflect.Type {
	return reflect.TypeOf((*[]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressions)(nil)).Elem()
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArray) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayOutput {
	return i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArray) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayOutput)
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArray) ToOutput(ctx context.Context) pulumix.Output[[]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressions] {
	return pulumix.Output[[]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressions]{
		OutputState: i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayOutputWithContext(ctx).OutputState,
	}
}

// A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressions)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsOutput) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressions] {
	return pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressions]{
		OutputState: o.OutputState,
	}
}

// key is the label key that the selector applies to.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsOutput) Key() pulumi.StringOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressions) string {
		return v.Key
	}).(pulumi.StringOutput)
}

// operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsOutput) Operator() pulumi.StringOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressions) string {
		return v.Operator
	}).(pulumi.StringOutput)
}

// values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsOutput) Values() pulumi.StringArrayOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressions) []string {
		return v.Values
	}).(pulumi.StringArrayOutput)
}

type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*[]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressions)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayOutput) ToOutput(ctx context.Context) pulumix.Output[[]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressions] {
	return pulumix.Output[[]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressions]{
		OutputState: o.OutputState,
	}
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayOutput) Index(i pulumi.IntInput) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsOutput {
	return pulumi.All(o, i).ApplyT(func(vs []interface{}) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressions {
		return vs[0].([]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressions)[vs[1].(int)]
	}).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsOutput)
}

// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchLabels struct {
}

// A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. This field is beta-level and is only honored when PodAffinityNamespaceSelector feature is enabled.
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector struct {
	// matchExpressions is a list of label selector requirements. The requirements are ANDed.
	MatchExpressions []IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressions `pulumi:"matchExpressions"`
	// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
	MatchLabels map[string]string `pulumi:"matchLabels"`
}

// IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorInput is an input type that accepts IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorArgs and IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorInput` via:
//
//	IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorArgs{...}
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutput
	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutputWithContext(context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutput
}

// A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. This field is beta-level and is only honored when PodAffinityNamespaceSelector feature is enabled.
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorArgs struct {
	// matchExpressions is a list of label selector requirements. The requirements are ANDed.
	MatchExpressions IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayInput `pulumi:"matchExpressions"`
	// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
	MatchLabels pulumi.StringMapInput `pulumi:"matchLabels"`
}

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector)(nil)).Elem()
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorArgs) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutput {
	return i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorArgs) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutput)
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorArgs) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector] {
	return pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector]{
		OutputState: i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutputWithContext(ctx).OutputState,
	}
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorArgs) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput {
	return i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorArgs) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutput).ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutputWithContext(ctx)
}

// IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrInput is an input type that accepts IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorArgs, IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtr and IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrInput` via:
//
//	        IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorArgs{...}
//
//	or:
//
//	        nil
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput
	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutputWithContext(context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput
}

type issuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrType IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorArgs

func IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtr(v *IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorArgs) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrInput {
	return (*issuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrType)(v)
}

func (*issuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector)(nil)).Elem()
}

func (i *issuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrType) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput {
	return i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutputWithContext(context.Background())
}

func (i *issuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrType) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput)
}

func (i *issuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrType) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector] {
	return pulumix.Output[*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector]{
		OutputState: i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutputWithContext(ctx).OutputState,
	}
}

// A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. This field is beta-level and is only honored when PodAffinityNamespaceSelector feature is enabled.
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput {
	return o.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutputWithContext(context.Background())
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector) *IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector {
		return &v
	}).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput)
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutput) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector] {
	return pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector]{
		OutputState: o.OutputState,
	}
}

// matchExpressions is a list of label selector requirements. The requirements are ANDed.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutput) MatchExpressions() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector) []IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressions {
		return v.MatchExpressions
	}).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayOutput)
}

// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutput) MatchLabels() pulumi.StringMapOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector) map[string]string {
		return v.MatchLabels
	}).(pulumi.StringMapOutput)
}

type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector] {
	return pulumix.Output[*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector]{
		OutputState: o.OutputState,
	}
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput) Elem() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector {
		if v != nil {
			return *v
		}
		var ret IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector
		return ret
	}).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutput)
}

// matchExpressions is a list of label selector requirements. The requirements are ANDed.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput) MatchExpressions() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector) []IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressions {
		if v == nil {
			return nil
		}
		return v.MatchExpressions
	}).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayOutput)
}

// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput) MatchLabels() pulumi.StringMapOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector) map[string]string {
		if v == nil {
			return nil
		}
		return v.MatchLabels
	}).(pulumi.StringMapOutput)
}

// A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressions struct {
	// key is the label key that the selector applies to.
	Key string `pulumi:"key"`
	// operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
	Operator string `pulumi:"operator"`
	// values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
	Values []string `pulumi:"values"`
}

// IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsInput is an input type that accepts IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArgs and IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsInput` via:
//
//	IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArgs{...}
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsOutput
	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsOutputWithContext(context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsOutput
}

// A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArgs struct {
	// key is the label key that the selector applies to.
	Key pulumi.StringInput `pulumi:"key"`
	// operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
	Operator pulumi.StringInput `pulumi:"operator"`
	// values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
	Values pulumi.StringArrayInput `pulumi:"values"`
}

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressions)(nil)).Elem()
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArgs) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsOutput {
	return i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArgs) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsOutput)
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArgs) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressions] {
	return pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressions]{
		OutputState: i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsOutputWithContext(ctx).OutputState,
	}
}

// IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayInput is an input type that accepts IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArray and IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayInput` via:
//
//	IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArray{ IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArgs{...} }
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayOutput
	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayOutputWithContext(context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayOutput
}

type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArray []IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsInput

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArray) ElementType() reflect.Type {
	return reflect.TypeOf((*[]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressions)(nil)).Elem()
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArray) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayOutput {
	return i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArray) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayOutput)
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArray) ToOutput(ctx context.Context) pulumix.Output[[]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressions] {
	return pulumix.Output[[]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressions]{
		OutputState: i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayOutputWithContext(ctx).OutputState,
	}
}

// A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressions)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsOutput) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressions] {
	return pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressions]{
		OutputState: o.OutputState,
	}
}

// key is the label key that the selector applies to.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsOutput) Key() pulumi.StringOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressions) string {
		return v.Key
	}).(pulumi.StringOutput)
}

// operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsOutput) Operator() pulumi.StringOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressions) string {
		return v.Operator
	}).(pulumi.StringOutput)
}

// values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsOutput) Values() pulumi.StringArrayOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressions) []string {
		return v.Values
	}).(pulumi.StringArrayOutput)
}

type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*[]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressions)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayOutput) ToOutput(ctx context.Context) pulumix.Output[[]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressions] {
	return pulumix.Output[[]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressions]{
		OutputState: o.OutputState,
	}
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayOutput) Index(i pulumi.IntInput) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsOutput {
	return pulumi.All(o, i).ApplyT(func(vs []interface{}) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressions {
		return vs[0].([]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressions)[vs[1].(int)]
	}).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsOutput)
}

// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchLabels struct {
}

// NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecNodeSelector struct {
}

// The pod this Toleration is attached to tolerates any taint that matches the triple <key,value,effect> using the matching operator <operator>.
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerations struct {
	// Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.
	Effect *string `pulumi:"effect"`
	// Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys.
	Key *string `pulumi:"key"`
	// Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category.
	Operator *string `pulumi:"operator"`
	// TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system.
	TolerationSeconds *int `pulumi:"tolerationSeconds"`
	// Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.
	Value *string `pulumi:"value"`
}

// IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsInput is an input type that accepts IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsArgs and IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsInput` via:
//
//	IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsArgs{...}
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsOutput
	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsOutputWithContext(context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsOutput
}

// The pod this Toleration is attached to tolerates any taint that matches the triple <key,value,effect> using the matching operator <operator>.
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsArgs struct {
	// Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.
	Effect pulumi.StringPtrInput `pulumi:"effect"`
	// Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys.
	Key pulumi.StringPtrInput `pulumi:"key"`
	// Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category.
	Operator pulumi.StringPtrInput `pulumi:"operator"`
	// TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system.
	TolerationSeconds pulumi.IntPtrInput `pulumi:"tolerationSeconds"`
	// Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.
	Value pulumi.StringPtrInput `pulumi:"value"`
}

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerations)(nil)).Elem()
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsArgs) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsOutput {
	return i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsArgs) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsOutput)
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsArgs) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerations] {
	return pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerations]{
		OutputState: i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsOutputWithContext(ctx).OutputState,
	}
}

// IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsArrayInput is an input type that accepts IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsArray and IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsArrayOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsArrayInput` via:
//
//	IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsArray{ IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsArgs{...} }
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsArrayInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsArrayOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsArrayOutput
	ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsArrayOutputWithContext(context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsArrayOutput
}

type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsArray []IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsInput

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsArray) ElementType() reflect.Type {
	return reflect.TypeOf((*[]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerations)(nil)).Elem()
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsArray) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsArrayOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsArrayOutput {
	return i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsArrayOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsArray) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsArrayOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsArrayOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsArrayOutput)
}

func (i IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsArray) ToOutput(ctx context.Context) pulumix.Output[[]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerations] {
	return pulumix.Output[[]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerations]{
		OutputState: i.ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsArrayOutputWithContext(ctx).OutputState,
	}
}

// The pod this Toleration is attached to tolerates any taint that matches the triple <key,value,effect> using the matching operator <operator>.
type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerations)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsOutput) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerations] {
	return pulumix.Output[IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerations]{
		OutputState: o.OutputState,
	}
}

// Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsOutput) Effect() pulumi.StringPtrOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerations) *string { return v.Effect }).(pulumi.StringPtrOutput)
}

// Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsOutput) Key() pulumi.StringPtrOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerations) *string { return v.Key }).(pulumi.StringPtrOutput)
}

// Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsOutput) Operator() pulumi.StringPtrOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerations) *string { return v.Operator }).(pulumi.StringPtrOutput)
}

// TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsOutput) TolerationSeconds() pulumi.IntPtrOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerations) *int { return v.TolerationSeconds }).(pulumi.IntPtrOutput)
}

// Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.
func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsOutput) Value() pulumi.StringPtrOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerations) *string { return v.Value }).(pulumi.StringPtrOutput)
}

type IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsArrayOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsArrayOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*[]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerations)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsArrayOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsArrayOutput() IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsArrayOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsArrayOutput) ToIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsArrayOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsArrayOutput {
	return o
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsArrayOutput) ToOutput(ctx context.Context) pulumix.Output[[]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerations] {
	return pulumix.Output[[]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerations]{
		OutputState: o.OutputState,
	}
}

func (o IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsArrayOutput) Index(i pulumi.IntInput) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsOutput {
	return pulumi.All(o, i).ApplyT(func(vs []interface{}) IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerations {
		return vs[0].([]IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerations)[vs[1].(int)]
	}).(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsOutput)
}

// Selector selects a set of DNSNames on the Certificate resource that should be solved using this challenge solver. If not specified, the solver will be treated as the 'default' solver with the lowest priority, i.e. if any other solver has a more specific match, it will be used instead.
type IssuerSpecAcmeSolversSelector struct {
	// List of DNSNames that this solver will be used to solve. If specified and a match is found, a dnsNames selector will take precedence over a dnsZones selector. If multiple solvers match with the same dnsNames value, the solver with the most matching labels in matchLabels will be selected. If neither has more matches, the solver defined earlier in the list will be selected.
	DnsNames []string `pulumi:"dnsNames"`
	// List of DNSZones that this solver will be used to solve. The most specific DNS zone match specified here will take precedence over other DNS zone matches, so a solver specifying sys.example.com will be selected over one specifying example.com for the domain www.sys.example.com. If multiple solvers match with the same dnsZones value, the solver with the most matching labels in matchLabels will be selected. If neither has more matches, the solver defined earlier in the list will be selected.
	DnsZones []string `pulumi:"dnsZones"`
	// A label selector that is used to refine the set of certificate's that this challenge solver will apply to.
	MatchLabels map[string]string `pulumi:"matchLabels"`
}

// IssuerSpecAcmeSolversSelectorInput is an input type that accepts IssuerSpecAcmeSolversSelectorArgs and IssuerSpecAcmeSolversSelectorOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversSelectorInput` via:
//
//	IssuerSpecAcmeSolversSelectorArgs{...}
type IssuerSpecAcmeSolversSelectorInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversSelectorOutput() IssuerSpecAcmeSolversSelectorOutput
	ToIssuerSpecAcmeSolversSelectorOutputWithContext(context.Context) IssuerSpecAcmeSolversSelectorOutput
}

// Selector selects a set of DNSNames on the Certificate resource that should be solved using this challenge solver. If not specified, the solver will be treated as the 'default' solver with the lowest priority, i.e. if any other solver has a more specific match, it will be used instead.
type IssuerSpecAcmeSolversSelectorArgs struct {
	// List of DNSNames that this solver will be used to solve. If specified and a match is found, a dnsNames selector will take precedence over a dnsZones selector. If multiple solvers match with the same dnsNames value, the solver with the most matching labels in matchLabels will be selected. If neither has more matches, the solver defined earlier in the list will be selected.
	DnsNames pulumi.StringArrayInput `pulumi:"dnsNames"`
	// List of DNSZones that this solver will be used to solve. The most specific DNS zone match specified here will take precedence over other DNS zone matches, so a solver specifying sys.example.com will be selected over one specifying example.com for the domain www.sys.example.com. If multiple solvers match with the same dnsZones value, the solver with the most matching labels in matchLabels will be selected. If neither has more matches, the solver defined earlier in the list will be selected.
	DnsZones pulumi.StringArrayInput `pulumi:"dnsZones"`
	// A label selector that is used to refine the set of certificate's that this challenge solver will apply to.
	MatchLabels pulumi.StringMapInput `pulumi:"matchLabels"`
}

func (IssuerSpecAcmeSolversSelectorArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversSelector)(nil)).Elem()
}

func (i IssuerSpecAcmeSolversSelectorArgs) ToIssuerSpecAcmeSolversSelectorOutput() IssuerSpecAcmeSolversSelectorOutput {
	return i.ToIssuerSpecAcmeSolversSelectorOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversSelectorArgs) ToIssuerSpecAcmeSolversSelectorOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversSelectorOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversSelectorOutput)
}

func (i IssuerSpecAcmeSolversSelectorArgs) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversSelector] {
	return pulumix.Output[IssuerSpecAcmeSolversSelector]{
		OutputState: i.ToIssuerSpecAcmeSolversSelectorOutputWithContext(ctx).OutputState,
	}
}

func (i IssuerSpecAcmeSolversSelectorArgs) ToIssuerSpecAcmeSolversSelectorPtrOutput() IssuerSpecAcmeSolversSelectorPtrOutput {
	return i.ToIssuerSpecAcmeSolversSelectorPtrOutputWithContext(context.Background())
}

func (i IssuerSpecAcmeSolversSelectorArgs) ToIssuerSpecAcmeSolversSelectorPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversSelectorPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversSelectorOutput).ToIssuerSpecAcmeSolversSelectorPtrOutputWithContext(ctx)
}

// IssuerSpecAcmeSolversSelectorPtrInput is an input type that accepts IssuerSpecAcmeSolversSelectorArgs, IssuerSpecAcmeSolversSelectorPtr and IssuerSpecAcmeSolversSelectorPtrOutput values.
// You can construct a concrete instance of `IssuerSpecAcmeSolversSelectorPtrInput` via:
//
//	        IssuerSpecAcmeSolversSelectorArgs{...}
//
//	or:
//
//	        nil
type IssuerSpecAcmeSolversSelectorPtrInput interface {
	pulumi.Input

	ToIssuerSpecAcmeSolversSelectorPtrOutput() IssuerSpecAcmeSolversSelectorPtrOutput
	ToIssuerSpecAcmeSolversSelectorPtrOutputWithContext(context.Context) IssuerSpecAcmeSolversSelectorPtrOutput
}

type issuerSpecAcmeSolversSelectorPtrType IssuerSpecAcmeSolversSelectorArgs

func IssuerSpecAcmeSolversSelectorPtr(v *IssuerSpecAcmeSolversSelectorArgs) IssuerSpecAcmeSolversSelectorPtrInput {
	return (*issuerSpecAcmeSolversSelectorPtrType)(v)
}

func (*issuerSpecAcmeSolversSelectorPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecAcmeSolversSelector)(nil)).Elem()
}

func (i *issuerSpecAcmeSolversSelectorPtrType) ToIssuerSpecAcmeSolversSelectorPtrOutput() IssuerSpecAcmeSolversSelectorPtrOutput {
	return i.ToIssuerSpecAcmeSolversSelectorPtrOutputWithContext(context.Background())
}

func (i *issuerSpecAcmeSolversSelectorPtrType) ToIssuerSpecAcmeSolversSelectorPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversSelectorPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecAcmeSolversSelectorPtrOutput)
}

func (i *issuerSpecAcmeSolversSelectorPtrType) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecAcmeSolversSelector] {
	return pulumix.Output[*IssuerSpecAcmeSolversSelector]{
		OutputState: i.ToIssuerSpecAcmeSolversSelectorPtrOutputWithContext(ctx).OutputState,
	}
}

// Selector selects a set of DNSNames on the Certificate resource that should be solved using this challenge solver. If not specified, the solver will be treated as the 'default' solver with the lowest priority, i.e. if any other solver has a more specific match, it will be used instead.
type IssuerSpecAcmeSolversSelectorOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversSelectorOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecAcmeSolversSelector)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversSelectorOutput) ToIssuerSpecAcmeSolversSelectorOutput() IssuerSpecAcmeSolversSelectorOutput {
	return o
}

func (o IssuerSpecAcmeSolversSelectorOutput) ToIssuerSpecAcmeSolversSelectorOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversSelectorOutput {
	return o
}

func (o IssuerSpecAcmeSolversSelectorOutput) ToIssuerSpecAcmeSolversSelectorPtrOutput() IssuerSpecAcmeSolversSelectorPtrOutput {
	return o.ToIssuerSpecAcmeSolversSelectorPtrOutputWithContext(context.Background())
}

func (o IssuerSpecAcmeSolversSelectorOutput) ToIssuerSpecAcmeSolversSelectorPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversSelectorPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v IssuerSpecAcmeSolversSelector) *IssuerSpecAcmeSolversSelector {
		return &v
	}).(IssuerSpecAcmeSolversSelectorPtrOutput)
}

func (o IssuerSpecAcmeSolversSelectorOutput) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecAcmeSolversSelector] {
	return pulumix.Output[IssuerSpecAcmeSolversSelector]{
		OutputState: o.OutputState,
	}
}

// List of DNSNames that this solver will be used to solve. If specified and a match is found, a dnsNames selector will take precedence over a dnsZones selector. If multiple solvers match with the same dnsNames value, the solver with the most matching labels in matchLabels will be selected. If neither has more matches, the solver defined earlier in the list will be selected.
func (o IssuerSpecAcmeSolversSelectorOutput) DnsNames() pulumi.StringArrayOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversSelector) []string { return v.DnsNames }).(pulumi.StringArrayOutput)
}

// List of DNSZones that this solver will be used to solve. The most specific DNS zone match specified here will take precedence over other DNS zone matches, so a solver specifying sys.example.com will be selected over one specifying example.com for the domain www.sys.example.com. If multiple solvers match with the same dnsZones value, the solver with the most matching labels in matchLabels will be selected. If neither has more matches, the solver defined earlier in the list will be selected.
func (o IssuerSpecAcmeSolversSelectorOutput) DnsZones() pulumi.StringArrayOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversSelector) []string { return v.DnsZones }).(pulumi.StringArrayOutput)
}

// A label selector that is used to refine the set of certificate's that this challenge solver will apply to.
func (o IssuerSpecAcmeSolversSelectorOutput) MatchLabels() pulumi.StringMapOutput {
	return o.ApplyT(func(v IssuerSpecAcmeSolversSelector) map[string]string { return v.MatchLabels }).(pulumi.StringMapOutput)
}

type IssuerSpecAcmeSolversSelectorPtrOutput struct{ *pulumi.OutputState }

func (IssuerSpecAcmeSolversSelectorPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecAcmeSolversSelector)(nil)).Elem()
}

func (o IssuerSpecAcmeSolversSelectorPtrOutput) ToIssuerSpecAcmeSolversSelectorPtrOutput() IssuerSpecAcmeSolversSelectorPtrOutput {
	return o
}

func (o IssuerSpecAcmeSolversSelectorPtrOutput) ToIssuerSpecAcmeSolversSelectorPtrOutputWithContext(ctx context.Context) IssuerSpecAcmeSolversSelectorPtrOutput {
	return o
}

func (o IssuerSpecAcmeSolversSelectorPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecAcmeSolversSelector] {
	return pulumix.Output[*IssuerSpecAcmeSolversSelector]{
		OutputState: o.OutputState,
	}
}

func (o IssuerSpecAcmeSolversSelectorPtrOutput) Elem() IssuerSpecAcmeSolversSelectorOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversSelector) IssuerSpecAcmeSolversSelector {
		if v != nil {
			return *v
		}
		var ret IssuerSpecAcmeSolversSelector
		return ret
	}).(IssuerSpecAcmeSolversSelectorOutput)
}

// List of DNSNames that this solver will be used to solve. If specified and a match is found, a dnsNames selector will take precedence over a dnsZones selector. If multiple solvers match with the same dnsNames value, the solver with the most matching labels in matchLabels will be selected. If neither has more matches, the solver defined earlier in the list will be selected.
func (o IssuerSpecAcmeSolversSelectorPtrOutput) DnsNames() pulumi.StringArrayOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversSelector) []string {
		if v == nil {
			return nil
		}
		return v.DnsNames
	}).(pulumi.StringArrayOutput)
}

// List of DNSZones that this solver will be used to solve. The most specific DNS zone match specified here will take precedence over other DNS zone matches, so a solver specifying sys.example.com will be selected over one specifying example.com for the domain www.sys.example.com. If multiple solvers match with the same dnsZones value, the solver with the most matching labels in matchLabels will be selected. If neither has more matches, the solver defined earlier in the list will be selected.
func (o IssuerSpecAcmeSolversSelectorPtrOutput) DnsZones() pulumi.StringArrayOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversSelector) []string {
		if v == nil {
			return nil
		}
		return v.DnsZones
	}).(pulumi.StringArrayOutput)
}

// A label selector that is used to refine the set of certificate's that this challenge solver will apply to.
func (o IssuerSpecAcmeSolversSelectorPtrOutput) MatchLabels() pulumi.StringMapOutput {
	return o.ApplyT(func(v *IssuerSpecAcmeSolversSelector) map[string]string {
		if v == nil {
			return nil
		}
		return v.MatchLabels
	}).(pulumi.StringMapOutput)
}

// A label selector that is used to refine the set of certificate's that this challenge solver will apply to.
type IssuerSpecAcmeSolversSelectorMatchLabels struct {
}

// CA configures this issuer to sign certificates using a signing CA keypair stored in a Secret resource. This is used to build internal PKIs that are managed by cert-manager.
type IssuerSpecCa struct {
	// The CRL distribution points is an X.509 v3 certificate extension which identifies the location of the CRL from which the revocation of this certificate can be checked. If not set, certificates will be issued without distribution points set.
	CrlDistributionPoints []string `pulumi:"crlDistributionPoints"`
	// The OCSP server list is an X.509 v3 extension that defines a list of URLs of OCSP responders. The OCSP responders can be queried for the revocation status of an issued certificate. If not set, the certificate will be issued with no OCSP servers set. For example, an OCSP server URL could be "http://ocsp.int-x3.letsencrypt.org".
	OcspServers []string `pulumi:"ocspServers"`
	// SecretName is the name of the secret used to sign Certificates issued by this Issuer.
	SecretName string `pulumi:"secretName"`
}

// IssuerSpecCaInput is an input type that accepts IssuerSpecCaArgs and IssuerSpecCaOutput values.
// You can construct a concrete instance of `IssuerSpecCaInput` via:
//
//	IssuerSpecCaArgs{...}
type IssuerSpecCaInput interface {
	pulumi.Input

	ToIssuerSpecCaOutput() IssuerSpecCaOutput
	ToIssuerSpecCaOutputWithContext(context.Context) IssuerSpecCaOutput
}

// CA configures this issuer to sign certificates using a signing CA keypair stored in a Secret resource. This is used to build internal PKIs that are managed by cert-manager.
type IssuerSpecCaArgs struct {
	// The CRL distribution points is an X.509 v3 certificate extension which identifies the location of the CRL from which the revocation of this certificate can be checked. If not set, certificates will be issued without distribution points set.
	CrlDistributionPoints pulumi.StringArrayInput `pulumi:"crlDistributionPoints"`
	// The OCSP server list is an X.509 v3 extension that defines a list of URLs of OCSP responders. The OCSP responders can be queried for the revocation status of an issued certificate. If not set, the certificate will be issued with no OCSP servers set. For example, an OCSP server URL could be "http://ocsp.int-x3.letsencrypt.org".
	OcspServers pulumi.StringArrayInput `pulumi:"ocspServers"`
	// SecretName is the name of the secret used to sign Certificates issued by this Issuer.
	SecretName pulumi.StringInput `pulumi:"secretName"`
}

func (IssuerSpecCaArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecCa)(nil)).Elem()
}

func (i IssuerSpecCaArgs) ToIssuerSpecCaOutput() IssuerSpecCaOutput {
	return i.ToIssuerSpecCaOutputWithContext(context.Background())
}

func (i IssuerSpecCaArgs) ToIssuerSpecCaOutputWithContext(ctx context.Context) IssuerSpecCaOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecCaOutput)
}

func (i IssuerSpecCaArgs) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecCa] {
	return pulumix.Output[IssuerSpecCa]{
		OutputState: i.ToIssuerSpecCaOutputWithContext(ctx).OutputState,
	}
}

func (i IssuerSpecCaArgs) ToIssuerSpecCaPtrOutput() IssuerSpecCaPtrOutput {
	return i.ToIssuerSpecCaPtrOutputWithContext(context.Background())
}

func (i IssuerSpecCaArgs) ToIssuerSpecCaPtrOutputWithContext(ctx context.Context) IssuerSpecCaPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecCaOutput).ToIssuerSpecCaPtrOutputWithContext(ctx)
}

// IssuerSpecCaPtrInput is an input type that accepts IssuerSpecCaArgs, IssuerSpecCaPtr and IssuerSpecCaPtrOutput values.
// You can construct a concrete instance of `IssuerSpecCaPtrInput` via:
//
//	        IssuerSpecCaArgs{...}
//
//	or:
//
//	        nil
type IssuerSpecCaPtrInput interface {
	pulumi.Input

	ToIssuerSpecCaPtrOutput() IssuerSpecCaPtrOutput
	ToIssuerSpecCaPtrOutputWithContext(context.Context) IssuerSpecCaPtrOutput
}

type issuerSpecCaPtrType IssuerSpecCaArgs

func IssuerSpecCaPtr(v *IssuerSpecCaArgs) IssuerSpecCaPtrInput {
	return (*issuerSpecCaPtrType)(v)
}

func (*issuerSpecCaPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecCa)(nil)).Elem()
}

func (i *issuerSpecCaPtrType) ToIssuerSpecCaPtrOutput() IssuerSpecCaPtrOutput {
	return i.ToIssuerSpecCaPtrOutputWithContext(context.Background())
}

func (i *issuerSpecCaPtrType) ToIssuerSpecCaPtrOutputWithContext(ctx context.Context) IssuerSpecCaPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecCaPtrOutput)
}

func (i *issuerSpecCaPtrType) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecCa] {
	return pulumix.Output[*IssuerSpecCa]{
		OutputState: i.ToIssuerSpecCaPtrOutputWithContext(ctx).OutputState,
	}
}

// CA configures this issuer to sign certificates using a signing CA keypair stored in a Secret resource. This is used to build internal PKIs that are managed by cert-manager.
type IssuerSpecCaOutput struct{ *pulumi.OutputState }

func (IssuerSpecCaOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecCa)(nil)).Elem()
}

func (o IssuerSpecCaOutput) ToIssuerSpecCaOutput() IssuerSpecCaOutput {
	return o
}

func (o IssuerSpecCaOutput) ToIssuerSpecCaOutputWithContext(ctx context.Context) IssuerSpecCaOutput {
	return o
}

func (o IssuerSpecCaOutput) ToIssuerSpecCaPtrOutput() IssuerSpecCaPtrOutput {
	return o.ToIssuerSpecCaPtrOutputWithContext(context.Background())
}

func (o IssuerSpecCaOutput) ToIssuerSpecCaPtrOutputWithContext(ctx context.Context) IssuerSpecCaPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v IssuerSpecCa) *IssuerSpecCa {
		return &v
	}).(IssuerSpecCaPtrOutput)
}

func (o IssuerSpecCaOutput) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecCa] {
	return pulumix.Output[IssuerSpecCa]{
		OutputState: o.OutputState,
	}
}

// The CRL distribution points is an X.509 v3 certificate extension which identifies the location of the CRL from which the revocation of this certificate can be checked. If not set, certificates will be issued without distribution points set.
func (o IssuerSpecCaOutput) CrlDistributionPoints() pulumi.StringArrayOutput {
	return o.ApplyT(func(v IssuerSpecCa) []string { return v.CrlDistributionPoints }).(pulumi.StringArrayOutput)
}

// The OCSP server list is an X.509 v3 extension that defines a list of URLs of OCSP responders. The OCSP responders can be queried for the revocation status of an issued certificate. If not set, the certificate will be issued with no OCSP servers set. For example, an OCSP server URL could be "http://ocsp.int-x3.letsencrypt.org".
func (o IssuerSpecCaOutput) OcspServers() pulumi.StringArrayOutput {
	return o.ApplyT(func(v IssuerSpecCa) []string { return v.OcspServers }).(pulumi.StringArrayOutput)
}

// SecretName is the name of the secret used to sign Certificates issued by this Issuer.
func (o IssuerSpecCaOutput) SecretName() pulumi.StringOutput {
	return o.ApplyT(func(v IssuerSpecCa) string { return v.SecretName }).(pulumi.StringOutput)
}

type IssuerSpecCaPtrOutput struct{ *pulumi.OutputState }

func (IssuerSpecCaPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecCa)(nil)).Elem()
}

func (o IssuerSpecCaPtrOutput) ToIssuerSpecCaPtrOutput() IssuerSpecCaPtrOutput {
	return o
}

func (o IssuerSpecCaPtrOutput) ToIssuerSpecCaPtrOutputWithContext(ctx context.Context) IssuerSpecCaPtrOutput {
	return o
}

func (o IssuerSpecCaPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecCa] {
	return pulumix.Output[*IssuerSpecCa]{
		OutputState: o.OutputState,
	}
}

func (o IssuerSpecCaPtrOutput) Elem() IssuerSpecCaOutput {
	return o.ApplyT(func(v *IssuerSpecCa) IssuerSpecCa {
		if v != nil {
			return *v
		}
		var ret IssuerSpecCa
		return ret
	}).(IssuerSpecCaOutput)
}

// The CRL distribution points is an X.509 v3 certificate extension which identifies the location of the CRL from which the revocation of this certificate can be checked. If not set, certificates will be issued without distribution points set.
func (o IssuerSpecCaPtrOutput) CrlDistributionPoints() pulumi.StringArrayOutput {
	return o.ApplyT(func(v *IssuerSpecCa) []string {
		if v == nil {
			return nil
		}
		return v.CrlDistributionPoints
	}).(pulumi.StringArrayOutput)
}

// The OCSP server list is an X.509 v3 extension that defines a list of URLs of OCSP responders. The OCSP responders can be queried for the revocation status of an issued certificate. If not set, the certificate will be issued with no OCSP servers set. For example, an OCSP server URL could be "http://ocsp.int-x3.letsencrypt.org".
func (o IssuerSpecCaPtrOutput) OcspServers() pulumi.StringArrayOutput {
	return o.ApplyT(func(v *IssuerSpecCa) []string {
		if v == nil {
			return nil
		}
		return v.OcspServers
	}).(pulumi.StringArrayOutput)
}

// SecretName is the name of the secret used to sign Certificates issued by this Issuer.
func (o IssuerSpecCaPtrOutput) SecretName() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *IssuerSpecCa) *string {
		if v == nil {
			return nil
		}
		return &v.SecretName
	}).(pulumi.StringPtrOutput)
}

// SelfSigned configures this issuer to 'self sign' certificates using the private key used to create the CertificateRequest object.
type IssuerSpecSelfSigned struct {
	// The CRL distribution points is an X.509 v3 certificate extension which identifies the location of the CRL from which the revocation of this certificate can be checked. If not set certificate will be issued without CDP. Values are strings.
	CrlDistributionPoints []string `pulumi:"crlDistributionPoints"`
}

// IssuerSpecSelfSignedInput is an input type that accepts IssuerSpecSelfSignedArgs and IssuerSpecSelfSignedOutput values.
// You can construct a concrete instance of `IssuerSpecSelfSignedInput` via:
//
//	IssuerSpecSelfSignedArgs{...}
type IssuerSpecSelfSignedInput interface {
	pulumi.Input

	ToIssuerSpecSelfSignedOutput() IssuerSpecSelfSignedOutput
	ToIssuerSpecSelfSignedOutputWithContext(context.Context) IssuerSpecSelfSignedOutput
}

// SelfSigned configures this issuer to 'self sign' certificates using the private key used to create the CertificateRequest object.
type IssuerSpecSelfSignedArgs struct {
	// The CRL distribution points is an X.509 v3 certificate extension which identifies the location of the CRL from which the revocation of this certificate can be checked. If not set certificate will be issued without CDP. Values are strings.
	CrlDistributionPoints pulumi.StringArrayInput `pulumi:"crlDistributionPoints"`
}

func (IssuerSpecSelfSignedArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecSelfSigned)(nil)).Elem()
}

func (i IssuerSpecSelfSignedArgs) ToIssuerSpecSelfSignedOutput() IssuerSpecSelfSignedOutput {
	return i.ToIssuerSpecSelfSignedOutputWithContext(context.Background())
}

func (i IssuerSpecSelfSignedArgs) ToIssuerSpecSelfSignedOutputWithContext(ctx context.Context) IssuerSpecSelfSignedOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecSelfSignedOutput)
}

func (i IssuerSpecSelfSignedArgs) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecSelfSigned] {
	return pulumix.Output[IssuerSpecSelfSigned]{
		OutputState: i.ToIssuerSpecSelfSignedOutputWithContext(ctx).OutputState,
	}
}

func (i IssuerSpecSelfSignedArgs) ToIssuerSpecSelfSignedPtrOutput() IssuerSpecSelfSignedPtrOutput {
	return i.ToIssuerSpecSelfSignedPtrOutputWithContext(context.Background())
}

func (i IssuerSpecSelfSignedArgs) ToIssuerSpecSelfSignedPtrOutputWithContext(ctx context.Context) IssuerSpecSelfSignedPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecSelfSignedOutput).ToIssuerSpecSelfSignedPtrOutputWithContext(ctx)
}

// IssuerSpecSelfSignedPtrInput is an input type that accepts IssuerSpecSelfSignedArgs, IssuerSpecSelfSignedPtr and IssuerSpecSelfSignedPtrOutput values.
// You can construct a concrete instance of `IssuerSpecSelfSignedPtrInput` via:
//
//	        IssuerSpecSelfSignedArgs{...}
//
//	or:
//
//	        nil
type IssuerSpecSelfSignedPtrInput interface {
	pulumi.Input

	ToIssuerSpecSelfSignedPtrOutput() IssuerSpecSelfSignedPtrOutput
	ToIssuerSpecSelfSignedPtrOutputWithContext(context.Context) IssuerSpecSelfSignedPtrOutput
}

type issuerSpecSelfSignedPtrType IssuerSpecSelfSignedArgs

func IssuerSpecSelfSignedPtr(v *IssuerSpecSelfSignedArgs) IssuerSpecSelfSignedPtrInput {
	return (*issuerSpecSelfSignedPtrType)(v)
}

func (*issuerSpecSelfSignedPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecSelfSigned)(nil)).Elem()
}

func (i *issuerSpecSelfSignedPtrType) ToIssuerSpecSelfSignedPtrOutput() IssuerSpecSelfSignedPtrOutput {
	return i.ToIssuerSpecSelfSignedPtrOutputWithContext(context.Background())
}

func (i *issuerSpecSelfSignedPtrType) ToIssuerSpecSelfSignedPtrOutputWithContext(ctx context.Context) IssuerSpecSelfSignedPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecSelfSignedPtrOutput)
}

func (i *issuerSpecSelfSignedPtrType) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecSelfSigned] {
	return pulumix.Output[*IssuerSpecSelfSigned]{
		OutputState: i.ToIssuerSpecSelfSignedPtrOutputWithContext(ctx).OutputState,
	}
}

// SelfSigned configures this issuer to 'self sign' certificates using the private key used to create the CertificateRequest object.
type IssuerSpecSelfSignedOutput struct{ *pulumi.OutputState }

func (IssuerSpecSelfSignedOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecSelfSigned)(nil)).Elem()
}

func (o IssuerSpecSelfSignedOutput) ToIssuerSpecSelfSignedOutput() IssuerSpecSelfSignedOutput {
	return o
}

func (o IssuerSpecSelfSignedOutput) ToIssuerSpecSelfSignedOutputWithContext(ctx context.Context) IssuerSpecSelfSignedOutput {
	return o
}

func (o IssuerSpecSelfSignedOutput) ToIssuerSpecSelfSignedPtrOutput() IssuerSpecSelfSignedPtrOutput {
	return o.ToIssuerSpecSelfSignedPtrOutputWithContext(context.Background())
}

func (o IssuerSpecSelfSignedOutput) ToIssuerSpecSelfSignedPtrOutputWithContext(ctx context.Context) IssuerSpecSelfSignedPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v IssuerSpecSelfSigned) *IssuerSpecSelfSigned {
		return &v
	}).(IssuerSpecSelfSignedPtrOutput)
}

func (o IssuerSpecSelfSignedOutput) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecSelfSigned] {
	return pulumix.Output[IssuerSpecSelfSigned]{
		OutputState: o.OutputState,
	}
}

// The CRL distribution points is an X.509 v3 certificate extension which identifies the location of the CRL from which the revocation of this certificate can be checked. If not set certificate will be issued without CDP. Values are strings.
func (o IssuerSpecSelfSignedOutput) CrlDistributionPoints() pulumi.StringArrayOutput {
	return o.ApplyT(func(v IssuerSpecSelfSigned) []string { return v.CrlDistributionPoints }).(pulumi.StringArrayOutput)
}

type IssuerSpecSelfSignedPtrOutput struct{ *pulumi.OutputState }

func (IssuerSpecSelfSignedPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecSelfSigned)(nil)).Elem()
}

func (o IssuerSpecSelfSignedPtrOutput) ToIssuerSpecSelfSignedPtrOutput() IssuerSpecSelfSignedPtrOutput {
	return o
}

func (o IssuerSpecSelfSignedPtrOutput) ToIssuerSpecSelfSignedPtrOutputWithContext(ctx context.Context) IssuerSpecSelfSignedPtrOutput {
	return o
}

func (o IssuerSpecSelfSignedPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecSelfSigned] {
	return pulumix.Output[*IssuerSpecSelfSigned]{
		OutputState: o.OutputState,
	}
}

func (o IssuerSpecSelfSignedPtrOutput) Elem() IssuerSpecSelfSignedOutput {
	return o.ApplyT(func(v *IssuerSpecSelfSigned) IssuerSpecSelfSigned {
		if v != nil {
			return *v
		}
		var ret IssuerSpecSelfSigned
		return ret
	}).(IssuerSpecSelfSignedOutput)
}

// The CRL distribution points is an X.509 v3 certificate extension which identifies the location of the CRL from which the revocation of this certificate can be checked. If not set certificate will be issued without CDP. Values are strings.
func (o IssuerSpecSelfSignedPtrOutput) CrlDistributionPoints() pulumi.StringArrayOutput {
	return o.ApplyT(func(v *IssuerSpecSelfSigned) []string {
		if v == nil {
			return nil
		}
		return v.CrlDistributionPoints
	}).(pulumi.StringArrayOutput)
}

// Vault configures this issuer to sign certificates using a HashiCorp Vault PKI backend.
type IssuerSpecVault struct {
	// Auth configures how cert-manager authenticates with the Vault server.
	Auth IssuerSpecVaultAuth `pulumi:"auth"`
	// PEM-encoded CA bundle (base64-encoded) used to validate Vault server certificate. Only used if the Server URL is using HTTPS protocol. This parameter is ignored for plain HTTP protocol connection. If not set the system root certificates are used to validate the TLS connection.
	CaBundle *string `pulumi:"caBundle"`
	// Name of the vault namespace. Namespaces is a set of features within Vault Enterprise that allows Vault environments to support Secure Multi-tenancy. e.g: "ns1" More about namespaces can be found here https://www.vaultproject.io/docs/enterprise/namespaces
	Namespace *string `pulumi:"namespace"`
	// Path is the mount path of the Vault PKI backend's `sign` endpoint, e.g: "my_pki_mount/sign/my-role-name".
	Path string `pulumi:"path"`
	// Server is the connection address for the Vault server, e.g: "https://vault.example.com:8200".
	Server string `pulumi:"server"`
}

// IssuerSpecVaultInput is an input type that accepts IssuerSpecVaultArgs and IssuerSpecVaultOutput values.
// You can construct a concrete instance of `IssuerSpecVaultInput` via:
//
//	IssuerSpecVaultArgs{...}
type IssuerSpecVaultInput interface {
	pulumi.Input

	ToIssuerSpecVaultOutput() IssuerSpecVaultOutput
	ToIssuerSpecVaultOutputWithContext(context.Context) IssuerSpecVaultOutput
}

// Vault configures this issuer to sign certificates using a HashiCorp Vault PKI backend.
type IssuerSpecVaultArgs struct {
	// Auth configures how cert-manager authenticates with the Vault server.
	Auth IssuerSpecVaultAuthInput `pulumi:"auth"`
	// PEM-encoded CA bundle (base64-encoded) used to validate Vault server certificate. Only used if the Server URL is using HTTPS protocol. This parameter is ignored for plain HTTP protocol connection. If not set the system root certificates are used to validate the TLS connection.
	CaBundle pulumi.StringPtrInput `pulumi:"caBundle"`
	// Name of the vault namespace. Namespaces is a set of features within Vault Enterprise that allows Vault environments to support Secure Multi-tenancy. e.g: "ns1" More about namespaces can be found here https://www.vaultproject.io/docs/enterprise/namespaces
	Namespace pulumi.StringPtrInput `pulumi:"namespace"`
	// Path is the mount path of the Vault PKI backend's `sign` endpoint, e.g: "my_pki_mount/sign/my-role-name".
	Path pulumi.StringInput `pulumi:"path"`
	// Server is the connection address for the Vault server, e.g: "https://vault.example.com:8200".
	Server pulumi.StringInput `pulumi:"server"`
}

func (IssuerSpecVaultArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecVault)(nil)).Elem()
}

func (i IssuerSpecVaultArgs) ToIssuerSpecVaultOutput() IssuerSpecVaultOutput {
	return i.ToIssuerSpecVaultOutputWithContext(context.Background())
}

func (i IssuerSpecVaultArgs) ToIssuerSpecVaultOutputWithContext(ctx context.Context) IssuerSpecVaultOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecVaultOutput)
}

func (i IssuerSpecVaultArgs) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecVault] {
	return pulumix.Output[IssuerSpecVault]{
		OutputState: i.ToIssuerSpecVaultOutputWithContext(ctx).OutputState,
	}
}

func (i IssuerSpecVaultArgs) ToIssuerSpecVaultPtrOutput() IssuerSpecVaultPtrOutput {
	return i.ToIssuerSpecVaultPtrOutputWithContext(context.Background())
}

func (i IssuerSpecVaultArgs) ToIssuerSpecVaultPtrOutputWithContext(ctx context.Context) IssuerSpecVaultPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecVaultOutput).ToIssuerSpecVaultPtrOutputWithContext(ctx)
}

// IssuerSpecVaultPtrInput is an input type that accepts IssuerSpecVaultArgs, IssuerSpecVaultPtr and IssuerSpecVaultPtrOutput values.
// You can construct a concrete instance of `IssuerSpecVaultPtrInput` via:
//
//	        IssuerSpecVaultArgs{...}
//
//	or:
//
//	        nil
type IssuerSpecVaultPtrInput interface {
	pulumi.Input

	ToIssuerSpecVaultPtrOutput() IssuerSpecVaultPtrOutput
	ToIssuerSpecVaultPtrOutputWithContext(context.Context) IssuerSpecVaultPtrOutput
}

type issuerSpecVaultPtrType IssuerSpecVaultArgs

func IssuerSpecVaultPtr(v *IssuerSpecVaultArgs) IssuerSpecVaultPtrInput {
	return (*issuerSpecVaultPtrType)(v)
}

func (*issuerSpecVaultPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecVault)(nil)).Elem()
}

func (i *issuerSpecVaultPtrType) ToIssuerSpecVaultPtrOutput() IssuerSpecVaultPtrOutput {
	return i.ToIssuerSpecVaultPtrOutputWithContext(context.Background())
}

func (i *issuerSpecVaultPtrType) ToIssuerSpecVaultPtrOutputWithContext(ctx context.Context) IssuerSpecVaultPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecVaultPtrOutput)
}

func (i *issuerSpecVaultPtrType) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecVault] {
	return pulumix.Output[*IssuerSpecVault]{
		OutputState: i.ToIssuerSpecVaultPtrOutputWithContext(ctx).OutputState,
	}
}

// Vault configures this issuer to sign certificates using a HashiCorp Vault PKI backend.
type IssuerSpecVaultOutput struct{ *pulumi.OutputState }

func (IssuerSpecVaultOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecVault)(nil)).Elem()
}

func (o IssuerSpecVaultOutput) ToIssuerSpecVaultOutput() IssuerSpecVaultOutput {
	return o
}

func (o IssuerSpecVaultOutput) ToIssuerSpecVaultOutputWithContext(ctx context.Context) IssuerSpecVaultOutput {
	return o
}

func (o IssuerSpecVaultOutput) ToIssuerSpecVaultPtrOutput() IssuerSpecVaultPtrOutput {
	return o.ToIssuerSpecVaultPtrOutputWithContext(context.Background())
}

func (o IssuerSpecVaultOutput) ToIssuerSpecVaultPtrOutputWithContext(ctx context.Context) IssuerSpecVaultPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v IssuerSpecVault) *IssuerSpecVault {
		return &v
	}).(IssuerSpecVaultPtrOutput)
}

func (o IssuerSpecVaultOutput) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecVault] {
	return pulumix.Output[IssuerSpecVault]{
		OutputState: o.OutputState,
	}
}

// Auth configures how cert-manager authenticates with the Vault server.
func (o IssuerSpecVaultOutput) Auth() IssuerSpecVaultAuthOutput {
	return o.ApplyT(func(v IssuerSpecVault) IssuerSpecVaultAuth { return v.Auth }).(IssuerSpecVaultAuthOutput)
}

// PEM-encoded CA bundle (base64-encoded) used to validate Vault server certificate. Only used if the Server URL is using HTTPS protocol. This parameter is ignored for plain HTTP protocol connection. If not set the system root certificates are used to validate the TLS connection.
func (o IssuerSpecVaultOutput) CaBundle() pulumi.StringPtrOutput {
	return o.ApplyT(func(v IssuerSpecVault) *string { return v.CaBundle }).(pulumi.StringPtrOutput)
}

// Name of the vault namespace. Namespaces is a set of features within Vault Enterprise that allows Vault environments to support Secure Multi-tenancy. e.g: "ns1" More about namespaces can be found here https://www.vaultproject.io/docs/enterprise/namespaces
func (o IssuerSpecVaultOutput) Namespace() pulumi.StringPtrOutput {
	return o.ApplyT(func(v IssuerSpecVault) *string { return v.Namespace }).(pulumi.StringPtrOutput)
}

// Path is the mount path of the Vault PKI backend's `sign` endpoint, e.g: "my_pki_mount/sign/my-role-name".
func (o IssuerSpecVaultOutput) Path() pulumi.StringOutput {
	return o.ApplyT(func(v IssuerSpecVault) string { return v.Path }).(pulumi.StringOutput)
}

// Server is the connection address for the Vault server, e.g: "https://vault.example.com:8200".
func (o IssuerSpecVaultOutput) Server() pulumi.StringOutput {
	return o.ApplyT(func(v IssuerSpecVault) string { return v.Server }).(pulumi.StringOutput)
}

type IssuerSpecVaultPtrOutput struct{ *pulumi.OutputState }

func (IssuerSpecVaultPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecVault)(nil)).Elem()
}

func (o IssuerSpecVaultPtrOutput) ToIssuerSpecVaultPtrOutput() IssuerSpecVaultPtrOutput {
	return o
}

func (o IssuerSpecVaultPtrOutput) ToIssuerSpecVaultPtrOutputWithContext(ctx context.Context) IssuerSpecVaultPtrOutput {
	return o
}

func (o IssuerSpecVaultPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecVault] {
	return pulumix.Output[*IssuerSpecVault]{
		OutputState: o.OutputState,
	}
}

func (o IssuerSpecVaultPtrOutput) Elem() IssuerSpecVaultOutput {
	return o.ApplyT(func(v *IssuerSpecVault) IssuerSpecVault {
		if v != nil {
			return *v
		}
		var ret IssuerSpecVault
		return ret
	}).(IssuerSpecVaultOutput)
}

// Auth configures how cert-manager authenticates with the Vault server.
func (o IssuerSpecVaultPtrOutput) Auth() IssuerSpecVaultAuthPtrOutput {
	return o.ApplyT(func(v *IssuerSpecVault) *IssuerSpecVaultAuth {
		if v == nil {
			return nil
		}
		return &v.Auth
	}).(IssuerSpecVaultAuthPtrOutput)
}

// PEM-encoded CA bundle (base64-encoded) used to validate Vault server certificate. Only used if the Server URL is using HTTPS protocol. This parameter is ignored for plain HTTP protocol connection. If not set the system root certificates are used to validate the TLS connection.
func (o IssuerSpecVaultPtrOutput) CaBundle() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *IssuerSpecVault) *string {
		if v == nil {
			return nil
		}
		return v.CaBundle
	}).(pulumi.StringPtrOutput)
}

// Name of the vault namespace. Namespaces is a set of features within Vault Enterprise that allows Vault environments to support Secure Multi-tenancy. e.g: "ns1" More about namespaces can be found here https://www.vaultproject.io/docs/enterprise/namespaces
func (o IssuerSpecVaultPtrOutput) Namespace() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *IssuerSpecVault) *string {
		if v == nil {
			return nil
		}
		return v.Namespace
	}).(pulumi.StringPtrOutput)
}

// Path is the mount path of the Vault PKI backend's `sign` endpoint, e.g: "my_pki_mount/sign/my-role-name".
func (o IssuerSpecVaultPtrOutput) Path() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *IssuerSpecVault) *string {
		if v == nil {
			return nil
		}
		return &v.Path
	}).(pulumi.StringPtrOutput)
}

// Server is the connection address for the Vault server, e.g: "https://vault.example.com:8200".
func (o IssuerSpecVaultPtrOutput) Server() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *IssuerSpecVault) *string {
		if v == nil {
			return nil
		}
		return &v.Server
	}).(pulumi.StringPtrOutput)
}

// Auth configures how cert-manager authenticates with the Vault server.
type IssuerSpecVaultAuth struct {
	// AppRole authenticates with Vault using the App Role auth mechanism, with the role and secret stored in a Kubernetes Secret resource.
	AppRole *IssuerSpecVaultAuthAppRole `pulumi:"appRole"`
	// Kubernetes authenticates with Vault by passing the ServiceAccount token stored in the named Secret resource to the Vault server.
	Kubernetes *IssuerSpecVaultAuthKubernetes `pulumi:"kubernetes"`
	// TokenSecretRef authenticates with Vault by presenting a token.
	TokenSecretRef *IssuerSpecVaultAuthTokenSecretRef `pulumi:"tokenSecretRef"`
}

// IssuerSpecVaultAuthInput is an input type that accepts IssuerSpecVaultAuthArgs and IssuerSpecVaultAuthOutput values.
// You can construct a concrete instance of `IssuerSpecVaultAuthInput` via:
//
//	IssuerSpecVaultAuthArgs{...}
type IssuerSpecVaultAuthInput interface {
	pulumi.Input

	ToIssuerSpecVaultAuthOutput() IssuerSpecVaultAuthOutput
	ToIssuerSpecVaultAuthOutputWithContext(context.Context) IssuerSpecVaultAuthOutput
}

// Auth configures how cert-manager authenticates with the Vault server.
type IssuerSpecVaultAuthArgs struct {
	// AppRole authenticates with Vault using the App Role auth mechanism, with the role and secret stored in a Kubernetes Secret resource.
	AppRole IssuerSpecVaultAuthAppRolePtrInput `pulumi:"appRole"`
	// Kubernetes authenticates with Vault by passing the ServiceAccount token stored in the named Secret resource to the Vault server.
	Kubernetes IssuerSpecVaultAuthKubernetesPtrInput `pulumi:"kubernetes"`
	// TokenSecretRef authenticates with Vault by presenting a token.
	TokenSecretRef IssuerSpecVaultAuthTokenSecretRefPtrInput `pulumi:"tokenSecretRef"`
}

func (IssuerSpecVaultAuthArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecVaultAuth)(nil)).Elem()
}

func (i IssuerSpecVaultAuthArgs) ToIssuerSpecVaultAuthOutput() IssuerSpecVaultAuthOutput {
	return i.ToIssuerSpecVaultAuthOutputWithContext(context.Background())
}

func (i IssuerSpecVaultAuthArgs) ToIssuerSpecVaultAuthOutputWithContext(ctx context.Context) IssuerSpecVaultAuthOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecVaultAuthOutput)
}

func (i IssuerSpecVaultAuthArgs) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecVaultAuth] {
	return pulumix.Output[IssuerSpecVaultAuth]{
		OutputState: i.ToIssuerSpecVaultAuthOutputWithContext(ctx).OutputState,
	}
}

func (i IssuerSpecVaultAuthArgs) ToIssuerSpecVaultAuthPtrOutput() IssuerSpecVaultAuthPtrOutput {
	return i.ToIssuerSpecVaultAuthPtrOutputWithContext(context.Background())
}

func (i IssuerSpecVaultAuthArgs) ToIssuerSpecVaultAuthPtrOutputWithContext(ctx context.Context) IssuerSpecVaultAuthPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecVaultAuthOutput).ToIssuerSpecVaultAuthPtrOutputWithContext(ctx)
}

// IssuerSpecVaultAuthPtrInput is an input type that accepts IssuerSpecVaultAuthArgs, IssuerSpecVaultAuthPtr and IssuerSpecVaultAuthPtrOutput values.
// You can construct a concrete instance of `IssuerSpecVaultAuthPtrInput` via:
//
//	        IssuerSpecVaultAuthArgs{...}
//
//	or:
//
//	        nil
type IssuerSpecVaultAuthPtrInput interface {
	pulumi.Input

	ToIssuerSpecVaultAuthPtrOutput() IssuerSpecVaultAuthPtrOutput
	ToIssuerSpecVaultAuthPtrOutputWithContext(context.Context) IssuerSpecVaultAuthPtrOutput
}

type issuerSpecVaultAuthPtrType IssuerSpecVaultAuthArgs

func IssuerSpecVaultAuthPtr(v *IssuerSpecVaultAuthArgs) IssuerSpecVaultAuthPtrInput {
	return (*issuerSpecVaultAuthPtrType)(v)
}

func (*issuerSpecVaultAuthPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecVaultAuth)(nil)).Elem()
}

func (i *issuerSpecVaultAuthPtrType) ToIssuerSpecVaultAuthPtrOutput() IssuerSpecVaultAuthPtrOutput {
	return i.ToIssuerSpecVaultAuthPtrOutputWithContext(context.Background())
}

func (i *issuerSpecVaultAuthPtrType) ToIssuerSpecVaultAuthPtrOutputWithContext(ctx context.Context) IssuerSpecVaultAuthPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecVaultAuthPtrOutput)
}

func (i *issuerSpecVaultAuthPtrType) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecVaultAuth] {
	return pulumix.Output[*IssuerSpecVaultAuth]{
		OutputState: i.ToIssuerSpecVaultAuthPtrOutputWithContext(ctx).OutputState,
	}
}

// Auth configures how cert-manager authenticates with the Vault server.
type IssuerSpecVaultAuthOutput struct{ *pulumi.OutputState }

func (IssuerSpecVaultAuthOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecVaultAuth)(nil)).Elem()
}

func (o IssuerSpecVaultAuthOutput) ToIssuerSpecVaultAuthOutput() IssuerSpecVaultAuthOutput {
	return o
}

func (o IssuerSpecVaultAuthOutput) ToIssuerSpecVaultAuthOutputWithContext(ctx context.Context) IssuerSpecVaultAuthOutput {
	return o
}

func (o IssuerSpecVaultAuthOutput) ToIssuerSpecVaultAuthPtrOutput() IssuerSpecVaultAuthPtrOutput {
	return o.ToIssuerSpecVaultAuthPtrOutputWithContext(context.Background())
}

func (o IssuerSpecVaultAuthOutput) ToIssuerSpecVaultAuthPtrOutputWithContext(ctx context.Context) IssuerSpecVaultAuthPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v IssuerSpecVaultAuth) *IssuerSpecVaultAuth {
		return &v
	}).(IssuerSpecVaultAuthPtrOutput)
}

func (o IssuerSpecVaultAuthOutput) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecVaultAuth] {
	return pulumix.Output[IssuerSpecVaultAuth]{
		OutputState: o.OutputState,
	}
}

// AppRole authenticates with Vault using the App Role auth mechanism, with the role and secret stored in a Kubernetes Secret resource.
func (o IssuerSpecVaultAuthOutput) AppRole() IssuerSpecVaultAuthAppRolePtrOutput {
	return o.ApplyT(func(v IssuerSpecVaultAuth) *IssuerSpecVaultAuthAppRole { return v.AppRole }).(IssuerSpecVaultAuthAppRolePtrOutput)
}

// Kubernetes authenticates with Vault by passing the ServiceAccount token stored in the named Secret resource to the Vault server.
func (o IssuerSpecVaultAuthOutput) Kubernetes() IssuerSpecVaultAuthKubernetesPtrOutput {
	return o.ApplyT(func(v IssuerSpecVaultAuth) *IssuerSpecVaultAuthKubernetes { return v.Kubernetes }).(IssuerSpecVaultAuthKubernetesPtrOutput)
}

// TokenSecretRef authenticates with Vault by presenting a token.
func (o IssuerSpecVaultAuthOutput) TokenSecretRef() IssuerSpecVaultAuthTokenSecretRefPtrOutput {
	return o.ApplyT(func(v IssuerSpecVaultAuth) *IssuerSpecVaultAuthTokenSecretRef { return v.TokenSecretRef }).(IssuerSpecVaultAuthTokenSecretRefPtrOutput)
}

type IssuerSpecVaultAuthPtrOutput struct{ *pulumi.OutputState }

func (IssuerSpecVaultAuthPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecVaultAuth)(nil)).Elem()
}

func (o IssuerSpecVaultAuthPtrOutput) ToIssuerSpecVaultAuthPtrOutput() IssuerSpecVaultAuthPtrOutput {
	return o
}

func (o IssuerSpecVaultAuthPtrOutput) ToIssuerSpecVaultAuthPtrOutputWithContext(ctx context.Context) IssuerSpecVaultAuthPtrOutput {
	return o
}

func (o IssuerSpecVaultAuthPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecVaultAuth] {
	return pulumix.Output[*IssuerSpecVaultAuth]{
		OutputState: o.OutputState,
	}
}

func (o IssuerSpecVaultAuthPtrOutput) Elem() IssuerSpecVaultAuthOutput {
	return o.ApplyT(func(v *IssuerSpecVaultAuth) IssuerSpecVaultAuth {
		if v != nil {
			return *v
		}
		var ret IssuerSpecVaultAuth
		return ret
	}).(IssuerSpecVaultAuthOutput)
}

// AppRole authenticates with Vault using the App Role auth mechanism, with the role and secret stored in a Kubernetes Secret resource.
func (o IssuerSpecVaultAuthPtrOutput) AppRole() IssuerSpecVaultAuthAppRolePtrOutput {
	return o.ApplyT(func(v *IssuerSpecVaultAuth) *IssuerSpecVaultAuthAppRole {
		if v == nil {
			return nil
		}
		return v.AppRole
	}).(IssuerSpecVaultAuthAppRolePtrOutput)
}

// Kubernetes authenticates with Vault by passing the ServiceAccount token stored in the named Secret resource to the Vault server.
func (o IssuerSpecVaultAuthPtrOutput) Kubernetes() IssuerSpecVaultAuthKubernetesPtrOutput {
	return o.ApplyT(func(v *IssuerSpecVaultAuth) *IssuerSpecVaultAuthKubernetes {
		if v == nil {
			return nil
		}
		return v.Kubernetes
	}).(IssuerSpecVaultAuthKubernetesPtrOutput)
}

// TokenSecretRef authenticates with Vault by presenting a token.
func (o IssuerSpecVaultAuthPtrOutput) TokenSecretRef() IssuerSpecVaultAuthTokenSecretRefPtrOutput {
	return o.ApplyT(func(v *IssuerSpecVaultAuth) *IssuerSpecVaultAuthTokenSecretRef {
		if v == nil {
			return nil
		}
		return v.TokenSecretRef
	}).(IssuerSpecVaultAuthTokenSecretRefPtrOutput)
}

// AppRole authenticates with Vault using the App Role auth mechanism, with the role and secret stored in a Kubernetes Secret resource.
type IssuerSpecVaultAuthAppRole struct {
	// Path where the App Role authentication backend is mounted in Vault, e.g: "approle"
	Path string `pulumi:"path"`
	// RoleID configured in the App Role authentication backend when setting up the authentication backend in Vault.
	RoleId string `pulumi:"roleId"`
	// Reference to a key in a Secret that contains the App Role secret used to authenticate with Vault. The `key` field must be specified and denotes which entry within the Secret resource is used as the app role secret.
	SecretRef IssuerSpecVaultAuthAppRoleSecretRef `pulumi:"secretRef"`
}

// IssuerSpecVaultAuthAppRoleInput is an input type that accepts IssuerSpecVaultAuthAppRoleArgs and IssuerSpecVaultAuthAppRoleOutput values.
// You can construct a concrete instance of `IssuerSpecVaultAuthAppRoleInput` via:
//
//	IssuerSpecVaultAuthAppRoleArgs{...}
type IssuerSpecVaultAuthAppRoleInput interface {
	pulumi.Input

	ToIssuerSpecVaultAuthAppRoleOutput() IssuerSpecVaultAuthAppRoleOutput
	ToIssuerSpecVaultAuthAppRoleOutputWithContext(context.Context) IssuerSpecVaultAuthAppRoleOutput
}

// AppRole authenticates with Vault using the App Role auth mechanism, with the role and secret stored in a Kubernetes Secret resource.
type IssuerSpecVaultAuthAppRoleArgs struct {
	// Path where the App Role authentication backend is mounted in Vault, e.g: "approle"
	Path pulumi.StringInput `pulumi:"path"`
	// RoleID configured in the App Role authentication backend when setting up the authentication backend in Vault.
	RoleId pulumi.StringInput `pulumi:"roleId"`
	// Reference to a key in a Secret that contains the App Role secret used to authenticate with Vault. The `key` field must be specified and denotes which entry within the Secret resource is used as the app role secret.
	SecretRef IssuerSpecVaultAuthAppRoleSecretRefInput `pulumi:"secretRef"`
}

func (IssuerSpecVaultAuthAppRoleArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecVaultAuthAppRole)(nil)).Elem()
}

func (i IssuerSpecVaultAuthAppRoleArgs) ToIssuerSpecVaultAuthAppRoleOutput() IssuerSpecVaultAuthAppRoleOutput {
	return i.ToIssuerSpecVaultAuthAppRoleOutputWithContext(context.Background())
}

func (i IssuerSpecVaultAuthAppRoleArgs) ToIssuerSpecVaultAuthAppRoleOutputWithContext(ctx context.Context) IssuerSpecVaultAuthAppRoleOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecVaultAuthAppRoleOutput)
}

func (i IssuerSpecVaultAuthAppRoleArgs) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecVaultAuthAppRole] {
	return pulumix.Output[IssuerSpecVaultAuthAppRole]{
		OutputState: i.ToIssuerSpecVaultAuthAppRoleOutputWithContext(ctx).OutputState,
	}
}

func (i IssuerSpecVaultAuthAppRoleArgs) ToIssuerSpecVaultAuthAppRolePtrOutput() IssuerSpecVaultAuthAppRolePtrOutput {
	return i.ToIssuerSpecVaultAuthAppRolePtrOutputWithContext(context.Background())
}

func (i IssuerSpecVaultAuthAppRoleArgs) ToIssuerSpecVaultAuthAppRolePtrOutputWithContext(ctx context.Context) IssuerSpecVaultAuthAppRolePtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecVaultAuthAppRoleOutput).ToIssuerSpecVaultAuthAppRolePtrOutputWithContext(ctx)
}

// IssuerSpecVaultAuthAppRolePtrInput is an input type that accepts IssuerSpecVaultAuthAppRoleArgs, IssuerSpecVaultAuthAppRolePtr and IssuerSpecVaultAuthAppRolePtrOutput values.
// You can construct a concrete instance of `IssuerSpecVaultAuthAppRolePtrInput` via:
//
//	        IssuerSpecVaultAuthAppRoleArgs{...}
//
//	or:
//
//	        nil
type IssuerSpecVaultAuthAppRolePtrInput interface {
	pulumi.Input

	ToIssuerSpecVaultAuthAppRolePtrOutput() IssuerSpecVaultAuthAppRolePtrOutput
	ToIssuerSpecVaultAuthAppRolePtrOutputWithContext(context.Context) IssuerSpecVaultAuthAppRolePtrOutput
}

type issuerSpecVaultAuthAppRolePtrType IssuerSpecVaultAuthAppRoleArgs

func IssuerSpecVaultAuthAppRolePtr(v *IssuerSpecVaultAuthAppRoleArgs) IssuerSpecVaultAuthAppRolePtrInput {
	return (*issuerSpecVaultAuthAppRolePtrType)(v)
}

func (*issuerSpecVaultAuthAppRolePtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecVaultAuthAppRole)(nil)).Elem()
}

func (i *issuerSpecVaultAuthAppRolePtrType) ToIssuerSpecVaultAuthAppRolePtrOutput() IssuerSpecVaultAuthAppRolePtrOutput {
	return i.ToIssuerSpecVaultAuthAppRolePtrOutputWithContext(context.Background())
}

func (i *issuerSpecVaultAuthAppRolePtrType) ToIssuerSpecVaultAuthAppRolePtrOutputWithContext(ctx context.Context) IssuerSpecVaultAuthAppRolePtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecVaultAuthAppRolePtrOutput)
}

func (i *issuerSpecVaultAuthAppRolePtrType) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecVaultAuthAppRole] {
	return pulumix.Output[*IssuerSpecVaultAuthAppRole]{
		OutputState: i.ToIssuerSpecVaultAuthAppRolePtrOutputWithContext(ctx).OutputState,
	}
}

// AppRole authenticates with Vault using the App Role auth mechanism, with the role and secret stored in a Kubernetes Secret resource.
type IssuerSpecVaultAuthAppRoleOutput struct{ *pulumi.OutputState }

func (IssuerSpecVaultAuthAppRoleOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecVaultAuthAppRole)(nil)).Elem()
}

func (o IssuerSpecVaultAuthAppRoleOutput) ToIssuerSpecVaultAuthAppRoleOutput() IssuerSpecVaultAuthAppRoleOutput {
	return o
}

func (o IssuerSpecVaultAuthAppRoleOutput) ToIssuerSpecVaultAuthAppRoleOutputWithContext(ctx context.Context) IssuerSpecVaultAuthAppRoleOutput {
	return o
}

func (o IssuerSpecVaultAuthAppRoleOutput) ToIssuerSpecVaultAuthAppRolePtrOutput() IssuerSpecVaultAuthAppRolePtrOutput {
	return o.ToIssuerSpecVaultAuthAppRolePtrOutputWithContext(context.Background())
}

func (o IssuerSpecVaultAuthAppRoleOutput) ToIssuerSpecVaultAuthAppRolePtrOutputWithContext(ctx context.Context) IssuerSpecVaultAuthAppRolePtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v IssuerSpecVaultAuthAppRole) *IssuerSpecVaultAuthAppRole {
		return &v
	}).(IssuerSpecVaultAuthAppRolePtrOutput)
}

func (o IssuerSpecVaultAuthAppRoleOutput) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecVaultAuthAppRole] {
	return pulumix.Output[IssuerSpecVaultAuthAppRole]{
		OutputState: o.OutputState,
	}
}

// Path where the App Role authentication backend is mounted in Vault, e.g: "approle"
func (o IssuerSpecVaultAuthAppRoleOutput) Path() pulumi.StringOutput {
	return o.ApplyT(func(v IssuerSpecVaultAuthAppRole) string { return v.Path }).(pulumi.StringOutput)
}

// RoleID configured in the App Role authentication backend when setting up the authentication backend in Vault.
func (o IssuerSpecVaultAuthAppRoleOutput) RoleId() pulumi.StringOutput {
	return o.ApplyT(func(v IssuerSpecVaultAuthAppRole) string { return v.RoleId }).(pulumi.StringOutput)
}

// Reference to a key in a Secret that contains the App Role secret used to authenticate with Vault. The `key` field must be specified and denotes which entry within the Secret resource is used as the app role secret.
func (o IssuerSpecVaultAuthAppRoleOutput) SecretRef() IssuerSpecVaultAuthAppRoleSecretRefOutput {
	return o.ApplyT(func(v IssuerSpecVaultAuthAppRole) IssuerSpecVaultAuthAppRoleSecretRef { return v.SecretRef }).(IssuerSpecVaultAuthAppRoleSecretRefOutput)
}

type IssuerSpecVaultAuthAppRolePtrOutput struct{ *pulumi.OutputState }

func (IssuerSpecVaultAuthAppRolePtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecVaultAuthAppRole)(nil)).Elem()
}

func (o IssuerSpecVaultAuthAppRolePtrOutput) ToIssuerSpecVaultAuthAppRolePtrOutput() IssuerSpecVaultAuthAppRolePtrOutput {
	return o
}

func (o IssuerSpecVaultAuthAppRolePtrOutput) ToIssuerSpecVaultAuthAppRolePtrOutputWithContext(ctx context.Context) IssuerSpecVaultAuthAppRolePtrOutput {
	return o
}

func (o IssuerSpecVaultAuthAppRolePtrOutput) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecVaultAuthAppRole] {
	return pulumix.Output[*IssuerSpecVaultAuthAppRole]{
		OutputState: o.OutputState,
	}
}

func (o IssuerSpecVaultAuthAppRolePtrOutput) Elem() IssuerSpecVaultAuthAppRoleOutput {
	return o.ApplyT(func(v *IssuerSpecVaultAuthAppRole) IssuerSpecVaultAuthAppRole {
		if v != nil {
			return *v
		}
		var ret IssuerSpecVaultAuthAppRole
		return ret
	}).(IssuerSpecVaultAuthAppRoleOutput)
}

// Path where the App Role authentication backend is mounted in Vault, e.g: "approle"
func (o IssuerSpecVaultAuthAppRolePtrOutput) Path() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *IssuerSpecVaultAuthAppRole) *string {
		if v == nil {
			return nil
		}
		return &v.Path
	}).(pulumi.StringPtrOutput)
}

// RoleID configured in the App Role authentication backend when setting up the authentication backend in Vault.
func (o IssuerSpecVaultAuthAppRolePtrOutput) RoleId() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *IssuerSpecVaultAuthAppRole) *string {
		if v == nil {
			return nil
		}
		return &v.RoleId
	}).(pulumi.StringPtrOutput)
}

// Reference to a key in a Secret that contains the App Role secret used to authenticate with Vault. The `key` field must be specified and denotes which entry within the Secret resource is used as the app role secret.
func (o IssuerSpecVaultAuthAppRolePtrOutput) SecretRef() IssuerSpecVaultAuthAppRoleSecretRefPtrOutput {
	return o.ApplyT(func(v *IssuerSpecVaultAuthAppRole) *IssuerSpecVaultAuthAppRoleSecretRef {
		if v == nil {
			return nil
		}
		return &v.SecretRef
	}).(IssuerSpecVaultAuthAppRoleSecretRefPtrOutput)
}

// Reference to a key in a Secret that contains the App Role secret used to authenticate with Vault. The `key` field must be specified and denotes which entry within the Secret resource is used as the app role secret.
type IssuerSpecVaultAuthAppRoleSecretRef struct {
	// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
	Key *string `pulumi:"key"`
	// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
	Name string `pulumi:"name"`
}

// IssuerSpecVaultAuthAppRoleSecretRefInput is an input type that accepts IssuerSpecVaultAuthAppRoleSecretRefArgs and IssuerSpecVaultAuthAppRoleSecretRefOutput values.
// You can construct a concrete instance of `IssuerSpecVaultAuthAppRoleSecretRefInput` via:
//
//	IssuerSpecVaultAuthAppRoleSecretRefArgs{...}
type IssuerSpecVaultAuthAppRoleSecretRefInput interface {
	pulumi.Input

	ToIssuerSpecVaultAuthAppRoleSecretRefOutput() IssuerSpecVaultAuthAppRoleSecretRefOutput
	ToIssuerSpecVaultAuthAppRoleSecretRefOutputWithContext(context.Context) IssuerSpecVaultAuthAppRoleSecretRefOutput
}

// Reference to a key in a Secret that contains the App Role secret used to authenticate with Vault. The `key` field must be specified and denotes which entry within the Secret resource is used as the app role secret.
type IssuerSpecVaultAuthAppRoleSecretRefArgs struct {
	// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
	Key pulumi.StringPtrInput `pulumi:"key"`
	// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
	Name pulumi.StringInput `pulumi:"name"`
}

func (IssuerSpecVaultAuthAppRoleSecretRefArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecVaultAuthAppRoleSecretRef)(nil)).Elem()
}

func (i IssuerSpecVaultAuthAppRoleSecretRefArgs) ToIssuerSpecVaultAuthAppRoleSecretRefOutput() IssuerSpecVaultAuthAppRoleSecretRefOutput {
	return i.ToIssuerSpecVaultAuthAppRoleSecretRefOutputWithContext(context.Background())
}

func (i IssuerSpecVaultAuthAppRoleSecretRefArgs) ToIssuerSpecVaultAuthAppRoleSecretRefOutputWithContext(ctx context.Context) IssuerSpecVaultAuthAppRoleSecretRefOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecVaultAuthAppRoleSecretRefOutput)
}

func (i IssuerSpecVaultAuthAppRoleSecretRefArgs) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecVaultAuthAppRoleSecretRef] {
	return pulumix.Output[IssuerSpecVaultAuthAppRoleSecretRef]{
		OutputState: i.ToIssuerSpecVaultAuthAppRoleSecretRefOutputWithContext(ctx).OutputState,
	}
}

func (i IssuerSpecVaultAuthAppRoleSecretRefArgs) ToIssuerSpecVaultAuthAppRoleSecretRefPtrOutput() IssuerSpecVaultAuthAppRoleSecretRefPtrOutput {
	return i.ToIssuerSpecVaultAuthAppRoleSecretRefPtrOutputWithContext(context.Background())
}

func (i IssuerSpecVaultAuthAppRoleSecretRefArgs) ToIssuerSpecVaultAuthAppRoleSecretRefPtrOutputWithContext(ctx context.Context) IssuerSpecVaultAuthAppRoleSecretRefPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecVaultAuthAppRoleSecretRefOutput).ToIssuerSpecVaultAuthAppRoleSecretRefPtrOutputWithContext(ctx)
}

// IssuerSpecVaultAuthAppRoleSecretRefPtrInput is an input type that accepts IssuerSpecVaultAuthAppRoleSecretRefArgs, IssuerSpecVaultAuthAppRoleSecretRefPtr and IssuerSpecVaultAuthAppRoleSecretRefPtrOutput values.
// You can construct a concrete instance of `IssuerSpecVaultAuthAppRoleSecretRefPtrInput` via:
//
//	        IssuerSpecVaultAuthAppRoleSecretRefArgs{...}
//
//	or:
//
//	        nil
type IssuerSpecVaultAuthAppRoleSecretRefPtrInput interface {
	pulumi.Input

	ToIssuerSpecVaultAuthAppRoleSecretRefPtrOutput() IssuerSpecVaultAuthAppRoleSecretRefPtrOutput
	ToIssuerSpecVaultAuthAppRoleSecretRefPtrOutputWithContext(context.Context) IssuerSpecVaultAuthAppRoleSecretRefPtrOutput
}

type issuerSpecVaultAuthAppRoleSecretRefPtrType IssuerSpecVaultAuthAppRoleSecretRefArgs

func IssuerSpecVaultAuthAppRoleSecretRefPtr(v *IssuerSpecVaultAuthAppRoleSecretRefArgs) IssuerSpecVaultAuthAppRoleSecretRefPtrInput {
	return (*issuerSpecVaultAuthAppRoleSecretRefPtrType)(v)
}

func (*issuerSpecVaultAuthAppRoleSecretRefPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecVaultAuthAppRoleSecretRef)(nil)).Elem()
}

func (i *issuerSpecVaultAuthAppRoleSecretRefPtrType) ToIssuerSpecVaultAuthAppRoleSecretRefPtrOutput() IssuerSpecVaultAuthAppRoleSecretRefPtrOutput {
	return i.ToIssuerSpecVaultAuthAppRoleSecretRefPtrOutputWithContext(context.Background())
}

func (i *issuerSpecVaultAuthAppRoleSecretRefPtrType) ToIssuerSpecVaultAuthAppRoleSecretRefPtrOutputWithContext(ctx context.Context) IssuerSpecVaultAuthAppRoleSecretRefPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecVaultAuthAppRoleSecretRefPtrOutput)
}

func (i *issuerSpecVaultAuthAppRoleSecretRefPtrType) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecVaultAuthAppRoleSecretRef] {
	return pulumix.Output[*IssuerSpecVaultAuthAppRoleSecretRef]{
		OutputState: i.ToIssuerSpecVaultAuthAppRoleSecretRefPtrOutputWithContext(ctx).OutputState,
	}
}

// Reference to a key in a Secret that contains the App Role secret used to authenticate with Vault. The `key` field must be specified and denotes which entry within the Secret resource is used as the app role secret.
type IssuerSpecVaultAuthAppRoleSecretRefOutput struct{ *pulumi.OutputState }

func (IssuerSpecVaultAuthAppRoleSecretRefOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecVaultAuthAppRoleSecretRef)(nil)).Elem()
}

func (o IssuerSpecVaultAuthAppRoleSecretRefOutput) ToIssuerSpecVaultAuthAppRoleSecretRefOutput() IssuerSpecVaultAuthAppRoleSecretRefOutput {
	return o
}

func (o IssuerSpecVaultAuthAppRoleSecretRefOutput) ToIssuerSpecVaultAuthAppRoleSecretRefOutputWithContext(ctx context.Context) IssuerSpecVaultAuthAppRoleSecretRefOutput {
	return o
}

func (o IssuerSpecVaultAuthAppRoleSecretRefOutput) ToIssuerSpecVaultAuthAppRoleSecretRefPtrOutput() IssuerSpecVaultAuthAppRoleSecretRefPtrOutput {
	return o.ToIssuerSpecVaultAuthAppRoleSecretRefPtrOutputWithContext(context.Background())
}

func (o IssuerSpecVaultAuthAppRoleSecretRefOutput) ToIssuerSpecVaultAuthAppRoleSecretRefPtrOutputWithContext(ctx context.Context) IssuerSpecVaultAuthAppRoleSecretRefPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v IssuerSpecVaultAuthAppRoleSecretRef) *IssuerSpecVaultAuthAppRoleSecretRef {
		return &v
	}).(IssuerSpecVaultAuthAppRoleSecretRefPtrOutput)
}

func (o IssuerSpecVaultAuthAppRoleSecretRefOutput) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecVaultAuthAppRoleSecretRef] {
	return pulumix.Output[IssuerSpecVaultAuthAppRoleSecretRef]{
		OutputState: o.OutputState,
	}
}

// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
func (o IssuerSpecVaultAuthAppRoleSecretRefOutput) Key() pulumi.StringPtrOutput {
	return o.ApplyT(func(v IssuerSpecVaultAuthAppRoleSecretRef) *string { return v.Key }).(pulumi.StringPtrOutput)
}

// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
func (o IssuerSpecVaultAuthAppRoleSecretRefOutput) Name() pulumi.StringOutput {
	return o.ApplyT(func(v IssuerSpecVaultAuthAppRoleSecretRef) string { return v.Name }).(pulumi.StringOutput)
}

type IssuerSpecVaultAuthAppRoleSecretRefPtrOutput struct{ *pulumi.OutputState }

func (IssuerSpecVaultAuthAppRoleSecretRefPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecVaultAuthAppRoleSecretRef)(nil)).Elem()
}

func (o IssuerSpecVaultAuthAppRoleSecretRefPtrOutput) ToIssuerSpecVaultAuthAppRoleSecretRefPtrOutput() IssuerSpecVaultAuthAppRoleSecretRefPtrOutput {
	return o
}

func (o IssuerSpecVaultAuthAppRoleSecretRefPtrOutput) ToIssuerSpecVaultAuthAppRoleSecretRefPtrOutputWithContext(ctx context.Context) IssuerSpecVaultAuthAppRoleSecretRefPtrOutput {
	return o
}

func (o IssuerSpecVaultAuthAppRoleSecretRefPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecVaultAuthAppRoleSecretRef] {
	return pulumix.Output[*IssuerSpecVaultAuthAppRoleSecretRef]{
		OutputState: o.OutputState,
	}
}

func (o IssuerSpecVaultAuthAppRoleSecretRefPtrOutput) Elem() IssuerSpecVaultAuthAppRoleSecretRefOutput {
	return o.ApplyT(func(v *IssuerSpecVaultAuthAppRoleSecretRef) IssuerSpecVaultAuthAppRoleSecretRef {
		if v != nil {
			return *v
		}
		var ret IssuerSpecVaultAuthAppRoleSecretRef
		return ret
	}).(IssuerSpecVaultAuthAppRoleSecretRefOutput)
}

// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
func (o IssuerSpecVaultAuthAppRoleSecretRefPtrOutput) Key() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *IssuerSpecVaultAuthAppRoleSecretRef) *string {
		if v == nil {
			return nil
		}
		return v.Key
	}).(pulumi.StringPtrOutput)
}

// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
func (o IssuerSpecVaultAuthAppRoleSecretRefPtrOutput) Name() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *IssuerSpecVaultAuthAppRoleSecretRef) *string {
		if v == nil {
			return nil
		}
		return &v.Name
	}).(pulumi.StringPtrOutput)
}

// Kubernetes authenticates with Vault by passing the ServiceAccount token stored in the named Secret resource to the Vault server.
type IssuerSpecVaultAuthKubernetes struct {
	// The Vault mountPath here is the mount path to use when authenticating with Vault. For example, setting a value to `/v1/auth/foo`, will use the path `/v1/auth/foo/login` to authenticate with Vault. If unspecified, the default value "/v1/auth/kubernetes" will be used.
	MountPath *string `pulumi:"mountPath"`
	// A required field containing the Vault Role to assume. A Role binds a Kubernetes ServiceAccount with a set of Vault policies.
	Role string `pulumi:"role"`
	// The required Secret field containing a Kubernetes ServiceAccount JWT used for authenticating with Vault. Use of 'ambient credentials' is not supported.
	SecretRef IssuerSpecVaultAuthKubernetesSecretRef `pulumi:"secretRef"`
}

// IssuerSpecVaultAuthKubernetesInput is an input type that accepts IssuerSpecVaultAuthKubernetesArgs and IssuerSpecVaultAuthKubernetesOutput values.
// You can construct a concrete instance of `IssuerSpecVaultAuthKubernetesInput` via:
//
//	IssuerSpecVaultAuthKubernetesArgs{...}
type IssuerSpecVaultAuthKubernetesInput interface {
	pulumi.Input

	ToIssuerSpecVaultAuthKubernetesOutput() IssuerSpecVaultAuthKubernetesOutput
	ToIssuerSpecVaultAuthKubernetesOutputWithContext(context.Context) IssuerSpecVaultAuthKubernetesOutput
}

// Kubernetes authenticates with Vault by passing the ServiceAccount token stored in the named Secret resource to the Vault server.
type IssuerSpecVaultAuthKubernetesArgs struct {
	// The Vault mountPath here is the mount path to use when authenticating with Vault. For example, setting a value to `/v1/auth/foo`, will use the path `/v1/auth/foo/login` to authenticate with Vault. If unspecified, the default value "/v1/auth/kubernetes" will be used.
	MountPath pulumi.StringPtrInput `pulumi:"mountPath"`
	// A required field containing the Vault Role to assume. A Role binds a Kubernetes ServiceAccount with a set of Vault policies.
	Role pulumi.StringInput `pulumi:"role"`
	// The required Secret field containing a Kubernetes ServiceAccount JWT used for authenticating with Vault. Use of 'ambient credentials' is not supported.
	SecretRef IssuerSpecVaultAuthKubernetesSecretRefInput `pulumi:"secretRef"`
}

func (IssuerSpecVaultAuthKubernetesArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecVaultAuthKubernetes)(nil)).Elem()
}

func (i IssuerSpecVaultAuthKubernetesArgs) ToIssuerSpecVaultAuthKubernetesOutput() IssuerSpecVaultAuthKubernetesOutput {
	return i.ToIssuerSpecVaultAuthKubernetesOutputWithContext(context.Background())
}

func (i IssuerSpecVaultAuthKubernetesArgs) ToIssuerSpecVaultAuthKubernetesOutputWithContext(ctx context.Context) IssuerSpecVaultAuthKubernetesOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecVaultAuthKubernetesOutput)
}

func (i IssuerSpecVaultAuthKubernetesArgs) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecVaultAuthKubernetes] {
	return pulumix.Output[IssuerSpecVaultAuthKubernetes]{
		OutputState: i.ToIssuerSpecVaultAuthKubernetesOutputWithContext(ctx).OutputState,
	}
}

func (i IssuerSpecVaultAuthKubernetesArgs) ToIssuerSpecVaultAuthKubernetesPtrOutput() IssuerSpecVaultAuthKubernetesPtrOutput {
	return i.ToIssuerSpecVaultAuthKubernetesPtrOutputWithContext(context.Background())
}

func (i IssuerSpecVaultAuthKubernetesArgs) ToIssuerSpecVaultAuthKubernetesPtrOutputWithContext(ctx context.Context) IssuerSpecVaultAuthKubernetesPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecVaultAuthKubernetesOutput).ToIssuerSpecVaultAuthKubernetesPtrOutputWithContext(ctx)
}

// IssuerSpecVaultAuthKubernetesPtrInput is an input type that accepts IssuerSpecVaultAuthKubernetesArgs, IssuerSpecVaultAuthKubernetesPtr and IssuerSpecVaultAuthKubernetesPtrOutput values.
// You can construct a concrete instance of `IssuerSpecVaultAuthKubernetesPtrInput` via:
//
//	        IssuerSpecVaultAuthKubernetesArgs{...}
//
//	or:
//
//	        nil
type IssuerSpecVaultAuthKubernetesPtrInput interface {
	pulumi.Input

	ToIssuerSpecVaultAuthKubernetesPtrOutput() IssuerSpecVaultAuthKubernetesPtrOutput
	ToIssuerSpecVaultAuthKubernetesPtrOutputWithContext(context.Context) IssuerSpecVaultAuthKubernetesPtrOutput
}

type issuerSpecVaultAuthKubernetesPtrType IssuerSpecVaultAuthKubernetesArgs

func IssuerSpecVaultAuthKubernetesPtr(v *IssuerSpecVaultAuthKubernetesArgs) IssuerSpecVaultAuthKubernetesPtrInput {
	return (*issuerSpecVaultAuthKubernetesPtrType)(v)
}

func (*issuerSpecVaultAuthKubernetesPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecVaultAuthKubernetes)(nil)).Elem()
}

func (i *issuerSpecVaultAuthKubernetesPtrType) ToIssuerSpecVaultAuthKubernetesPtrOutput() IssuerSpecVaultAuthKubernetesPtrOutput {
	return i.ToIssuerSpecVaultAuthKubernetesPtrOutputWithContext(context.Background())
}

func (i *issuerSpecVaultAuthKubernetesPtrType) ToIssuerSpecVaultAuthKubernetesPtrOutputWithContext(ctx context.Context) IssuerSpecVaultAuthKubernetesPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecVaultAuthKubernetesPtrOutput)
}

func (i *issuerSpecVaultAuthKubernetesPtrType) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecVaultAuthKubernetes] {
	return pulumix.Output[*IssuerSpecVaultAuthKubernetes]{
		OutputState: i.ToIssuerSpecVaultAuthKubernetesPtrOutputWithContext(ctx).OutputState,
	}
}

// Kubernetes authenticates with Vault by passing the ServiceAccount token stored in the named Secret resource to the Vault server.
type IssuerSpecVaultAuthKubernetesOutput struct{ *pulumi.OutputState }

func (IssuerSpecVaultAuthKubernetesOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecVaultAuthKubernetes)(nil)).Elem()
}

func (o IssuerSpecVaultAuthKubernetesOutput) ToIssuerSpecVaultAuthKubernetesOutput() IssuerSpecVaultAuthKubernetesOutput {
	return o
}

func (o IssuerSpecVaultAuthKubernetesOutput) ToIssuerSpecVaultAuthKubernetesOutputWithContext(ctx context.Context) IssuerSpecVaultAuthKubernetesOutput {
	return o
}

func (o IssuerSpecVaultAuthKubernetesOutput) ToIssuerSpecVaultAuthKubernetesPtrOutput() IssuerSpecVaultAuthKubernetesPtrOutput {
	return o.ToIssuerSpecVaultAuthKubernetesPtrOutputWithContext(context.Background())
}

func (o IssuerSpecVaultAuthKubernetesOutput) ToIssuerSpecVaultAuthKubernetesPtrOutputWithContext(ctx context.Context) IssuerSpecVaultAuthKubernetesPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v IssuerSpecVaultAuthKubernetes) *IssuerSpecVaultAuthKubernetes {
		return &v
	}).(IssuerSpecVaultAuthKubernetesPtrOutput)
}

func (o IssuerSpecVaultAuthKubernetesOutput) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecVaultAuthKubernetes] {
	return pulumix.Output[IssuerSpecVaultAuthKubernetes]{
		OutputState: o.OutputState,
	}
}

// The Vault mountPath here is the mount path to use when authenticating with Vault. For example, setting a value to `/v1/auth/foo`, will use the path `/v1/auth/foo/login` to authenticate with Vault. If unspecified, the default value "/v1/auth/kubernetes" will be used.
func (o IssuerSpecVaultAuthKubernetesOutput) MountPath() pulumi.StringPtrOutput {
	return o.ApplyT(func(v IssuerSpecVaultAuthKubernetes) *string { return v.MountPath }).(pulumi.StringPtrOutput)
}

// A required field containing the Vault Role to assume. A Role binds a Kubernetes ServiceAccount with a set of Vault policies.
func (o IssuerSpecVaultAuthKubernetesOutput) Role() pulumi.StringOutput {
	return o.ApplyT(func(v IssuerSpecVaultAuthKubernetes) string { return v.Role }).(pulumi.StringOutput)
}

// The required Secret field containing a Kubernetes ServiceAccount JWT used for authenticating with Vault. Use of 'ambient credentials' is not supported.
func (o IssuerSpecVaultAuthKubernetesOutput) SecretRef() IssuerSpecVaultAuthKubernetesSecretRefOutput {
	return o.ApplyT(func(v IssuerSpecVaultAuthKubernetes) IssuerSpecVaultAuthKubernetesSecretRef { return v.SecretRef }).(IssuerSpecVaultAuthKubernetesSecretRefOutput)
}

type IssuerSpecVaultAuthKubernetesPtrOutput struct{ *pulumi.OutputState }

func (IssuerSpecVaultAuthKubernetesPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecVaultAuthKubernetes)(nil)).Elem()
}

func (o IssuerSpecVaultAuthKubernetesPtrOutput) ToIssuerSpecVaultAuthKubernetesPtrOutput() IssuerSpecVaultAuthKubernetesPtrOutput {
	return o
}

func (o IssuerSpecVaultAuthKubernetesPtrOutput) ToIssuerSpecVaultAuthKubernetesPtrOutputWithContext(ctx context.Context) IssuerSpecVaultAuthKubernetesPtrOutput {
	return o
}

func (o IssuerSpecVaultAuthKubernetesPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecVaultAuthKubernetes] {
	return pulumix.Output[*IssuerSpecVaultAuthKubernetes]{
		OutputState: o.OutputState,
	}
}

func (o IssuerSpecVaultAuthKubernetesPtrOutput) Elem() IssuerSpecVaultAuthKubernetesOutput {
	return o.ApplyT(func(v *IssuerSpecVaultAuthKubernetes) IssuerSpecVaultAuthKubernetes {
		if v != nil {
			return *v
		}
		var ret IssuerSpecVaultAuthKubernetes
		return ret
	}).(IssuerSpecVaultAuthKubernetesOutput)
}

// The Vault mountPath here is the mount path to use when authenticating with Vault. For example, setting a value to `/v1/auth/foo`, will use the path `/v1/auth/foo/login` to authenticate with Vault. If unspecified, the default value "/v1/auth/kubernetes" will be used.
func (o IssuerSpecVaultAuthKubernetesPtrOutput) MountPath() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *IssuerSpecVaultAuthKubernetes) *string {
		if v == nil {
			return nil
		}
		return v.MountPath
	}).(pulumi.StringPtrOutput)
}

// A required field containing the Vault Role to assume. A Role binds a Kubernetes ServiceAccount with a set of Vault policies.
func (o IssuerSpecVaultAuthKubernetesPtrOutput) Role() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *IssuerSpecVaultAuthKubernetes) *string {
		if v == nil {
			return nil
		}
		return &v.Role
	}).(pulumi.StringPtrOutput)
}

// The required Secret field containing a Kubernetes ServiceAccount JWT used for authenticating with Vault. Use of 'ambient credentials' is not supported.
func (o IssuerSpecVaultAuthKubernetesPtrOutput) SecretRef() IssuerSpecVaultAuthKubernetesSecretRefPtrOutput {
	return o.ApplyT(func(v *IssuerSpecVaultAuthKubernetes) *IssuerSpecVaultAuthKubernetesSecretRef {
		if v == nil {
			return nil
		}
		return &v.SecretRef
	}).(IssuerSpecVaultAuthKubernetesSecretRefPtrOutput)
}

// The required Secret field containing a Kubernetes ServiceAccount JWT used for authenticating with Vault. Use of 'ambient credentials' is not supported.
type IssuerSpecVaultAuthKubernetesSecretRef struct {
	// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
	Key *string `pulumi:"key"`
	// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
	Name string `pulumi:"name"`
}

// IssuerSpecVaultAuthKubernetesSecretRefInput is an input type that accepts IssuerSpecVaultAuthKubernetesSecretRefArgs and IssuerSpecVaultAuthKubernetesSecretRefOutput values.
// You can construct a concrete instance of `IssuerSpecVaultAuthKubernetesSecretRefInput` via:
//
//	IssuerSpecVaultAuthKubernetesSecretRefArgs{...}
type IssuerSpecVaultAuthKubernetesSecretRefInput interface {
	pulumi.Input

	ToIssuerSpecVaultAuthKubernetesSecretRefOutput() IssuerSpecVaultAuthKubernetesSecretRefOutput
	ToIssuerSpecVaultAuthKubernetesSecretRefOutputWithContext(context.Context) IssuerSpecVaultAuthKubernetesSecretRefOutput
}

// The required Secret field containing a Kubernetes ServiceAccount JWT used for authenticating with Vault. Use of 'ambient credentials' is not supported.
type IssuerSpecVaultAuthKubernetesSecretRefArgs struct {
	// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
	Key pulumi.StringPtrInput `pulumi:"key"`
	// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
	Name pulumi.StringInput `pulumi:"name"`
}

func (IssuerSpecVaultAuthKubernetesSecretRefArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecVaultAuthKubernetesSecretRef)(nil)).Elem()
}

func (i IssuerSpecVaultAuthKubernetesSecretRefArgs) ToIssuerSpecVaultAuthKubernetesSecretRefOutput() IssuerSpecVaultAuthKubernetesSecretRefOutput {
	return i.ToIssuerSpecVaultAuthKubernetesSecretRefOutputWithContext(context.Background())
}

func (i IssuerSpecVaultAuthKubernetesSecretRefArgs) ToIssuerSpecVaultAuthKubernetesSecretRefOutputWithContext(ctx context.Context) IssuerSpecVaultAuthKubernetesSecretRefOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecVaultAuthKubernetesSecretRefOutput)
}

func (i IssuerSpecVaultAuthKubernetesSecretRefArgs) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecVaultAuthKubernetesSecretRef] {
	return pulumix.Output[IssuerSpecVaultAuthKubernetesSecretRef]{
		OutputState: i.ToIssuerSpecVaultAuthKubernetesSecretRefOutputWithContext(ctx).OutputState,
	}
}

func (i IssuerSpecVaultAuthKubernetesSecretRefArgs) ToIssuerSpecVaultAuthKubernetesSecretRefPtrOutput() IssuerSpecVaultAuthKubernetesSecretRefPtrOutput {
	return i.ToIssuerSpecVaultAuthKubernetesSecretRefPtrOutputWithContext(context.Background())
}

func (i IssuerSpecVaultAuthKubernetesSecretRefArgs) ToIssuerSpecVaultAuthKubernetesSecretRefPtrOutputWithContext(ctx context.Context) IssuerSpecVaultAuthKubernetesSecretRefPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecVaultAuthKubernetesSecretRefOutput).ToIssuerSpecVaultAuthKubernetesSecretRefPtrOutputWithContext(ctx)
}

// IssuerSpecVaultAuthKubernetesSecretRefPtrInput is an input type that accepts IssuerSpecVaultAuthKubernetesSecretRefArgs, IssuerSpecVaultAuthKubernetesSecretRefPtr and IssuerSpecVaultAuthKubernetesSecretRefPtrOutput values.
// You can construct a concrete instance of `IssuerSpecVaultAuthKubernetesSecretRefPtrInput` via:
//
//	        IssuerSpecVaultAuthKubernetesSecretRefArgs{...}
//
//	or:
//
//	        nil
type IssuerSpecVaultAuthKubernetesSecretRefPtrInput interface {
	pulumi.Input

	ToIssuerSpecVaultAuthKubernetesSecretRefPtrOutput() IssuerSpecVaultAuthKubernetesSecretRefPtrOutput
	ToIssuerSpecVaultAuthKubernetesSecretRefPtrOutputWithContext(context.Context) IssuerSpecVaultAuthKubernetesSecretRefPtrOutput
}

type issuerSpecVaultAuthKubernetesSecretRefPtrType IssuerSpecVaultAuthKubernetesSecretRefArgs

func IssuerSpecVaultAuthKubernetesSecretRefPtr(v *IssuerSpecVaultAuthKubernetesSecretRefArgs) IssuerSpecVaultAuthKubernetesSecretRefPtrInput {
	return (*issuerSpecVaultAuthKubernetesSecretRefPtrType)(v)
}

func (*issuerSpecVaultAuthKubernetesSecretRefPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecVaultAuthKubernetesSecretRef)(nil)).Elem()
}

func (i *issuerSpecVaultAuthKubernetesSecretRefPtrType) ToIssuerSpecVaultAuthKubernetesSecretRefPtrOutput() IssuerSpecVaultAuthKubernetesSecretRefPtrOutput {
	return i.ToIssuerSpecVaultAuthKubernetesSecretRefPtrOutputWithContext(context.Background())
}

func (i *issuerSpecVaultAuthKubernetesSecretRefPtrType) ToIssuerSpecVaultAuthKubernetesSecretRefPtrOutputWithContext(ctx context.Context) IssuerSpecVaultAuthKubernetesSecretRefPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecVaultAuthKubernetesSecretRefPtrOutput)
}

func (i *issuerSpecVaultAuthKubernetesSecretRefPtrType) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecVaultAuthKubernetesSecretRef] {
	return pulumix.Output[*IssuerSpecVaultAuthKubernetesSecretRef]{
		OutputState: i.ToIssuerSpecVaultAuthKubernetesSecretRefPtrOutputWithContext(ctx).OutputState,
	}
}

// The required Secret field containing a Kubernetes ServiceAccount JWT used for authenticating with Vault. Use of 'ambient credentials' is not supported.
type IssuerSpecVaultAuthKubernetesSecretRefOutput struct{ *pulumi.OutputState }

func (IssuerSpecVaultAuthKubernetesSecretRefOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecVaultAuthKubernetesSecretRef)(nil)).Elem()
}

func (o IssuerSpecVaultAuthKubernetesSecretRefOutput) ToIssuerSpecVaultAuthKubernetesSecretRefOutput() IssuerSpecVaultAuthKubernetesSecretRefOutput {
	return o
}

func (o IssuerSpecVaultAuthKubernetesSecretRefOutput) ToIssuerSpecVaultAuthKubernetesSecretRefOutputWithContext(ctx context.Context) IssuerSpecVaultAuthKubernetesSecretRefOutput {
	return o
}

func (o IssuerSpecVaultAuthKubernetesSecretRefOutput) ToIssuerSpecVaultAuthKubernetesSecretRefPtrOutput() IssuerSpecVaultAuthKubernetesSecretRefPtrOutput {
	return o.ToIssuerSpecVaultAuthKubernetesSecretRefPtrOutputWithContext(context.Background())
}

func (o IssuerSpecVaultAuthKubernetesSecretRefOutput) ToIssuerSpecVaultAuthKubernetesSecretRefPtrOutputWithContext(ctx context.Context) IssuerSpecVaultAuthKubernetesSecretRefPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v IssuerSpecVaultAuthKubernetesSecretRef) *IssuerSpecVaultAuthKubernetesSecretRef {
		return &v
	}).(IssuerSpecVaultAuthKubernetesSecretRefPtrOutput)
}

func (o IssuerSpecVaultAuthKubernetesSecretRefOutput) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecVaultAuthKubernetesSecretRef] {
	return pulumix.Output[IssuerSpecVaultAuthKubernetesSecretRef]{
		OutputState: o.OutputState,
	}
}

// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
func (o IssuerSpecVaultAuthKubernetesSecretRefOutput) Key() pulumi.StringPtrOutput {
	return o.ApplyT(func(v IssuerSpecVaultAuthKubernetesSecretRef) *string { return v.Key }).(pulumi.StringPtrOutput)
}

// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
func (o IssuerSpecVaultAuthKubernetesSecretRefOutput) Name() pulumi.StringOutput {
	return o.ApplyT(func(v IssuerSpecVaultAuthKubernetesSecretRef) string { return v.Name }).(pulumi.StringOutput)
}

type IssuerSpecVaultAuthKubernetesSecretRefPtrOutput struct{ *pulumi.OutputState }

func (IssuerSpecVaultAuthKubernetesSecretRefPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecVaultAuthKubernetesSecretRef)(nil)).Elem()
}

func (o IssuerSpecVaultAuthKubernetesSecretRefPtrOutput) ToIssuerSpecVaultAuthKubernetesSecretRefPtrOutput() IssuerSpecVaultAuthKubernetesSecretRefPtrOutput {
	return o
}

func (o IssuerSpecVaultAuthKubernetesSecretRefPtrOutput) ToIssuerSpecVaultAuthKubernetesSecretRefPtrOutputWithContext(ctx context.Context) IssuerSpecVaultAuthKubernetesSecretRefPtrOutput {
	return o
}

func (o IssuerSpecVaultAuthKubernetesSecretRefPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecVaultAuthKubernetesSecretRef] {
	return pulumix.Output[*IssuerSpecVaultAuthKubernetesSecretRef]{
		OutputState: o.OutputState,
	}
}

func (o IssuerSpecVaultAuthKubernetesSecretRefPtrOutput) Elem() IssuerSpecVaultAuthKubernetesSecretRefOutput {
	return o.ApplyT(func(v *IssuerSpecVaultAuthKubernetesSecretRef) IssuerSpecVaultAuthKubernetesSecretRef {
		if v != nil {
			return *v
		}
		var ret IssuerSpecVaultAuthKubernetesSecretRef
		return ret
	}).(IssuerSpecVaultAuthKubernetesSecretRefOutput)
}

// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
func (o IssuerSpecVaultAuthKubernetesSecretRefPtrOutput) Key() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *IssuerSpecVaultAuthKubernetesSecretRef) *string {
		if v == nil {
			return nil
		}
		return v.Key
	}).(pulumi.StringPtrOutput)
}

// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
func (o IssuerSpecVaultAuthKubernetesSecretRefPtrOutput) Name() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *IssuerSpecVaultAuthKubernetesSecretRef) *string {
		if v == nil {
			return nil
		}
		return &v.Name
	}).(pulumi.StringPtrOutput)
}

// TokenSecretRef authenticates with Vault by presenting a token.
type IssuerSpecVaultAuthTokenSecretRef struct {
	// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
	Key *string `pulumi:"key"`
	// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
	Name string `pulumi:"name"`
}

// IssuerSpecVaultAuthTokenSecretRefInput is an input type that accepts IssuerSpecVaultAuthTokenSecretRefArgs and IssuerSpecVaultAuthTokenSecretRefOutput values.
// You can construct a concrete instance of `IssuerSpecVaultAuthTokenSecretRefInput` via:
//
//	IssuerSpecVaultAuthTokenSecretRefArgs{...}
type IssuerSpecVaultAuthTokenSecretRefInput interface {
	pulumi.Input

	ToIssuerSpecVaultAuthTokenSecretRefOutput() IssuerSpecVaultAuthTokenSecretRefOutput
	ToIssuerSpecVaultAuthTokenSecretRefOutputWithContext(context.Context) IssuerSpecVaultAuthTokenSecretRefOutput
}

// TokenSecretRef authenticates with Vault by presenting a token.
type IssuerSpecVaultAuthTokenSecretRefArgs struct {
	// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
	Key pulumi.StringPtrInput `pulumi:"key"`
	// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
	Name pulumi.StringInput `pulumi:"name"`
}

func (IssuerSpecVaultAuthTokenSecretRefArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecVaultAuthTokenSecretRef)(nil)).Elem()
}

func (i IssuerSpecVaultAuthTokenSecretRefArgs) ToIssuerSpecVaultAuthTokenSecretRefOutput() IssuerSpecVaultAuthTokenSecretRefOutput {
	return i.ToIssuerSpecVaultAuthTokenSecretRefOutputWithContext(context.Background())
}

func (i IssuerSpecVaultAuthTokenSecretRefArgs) ToIssuerSpecVaultAuthTokenSecretRefOutputWithContext(ctx context.Context) IssuerSpecVaultAuthTokenSecretRefOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecVaultAuthTokenSecretRefOutput)
}

func (i IssuerSpecVaultAuthTokenSecretRefArgs) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecVaultAuthTokenSecretRef] {
	return pulumix.Output[IssuerSpecVaultAuthTokenSecretRef]{
		OutputState: i.ToIssuerSpecVaultAuthTokenSecretRefOutputWithContext(ctx).OutputState,
	}
}

func (i IssuerSpecVaultAuthTokenSecretRefArgs) ToIssuerSpecVaultAuthTokenSecretRefPtrOutput() IssuerSpecVaultAuthTokenSecretRefPtrOutput {
	return i.ToIssuerSpecVaultAuthTokenSecretRefPtrOutputWithContext(context.Background())
}

func (i IssuerSpecVaultAuthTokenSecretRefArgs) ToIssuerSpecVaultAuthTokenSecretRefPtrOutputWithContext(ctx context.Context) IssuerSpecVaultAuthTokenSecretRefPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecVaultAuthTokenSecretRefOutput).ToIssuerSpecVaultAuthTokenSecretRefPtrOutputWithContext(ctx)
}

// IssuerSpecVaultAuthTokenSecretRefPtrInput is an input type that accepts IssuerSpecVaultAuthTokenSecretRefArgs, IssuerSpecVaultAuthTokenSecretRefPtr and IssuerSpecVaultAuthTokenSecretRefPtrOutput values.
// You can construct a concrete instance of `IssuerSpecVaultAuthTokenSecretRefPtrInput` via:
//
//	        IssuerSpecVaultAuthTokenSecretRefArgs{...}
//
//	or:
//
//	        nil
type IssuerSpecVaultAuthTokenSecretRefPtrInput interface {
	pulumi.Input

	ToIssuerSpecVaultAuthTokenSecretRefPtrOutput() IssuerSpecVaultAuthTokenSecretRefPtrOutput
	ToIssuerSpecVaultAuthTokenSecretRefPtrOutputWithContext(context.Context) IssuerSpecVaultAuthTokenSecretRefPtrOutput
}

type issuerSpecVaultAuthTokenSecretRefPtrType IssuerSpecVaultAuthTokenSecretRefArgs

func IssuerSpecVaultAuthTokenSecretRefPtr(v *IssuerSpecVaultAuthTokenSecretRefArgs) IssuerSpecVaultAuthTokenSecretRefPtrInput {
	return (*issuerSpecVaultAuthTokenSecretRefPtrType)(v)
}

func (*issuerSpecVaultAuthTokenSecretRefPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecVaultAuthTokenSecretRef)(nil)).Elem()
}

func (i *issuerSpecVaultAuthTokenSecretRefPtrType) ToIssuerSpecVaultAuthTokenSecretRefPtrOutput() IssuerSpecVaultAuthTokenSecretRefPtrOutput {
	return i.ToIssuerSpecVaultAuthTokenSecretRefPtrOutputWithContext(context.Background())
}

func (i *issuerSpecVaultAuthTokenSecretRefPtrType) ToIssuerSpecVaultAuthTokenSecretRefPtrOutputWithContext(ctx context.Context) IssuerSpecVaultAuthTokenSecretRefPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecVaultAuthTokenSecretRefPtrOutput)
}

func (i *issuerSpecVaultAuthTokenSecretRefPtrType) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecVaultAuthTokenSecretRef] {
	return pulumix.Output[*IssuerSpecVaultAuthTokenSecretRef]{
		OutputState: i.ToIssuerSpecVaultAuthTokenSecretRefPtrOutputWithContext(ctx).OutputState,
	}
}

// TokenSecretRef authenticates with Vault by presenting a token.
type IssuerSpecVaultAuthTokenSecretRefOutput struct{ *pulumi.OutputState }

func (IssuerSpecVaultAuthTokenSecretRefOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecVaultAuthTokenSecretRef)(nil)).Elem()
}

func (o IssuerSpecVaultAuthTokenSecretRefOutput) ToIssuerSpecVaultAuthTokenSecretRefOutput() IssuerSpecVaultAuthTokenSecretRefOutput {
	return o
}

func (o IssuerSpecVaultAuthTokenSecretRefOutput) ToIssuerSpecVaultAuthTokenSecretRefOutputWithContext(ctx context.Context) IssuerSpecVaultAuthTokenSecretRefOutput {
	return o
}

func (o IssuerSpecVaultAuthTokenSecretRefOutput) ToIssuerSpecVaultAuthTokenSecretRefPtrOutput() IssuerSpecVaultAuthTokenSecretRefPtrOutput {
	return o.ToIssuerSpecVaultAuthTokenSecretRefPtrOutputWithContext(context.Background())
}

func (o IssuerSpecVaultAuthTokenSecretRefOutput) ToIssuerSpecVaultAuthTokenSecretRefPtrOutputWithContext(ctx context.Context) IssuerSpecVaultAuthTokenSecretRefPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v IssuerSpecVaultAuthTokenSecretRef) *IssuerSpecVaultAuthTokenSecretRef {
		return &v
	}).(IssuerSpecVaultAuthTokenSecretRefPtrOutput)
}

func (o IssuerSpecVaultAuthTokenSecretRefOutput) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecVaultAuthTokenSecretRef] {
	return pulumix.Output[IssuerSpecVaultAuthTokenSecretRef]{
		OutputState: o.OutputState,
	}
}

// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
func (o IssuerSpecVaultAuthTokenSecretRefOutput) Key() pulumi.StringPtrOutput {
	return o.ApplyT(func(v IssuerSpecVaultAuthTokenSecretRef) *string { return v.Key }).(pulumi.StringPtrOutput)
}

// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
func (o IssuerSpecVaultAuthTokenSecretRefOutput) Name() pulumi.StringOutput {
	return o.ApplyT(func(v IssuerSpecVaultAuthTokenSecretRef) string { return v.Name }).(pulumi.StringOutput)
}

type IssuerSpecVaultAuthTokenSecretRefPtrOutput struct{ *pulumi.OutputState }

func (IssuerSpecVaultAuthTokenSecretRefPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecVaultAuthTokenSecretRef)(nil)).Elem()
}

func (o IssuerSpecVaultAuthTokenSecretRefPtrOutput) ToIssuerSpecVaultAuthTokenSecretRefPtrOutput() IssuerSpecVaultAuthTokenSecretRefPtrOutput {
	return o
}

func (o IssuerSpecVaultAuthTokenSecretRefPtrOutput) ToIssuerSpecVaultAuthTokenSecretRefPtrOutputWithContext(ctx context.Context) IssuerSpecVaultAuthTokenSecretRefPtrOutput {
	return o
}

func (o IssuerSpecVaultAuthTokenSecretRefPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecVaultAuthTokenSecretRef] {
	return pulumix.Output[*IssuerSpecVaultAuthTokenSecretRef]{
		OutputState: o.OutputState,
	}
}

func (o IssuerSpecVaultAuthTokenSecretRefPtrOutput) Elem() IssuerSpecVaultAuthTokenSecretRefOutput {
	return o.ApplyT(func(v *IssuerSpecVaultAuthTokenSecretRef) IssuerSpecVaultAuthTokenSecretRef {
		if v != nil {
			return *v
		}
		var ret IssuerSpecVaultAuthTokenSecretRef
		return ret
	}).(IssuerSpecVaultAuthTokenSecretRefOutput)
}

// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
func (o IssuerSpecVaultAuthTokenSecretRefPtrOutput) Key() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *IssuerSpecVaultAuthTokenSecretRef) *string {
		if v == nil {
			return nil
		}
		return v.Key
	}).(pulumi.StringPtrOutput)
}

// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
func (o IssuerSpecVaultAuthTokenSecretRefPtrOutput) Name() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *IssuerSpecVaultAuthTokenSecretRef) *string {
		if v == nil {
			return nil
		}
		return &v.Name
	}).(pulumi.StringPtrOutput)
}

// Venafi configures this issuer to sign certificates using a Venafi TPP or Venafi Cloud policy zone.
type IssuerSpecVenafi struct {
	// Cloud specifies the Venafi cloud configuration settings. Only one of TPP or Cloud may be specified.
	Cloud *IssuerSpecVenafiCloud `pulumi:"cloud"`
	// TPP specifies Trust Protection Platform configuration settings. Only one of TPP or Cloud may be specified.
	Tpp *IssuerSpecVenafiTpp `pulumi:"tpp"`
	// Zone is the Venafi Policy Zone to use for this issuer. All requests made to the Venafi platform will be restricted by the named zone policy. This field is required.
	Zone string `pulumi:"zone"`
}

// IssuerSpecVenafiInput is an input type that accepts IssuerSpecVenafiArgs and IssuerSpecVenafiOutput values.
// You can construct a concrete instance of `IssuerSpecVenafiInput` via:
//
//	IssuerSpecVenafiArgs{...}
type IssuerSpecVenafiInput interface {
	pulumi.Input

	ToIssuerSpecVenafiOutput() IssuerSpecVenafiOutput
	ToIssuerSpecVenafiOutputWithContext(context.Context) IssuerSpecVenafiOutput
}

// Venafi configures this issuer to sign certificates using a Venafi TPP or Venafi Cloud policy zone.
type IssuerSpecVenafiArgs struct {
	// Cloud specifies the Venafi cloud configuration settings. Only one of TPP or Cloud may be specified.
	Cloud IssuerSpecVenafiCloudPtrInput `pulumi:"cloud"`
	// TPP specifies Trust Protection Platform configuration settings. Only one of TPP or Cloud may be specified.
	Tpp IssuerSpecVenafiTppPtrInput `pulumi:"tpp"`
	// Zone is the Venafi Policy Zone to use for this issuer. All requests made to the Venafi platform will be restricted by the named zone policy. This field is required.
	Zone pulumi.StringInput `pulumi:"zone"`
}

func (IssuerSpecVenafiArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecVenafi)(nil)).Elem()
}

func (i IssuerSpecVenafiArgs) ToIssuerSpecVenafiOutput() IssuerSpecVenafiOutput {
	return i.ToIssuerSpecVenafiOutputWithContext(context.Background())
}

func (i IssuerSpecVenafiArgs) ToIssuerSpecVenafiOutputWithContext(ctx context.Context) IssuerSpecVenafiOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecVenafiOutput)
}

func (i IssuerSpecVenafiArgs) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecVenafi] {
	return pulumix.Output[IssuerSpecVenafi]{
		OutputState: i.ToIssuerSpecVenafiOutputWithContext(ctx).OutputState,
	}
}

func (i IssuerSpecVenafiArgs) ToIssuerSpecVenafiPtrOutput() IssuerSpecVenafiPtrOutput {
	return i.ToIssuerSpecVenafiPtrOutputWithContext(context.Background())
}

func (i IssuerSpecVenafiArgs) ToIssuerSpecVenafiPtrOutputWithContext(ctx context.Context) IssuerSpecVenafiPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecVenafiOutput).ToIssuerSpecVenafiPtrOutputWithContext(ctx)
}

// IssuerSpecVenafiPtrInput is an input type that accepts IssuerSpecVenafiArgs, IssuerSpecVenafiPtr and IssuerSpecVenafiPtrOutput values.
// You can construct a concrete instance of `IssuerSpecVenafiPtrInput` via:
//
//	        IssuerSpecVenafiArgs{...}
//
//	or:
//
//	        nil
type IssuerSpecVenafiPtrInput interface {
	pulumi.Input

	ToIssuerSpecVenafiPtrOutput() IssuerSpecVenafiPtrOutput
	ToIssuerSpecVenafiPtrOutputWithContext(context.Context) IssuerSpecVenafiPtrOutput
}

type issuerSpecVenafiPtrType IssuerSpecVenafiArgs

func IssuerSpecVenafiPtr(v *IssuerSpecVenafiArgs) IssuerSpecVenafiPtrInput {
	return (*issuerSpecVenafiPtrType)(v)
}

func (*issuerSpecVenafiPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecVenafi)(nil)).Elem()
}

func (i *issuerSpecVenafiPtrType) ToIssuerSpecVenafiPtrOutput() IssuerSpecVenafiPtrOutput {
	return i.ToIssuerSpecVenafiPtrOutputWithContext(context.Background())
}

func (i *issuerSpecVenafiPtrType) ToIssuerSpecVenafiPtrOutputWithContext(ctx context.Context) IssuerSpecVenafiPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecVenafiPtrOutput)
}

func (i *issuerSpecVenafiPtrType) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecVenafi] {
	return pulumix.Output[*IssuerSpecVenafi]{
		OutputState: i.ToIssuerSpecVenafiPtrOutputWithContext(ctx).OutputState,
	}
}

// Venafi configures this issuer to sign certificates using a Venafi TPP or Venafi Cloud policy zone.
type IssuerSpecVenafiOutput struct{ *pulumi.OutputState }

func (IssuerSpecVenafiOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecVenafi)(nil)).Elem()
}

func (o IssuerSpecVenafiOutput) ToIssuerSpecVenafiOutput() IssuerSpecVenafiOutput {
	return o
}

func (o IssuerSpecVenafiOutput) ToIssuerSpecVenafiOutputWithContext(ctx context.Context) IssuerSpecVenafiOutput {
	return o
}

func (o IssuerSpecVenafiOutput) ToIssuerSpecVenafiPtrOutput() IssuerSpecVenafiPtrOutput {
	return o.ToIssuerSpecVenafiPtrOutputWithContext(context.Background())
}

func (o IssuerSpecVenafiOutput) ToIssuerSpecVenafiPtrOutputWithContext(ctx context.Context) IssuerSpecVenafiPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v IssuerSpecVenafi) *IssuerSpecVenafi {
		return &v
	}).(IssuerSpecVenafiPtrOutput)
}

func (o IssuerSpecVenafiOutput) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecVenafi] {
	return pulumix.Output[IssuerSpecVenafi]{
		OutputState: o.OutputState,
	}
}

// Cloud specifies the Venafi cloud configuration settings. Only one of TPP or Cloud may be specified.
func (o IssuerSpecVenafiOutput) Cloud() IssuerSpecVenafiCloudPtrOutput {
	return o.ApplyT(func(v IssuerSpecVenafi) *IssuerSpecVenafiCloud { return v.Cloud }).(IssuerSpecVenafiCloudPtrOutput)
}

// TPP specifies Trust Protection Platform configuration settings. Only one of TPP or Cloud may be specified.
func (o IssuerSpecVenafiOutput) Tpp() IssuerSpecVenafiTppPtrOutput {
	return o.ApplyT(func(v IssuerSpecVenafi) *IssuerSpecVenafiTpp { return v.Tpp }).(IssuerSpecVenafiTppPtrOutput)
}

// Zone is the Venafi Policy Zone to use for this issuer. All requests made to the Venafi platform will be restricted by the named zone policy. This field is required.
func (o IssuerSpecVenafiOutput) Zone() pulumi.StringOutput {
	return o.ApplyT(func(v IssuerSpecVenafi) string { return v.Zone }).(pulumi.StringOutput)
}

type IssuerSpecVenafiPtrOutput struct{ *pulumi.OutputState }

func (IssuerSpecVenafiPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecVenafi)(nil)).Elem()
}

func (o IssuerSpecVenafiPtrOutput) ToIssuerSpecVenafiPtrOutput() IssuerSpecVenafiPtrOutput {
	return o
}

func (o IssuerSpecVenafiPtrOutput) ToIssuerSpecVenafiPtrOutputWithContext(ctx context.Context) IssuerSpecVenafiPtrOutput {
	return o
}

func (o IssuerSpecVenafiPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecVenafi] {
	return pulumix.Output[*IssuerSpecVenafi]{
		OutputState: o.OutputState,
	}
}

func (o IssuerSpecVenafiPtrOutput) Elem() IssuerSpecVenafiOutput {
	return o.ApplyT(func(v *IssuerSpecVenafi) IssuerSpecVenafi {
		if v != nil {
			return *v
		}
		var ret IssuerSpecVenafi
		return ret
	}).(IssuerSpecVenafiOutput)
}

// Cloud specifies the Venafi cloud configuration settings. Only one of TPP or Cloud may be specified.
func (o IssuerSpecVenafiPtrOutput) Cloud() IssuerSpecVenafiCloudPtrOutput {
	return o.ApplyT(func(v *IssuerSpecVenafi) *IssuerSpecVenafiCloud {
		if v == nil {
			return nil
		}
		return v.Cloud
	}).(IssuerSpecVenafiCloudPtrOutput)
}

// TPP specifies Trust Protection Platform configuration settings. Only one of TPP or Cloud may be specified.
func (o IssuerSpecVenafiPtrOutput) Tpp() IssuerSpecVenafiTppPtrOutput {
	return o.ApplyT(func(v *IssuerSpecVenafi) *IssuerSpecVenafiTpp {
		if v == nil {
			return nil
		}
		return v.Tpp
	}).(IssuerSpecVenafiTppPtrOutput)
}

// Zone is the Venafi Policy Zone to use for this issuer. All requests made to the Venafi platform will be restricted by the named zone policy. This field is required.
func (o IssuerSpecVenafiPtrOutput) Zone() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *IssuerSpecVenafi) *string {
		if v == nil {
			return nil
		}
		return &v.Zone
	}).(pulumi.StringPtrOutput)
}

// Cloud specifies the Venafi cloud configuration settings. Only one of TPP or Cloud may be specified.
type IssuerSpecVenafiCloud struct {
	// APITokenSecretRef is a secret key selector for the Venafi Cloud API token.
	ApiTokenSecretRef IssuerSpecVenafiCloudApiTokenSecretRef `pulumi:"apiTokenSecretRef"`
	// URL is the base URL for Venafi Cloud. Defaults to "https://api.venafi.cloud/v1".
	Url *string `pulumi:"url"`
}

// IssuerSpecVenafiCloudInput is an input type that accepts IssuerSpecVenafiCloudArgs and IssuerSpecVenafiCloudOutput values.
// You can construct a concrete instance of `IssuerSpecVenafiCloudInput` via:
//
//	IssuerSpecVenafiCloudArgs{...}
type IssuerSpecVenafiCloudInput interface {
	pulumi.Input

	ToIssuerSpecVenafiCloudOutput() IssuerSpecVenafiCloudOutput
	ToIssuerSpecVenafiCloudOutputWithContext(context.Context) IssuerSpecVenafiCloudOutput
}

// Cloud specifies the Venafi cloud configuration settings. Only one of TPP or Cloud may be specified.
type IssuerSpecVenafiCloudArgs struct {
	// APITokenSecretRef is a secret key selector for the Venafi Cloud API token.
	ApiTokenSecretRef IssuerSpecVenafiCloudApiTokenSecretRefInput `pulumi:"apiTokenSecretRef"`
	// URL is the base URL for Venafi Cloud. Defaults to "https://api.venafi.cloud/v1".
	Url pulumi.StringPtrInput `pulumi:"url"`
}

func (IssuerSpecVenafiCloudArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecVenafiCloud)(nil)).Elem()
}

func (i IssuerSpecVenafiCloudArgs) ToIssuerSpecVenafiCloudOutput() IssuerSpecVenafiCloudOutput {
	return i.ToIssuerSpecVenafiCloudOutputWithContext(context.Background())
}

func (i IssuerSpecVenafiCloudArgs) ToIssuerSpecVenafiCloudOutputWithContext(ctx context.Context) IssuerSpecVenafiCloudOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecVenafiCloudOutput)
}

func (i IssuerSpecVenafiCloudArgs) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecVenafiCloud] {
	return pulumix.Output[IssuerSpecVenafiCloud]{
		OutputState: i.ToIssuerSpecVenafiCloudOutputWithContext(ctx).OutputState,
	}
}

func (i IssuerSpecVenafiCloudArgs) ToIssuerSpecVenafiCloudPtrOutput() IssuerSpecVenafiCloudPtrOutput {
	return i.ToIssuerSpecVenafiCloudPtrOutputWithContext(context.Background())
}

func (i IssuerSpecVenafiCloudArgs) ToIssuerSpecVenafiCloudPtrOutputWithContext(ctx context.Context) IssuerSpecVenafiCloudPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecVenafiCloudOutput).ToIssuerSpecVenafiCloudPtrOutputWithContext(ctx)
}

// IssuerSpecVenafiCloudPtrInput is an input type that accepts IssuerSpecVenafiCloudArgs, IssuerSpecVenafiCloudPtr and IssuerSpecVenafiCloudPtrOutput values.
// You can construct a concrete instance of `IssuerSpecVenafiCloudPtrInput` via:
//
//	        IssuerSpecVenafiCloudArgs{...}
//
//	or:
//
//	        nil
type IssuerSpecVenafiCloudPtrInput interface {
	pulumi.Input

	ToIssuerSpecVenafiCloudPtrOutput() IssuerSpecVenafiCloudPtrOutput
	ToIssuerSpecVenafiCloudPtrOutputWithContext(context.Context) IssuerSpecVenafiCloudPtrOutput
}

type issuerSpecVenafiCloudPtrType IssuerSpecVenafiCloudArgs

func IssuerSpecVenafiCloudPtr(v *IssuerSpecVenafiCloudArgs) IssuerSpecVenafiCloudPtrInput {
	return (*issuerSpecVenafiCloudPtrType)(v)
}

func (*issuerSpecVenafiCloudPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecVenafiCloud)(nil)).Elem()
}

func (i *issuerSpecVenafiCloudPtrType) ToIssuerSpecVenafiCloudPtrOutput() IssuerSpecVenafiCloudPtrOutput {
	return i.ToIssuerSpecVenafiCloudPtrOutputWithContext(context.Background())
}

func (i *issuerSpecVenafiCloudPtrType) ToIssuerSpecVenafiCloudPtrOutputWithContext(ctx context.Context) IssuerSpecVenafiCloudPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecVenafiCloudPtrOutput)
}

func (i *issuerSpecVenafiCloudPtrType) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecVenafiCloud] {
	return pulumix.Output[*IssuerSpecVenafiCloud]{
		OutputState: i.ToIssuerSpecVenafiCloudPtrOutputWithContext(ctx).OutputState,
	}
}

// Cloud specifies the Venafi cloud configuration settings. Only one of TPP or Cloud may be specified.
type IssuerSpecVenafiCloudOutput struct{ *pulumi.OutputState }

func (IssuerSpecVenafiCloudOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecVenafiCloud)(nil)).Elem()
}

func (o IssuerSpecVenafiCloudOutput) ToIssuerSpecVenafiCloudOutput() IssuerSpecVenafiCloudOutput {
	return o
}

func (o IssuerSpecVenafiCloudOutput) ToIssuerSpecVenafiCloudOutputWithContext(ctx context.Context) IssuerSpecVenafiCloudOutput {
	return o
}

func (o IssuerSpecVenafiCloudOutput) ToIssuerSpecVenafiCloudPtrOutput() IssuerSpecVenafiCloudPtrOutput {
	return o.ToIssuerSpecVenafiCloudPtrOutputWithContext(context.Background())
}

func (o IssuerSpecVenafiCloudOutput) ToIssuerSpecVenafiCloudPtrOutputWithContext(ctx context.Context) IssuerSpecVenafiCloudPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v IssuerSpecVenafiCloud) *IssuerSpecVenafiCloud {
		return &v
	}).(IssuerSpecVenafiCloudPtrOutput)
}

func (o IssuerSpecVenafiCloudOutput) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecVenafiCloud] {
	return pulumix.Output[IssuerSpecVenafiCloud]{
		OutputState: o.OutputState,
	}
}

// APITokenSecretRef is a secret key selector for the Venafi Cloud API token.
func (o IssuerSpecVenafiCloudOutput) ApiTokenSecretRef() IssuerSpecVenafiCloudApiTokenSecretRefOutput {
	return o.ApplyT(func(v IssuerSpecVenafiCloud) IssuerSpecVenafiCloudApiTokenSecretRef { return v.ApiTokenSecretRef }).(IssuerSpecVenafiCloudApiTokenSecretRefOutput)
}

// URL is the base URL for Venafi Cloud. Defaults to "https://api.venafi.cloud/v1".
func (o IssuerSpecVenafiCloudOutput) Url() pulumi.StringPtrOutput {
	return o.ApplyT(func(v IssuerSpecVenafiCloud) *string { return v.Url }).(pulumi.StringPtrOutput)
}

type IssuerSpecVenafiCloudPtrOutput struct{ *pulumi.OutputState }

func (IssuerSpecVenafiCloudPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecVenafiCloud)(nil)).Elem()
}

func (o IssuerSpecVenafiCloudPtrOutput) ToIssuerSpecVenafiCloudPtrOutput() IssuerSpecVenafiCloudPtrOutput {
	return o
}

func (o IssuerSpecVenafiCloudPtrOutput) ToIssuerSpecVenafiCloudPtrOutputWithContext(ctx context.Context) IssuerSpecVenafiCloudPtrOutput {
	return o
}

func (o IssuerSpecVenafiCloudPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecVenafiCloud] {
	return pulumix.Output[*IssuerSpecVenafiCloud]{
		OutputState: o.OutputState,
	}
}

func (o IssuerSpecVenafiCloudPtrOutput) Elem() IssuerSpecVenafiCloudOutput {
	return o.ApplyT(func(v *IssuerSpecVenafiCloud) IssuerSpecVenafiCloud {
		if v != nil {
			return *v
		}
		var ret IssuerSpecVenafiCloud
		return ret
	}).(IssuerSpecVenafiCloudOutput)
}

// APITokenSecretRef is a secret key selector for the Venafi Cloud API token.
func (o IssuerSpecVenafiCloudPtrOutput) ApiTokenSecretRef() IssuerSpecVenafiCloudApiTokenSecretRefPtrOutput {
	return o.ApplyT(func(v *IssuerSpecVenafiCloud) *IssuerSpecVenafiCloudApiTokenSecretRef {
		if v == nil {
			return nil
		}
		return &v.ApiTokenSecretRef
	}).(IssuerSpecVenafiCloudApiTokenSecretRefPtrOutput)
}

// URL is the base URL for Venafi Cloud. Defaults to "https://api.venafi.cloud/v1".
func (o IssuerSpecVenafiCloudPtrOutput) Url() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *IssuerSpecVenafiCloud) *string {
		if v == nil {
			return nil
		}
		return v.Url
	}).(pulumi.StringPtrOutput)
}

// APITokenSecretRef is a secret key selector for the Venafi Cloud API token.
type IssuerSpecVenafiCloudApiTokenSecretRef struct {
	// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
	Key *string `pulumi:"key"`
	// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
	Name string `pulumi:"name"`
}

// IssuerSpecVenafiCloudApiTokenSecretRefInput is an input type that accepts IssuerSpecVenafiCloudApiTokenSecretRefArgs and IssuerSpecVenafiCloudApiTokenSecretRefOutput values.
// You can construct a concrete instance of `IssuerSpecVenafiCloudApiTokenSecretRefInput` via:
//
//	IssuerSpecVenafiCloudApiTokenSecretRefArgs{...}
type IssuerSpecVenafiCloudApiTokenSecretRefInput interface {
	pulumi.Input

	ToIssuerSpecVenafiCloudApiTokenSecretRefOutput() IssuerSpecVenafiCloudApiTokenSecretRefOutput
	ToIssuerSpecVenafiCloudApiTokenSecretRefOutputWithContext(context.Context) IssuerSpecVenafiCloudApiTokenSecretRefOutput
}

// APITokenSecretRef is a secret key selector for the Venafi Cloud API token.
type IssuerSpecVenafiCloudApiTokenSecretRefArgs struct {
	// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
	Key pulumi.StringPtrInput `pulumi:"key"`
	// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
	Name pulumi.StringInput `pulumi:"name"`
}

func (IssuerSpecVenafiCloudApiTokenSecretRefArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecVenafiCloudApiTokenSecretRef)(nil)).Elem()
}

func (i IssuerSpecVenafiCloudApiTokenSecretRefArgs) ToIssuerSpecVenafiCloudApiTokenSecretRefOutput() IssuerSpecVenafiCloudApiTokenSecretRefOutput {
	return i.ToIssuerSpecVenafiCloudApiTokenSecretRefOutputWithContext(context.Background())
}

func (i IssuerSpecVenafiCloudApiTokenSecretRefArgs) ToIssuerSpecVenafiCloudApiTokenSecretRefOutputWithContext(ctx context.Context) IssuerSpecVenafiCloudApiTokenSecretRefOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecVenafiCloudApiTokenSecretRefOutput)
}

func (i IssuerSpecVenafiCloudApiTokenSecretRefArgs) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecVenafiCloudApiTokenSecretRef] {
	return pulumix.Output[IssuerSpecVenafiCloudApiTokenSecretRef]{
		OutputState: i.ToIssuerSpecVenafiCloudApiTokenSecretRefOutputWithContext(ctx).OutputState,
	}
}

func (i IssuerSpecVenafiCloudApiTokenSecretRefArgs) ToIssuerSpecVenafiCloudApiTokenSecretRefPtrOutput() IssuerSpecVenafiCloudApiTokenSecretRefPtrOutput {
	return i.ToIssuerSpecVenafiCloudApiTokenSecretRefPtrOutputWithContext(context.Background())
}

func (i IssuerSpecVenafiCloudApiTokenSecretRefArgs) ToIssuerSpecVenafiCloudApiTokenSecretRefPtrOutputWithContext(ctx context.Context) IssuerSpecVenafiCloudApiTokenSecretRefPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecVenafiCloudApiTokenSecretRefOutput).ToIssuerSpecVenafiCloudApiTokenSecretRefPtrOutputWithContext(ctx)
}

// IssuerSpecVenafiCloudApiTokenSecretRefPtrInput is an input type that accepts IssuerSpecVenafiCloudApiTokenSecretRefArgs, IssuerSpecVenafiCloudApiTokenSecretRefPtr and IssuerSpecVenafiCloudApiTokenSecretRefPtrOutput values.
// You can construct a concrete instance of `IssuerSpecVenafiCloudApiTokenSecretRefPtrInput` via:
//
//	        IssuerSpecVenafiCloudApiTokenSecretRefArgs{...}
//
//	or:
//
//	        nil
type IssuerSpecVenafiCloudApiTokenSecretRefPtrInput interface {
	pulumi.Input

	ToIssuerSpecVenafiCloudApiTokenSecretRefPtrOutput() IssuerSpecVenafiCloudApiTokenSecretRefPtrOutput
	ToIssuerSpecVenafiCloudApiTokenSecretRefPtrOutputWithContext(context.Context) IssuerSpecVenafiCloudApiTokenSecretRefPtrOutput
}

type issuerSpecVenafiCloudApiTokenSecretRefPtrType IssuerSpecVenafiCloudApiTokenSecretRefArgs

func IssuerSpecVenafiCloudApiTokenSecretRefPtr(v *IssuerSpecVenafiCloudApiTokenSecretRefArgs) IssuerSpecVenafiCloudApiTokenSecretRefPtrInput {
	return (*issuerSpecVenafiCloudApiTokenSecretRefPtrType)(v)
}

func (*issuerSpecVenafiCloudApiTokenSecretRefPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecVenafiCloudApiTokenSecretRef)(nil)).Elem()
}

func (i *issuerSpecVenafiCloudApiTokenSecretRefPtrType) ToIssuerSpecVenafiCloudApiTokenSecretRefPtrOutput() IssuerSpecVenafiCloudApiTokenSecretRefPtrOutput {
	return i.ToIssuerSpecVenafiCloudApiTokenSecretRefPtrOutputWithContext(context.Background())
}

func (i *issuerSpecVenafiCloudApiTokenSecretRefPtrType) ToIssuerSpecVenafiCloudApiTokenSecretRefPtrOutputWithContext(ctx context.Context) IssuerSpecVenafiCloudApiTokenSecretRefPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecVenafiCloudApiTokenSecretRefPtrOutput)
}

func (i *issuerSpecVenafiCloudApiTokenSecretRefPtrType) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecVenafiCloudApiTokenSecretRef] {
	return pulumix.Output[*IssuerSpecVenafiCloudApiTokenSecretRef]{
		OutputState: i.ToIssuerSpecVenafiCloudApiTokenSecretRefPtrOutputWithContext(ctx).OutputState,
	}
}

// APITokenSecretRef is a secret key selector for the Venafi Cloud API token.
type IssuerSpecVenafiCloudApiTokenSecretRefOutput struct{ *pulumi.OutputState }

func (IssuerSpecVenafiCloudApiTokenSecretRefOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecVenafiCloudApiTokenSecretRef)(nil)).Elem()
}

func (o IssuerSpecVenafiCloudApiTokenSecretRefOutput) ToIssuerSpecVenafiCloudApiTokenSecretRefOutput() IssuerSpecVenafiCloudApiTokenSecretRefOutput {
	return o
}

func (o IssuerSpecVenafiCloudApiTokenSecretRefOutput) ToIssuerSpecVenafiCloudApiTokenSecretRefOutputWithContext(ctx context.Context) IssuerSpecVenafiCloudApiTokenSecretRefOutput {
	return o
}

func (o IssuerSpecVenafiCloudApiTokenSecretRefOutput) ToIssuerSpecVenafiCloudApiTokenSecretRefPtrOutput() IssuerSpecVenafiCloudApiTokenSecretRefPtrOutput {
	return o.ToIssuerSpecVenafiCloudApiTokenSecretRefPtrOutputWithContext(context.Background())
}

func (o IssuerSpecVenafiCloudApiTokenSecretRefOutput) ToIssuerSpecVenafiCloudApiTokenSecretRefPtrOutputWithContext(ctx context.Context) IssuerSpecVenafiCloudApiTokenSecretRefPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v IssuerSpecVenafiCloudApiTokenSecretRef) *IssuerSpecVenafiCloudApiTokenSecretRef {
		return &v
	}).(IssuerSpecVenafiCloudApiTokenSecretRefPtrOutput)
}

func (o IssuerSpecVenafiCloudApiTokenSecretRefOutput) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecVenafiCloudApiTokenSecretRef] {
	return pulumix.Output[IssuerSpecVenafiCloudApiTokenSecretRef]{
		OutputState: o.OutputState,
	}
}

// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
func (o IssuerSpecVenafiCloudApiTokenSecretRefOutput) Key() pulumi.StringPtrOutput {
	return o.ApplyT(func(v IssuerSpecVenafiCloudApiTokenSecretRef) *string { return v.Key }).(pulumi.StringPtrOutput)
}

// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
func (o IssuerSpecVenafiCloudApiTokenSecretRefOutput) Name() pulumi.StringOutput {
	return o.ApplyT(func(v IssuerSpecVenafiCloudApiTokenSecretRef) string { return v.Name }).(pulumi.StringOutput)
}

type IssuerSpecVenafiCloudApiTokenSecretRefPtrOutput struct{ *pulumi.OutputState }

func (IssuerSpecVenafiCloudApiTokenSecretRefPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecVenafiCloudApiTokenSecretRef)(nil)).Elem()
}

func (o IssuerSpecVenafiCloudApiTokenSecretRefPtrOutput) ToIssuerSpecVenafiCloudApiTokenSecretRefPtrOutput() IssuerSpecVenafiCloudApiTokenSecretRefPtrOutput {
	return o
}

func (o IssuerSpecVenafiCloudApiTokenSecretRefPtrOutput) ToIssuerSpecVenafiCloudApiTokenSecretRefPtrOutputWithContext(ctx context.Context) IssuerSpecVenafiCloudApiTokenSecretRefPtrOutput {
	return o
}

func (o IssuerSpecVenafiCloudApiTokenSecretRefPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecVenafiCloudApiTokenSecretRef] {
	return pulumix.Output[*IssuerSpecVenafiCloudApiTokenSecretRef]{
		OutputState: o.OutputState,
	}
}

func (o IssuerSpecVenafiCloudApiTokenSecretRefPtrOutput) Elem() IssuerSpecVenafiCloudApiTokenSecretRefOutput {
	return o.ApplyT(func(v *IssuerSpecVenafiCloudApiTokenSecretRef) IssuerSpecVenafiCloudApiTokenSecretRef {
		if v != nil {
			return *v
		}
		var ret IssuerSpecVenafiCloudApiTokenSecretRef
		return ret
	}).(IssuerSpecVenafiCloudApiTokenSecretRefOutput)
}

// The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be defaulted, in others it may be required.
func (o IssuerSpecVenafiCloudApiTokenSecretRefPtrOutput) Key() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *IssuerSpecVenafiCloudApiTokenSecretRef) *string {
		if v == nil {
			return nil
		}
		return v.Key
	}).(pulumi.StringPtrOutput)
}

// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
func (o IssuerSpecVenafiCloudApiTokenSecretRefPtrOutput) Name() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *IssuerSpecVenafiCloudApiTokenSecretRef) *string {
		if v == nil {
			return nil
		}
		return &v.Name
	}).(pulumi.StringPtrOutput)
}

// TPP specifies Trust Protection Platform configuration settings. Only one of TPP or Cloud may be specified.
type IssuerSpecVenafiTpp struct {
	// CABundle is a PEM encoded TLS certificate to use to verify connections to the TPP instance. If specified, system roots will not be used and the issuing CA for the TPP instance must be verifiable using the provided root. If not specified, the connection will be verified using the cert-manager system root certificates.
	CaBundle *string `pulumi:"caBundle"`
	// CredentialsRef is a reference to a Secret containing the username and password for the TPP server. The secret must contain two keys, 'username' and 'password'.
	CredentialsRef IssuerSpecVenafiTppCredentialsRef `pulumi:"credentialsRef"`
	// URL is the base URL for the vedsdk endpoint of the Venafi TPP instance, for example: "https://tpp.example.com/vedsdk".
	Url string `pulumi:"url"`
}

// IssuerSpecVenafiTppInput is an input type that accepts IssuerSpecVenafiTppArgs and IssuerSpecVenafiTppOutput values.
// You can construct a concrete instance of `IssuerSpecVenafiTppInput` via:
//
//	IssuerSpecVenafiTppArgs{...}
type IssuerSpecVenafiTppInput interface {
	pulumi.Input

	ToIssuerSpecVenafiTppOutput() IssuerSpecVenafiTppOutput
	ToIssuerSpecVenafiTppOutputWithContext(context.Context) IssuerSpecVenafiTppOutput
}

// TPP specifies Trust Protection Platform configuration settings. Only one of TPP or Cloud may be specified.
type IssuerSpecVenafiTppArgs struct {
	// CABundle is a PEM encoded TLS certificate to use to verify connections to the TPP instance. If specified, system roots will not be used and the issuing CA for the TPP instance must be verifiable using the provided root. If not specified, the connection will be verified using the cert-manager system root certificates.
	CaBundle pulumi.StringPtrInput `pulumi:"caBundle"`
	// CredentialsRef is a reference to a Secret containing the username and password for the TPP server. The secret must contain two keys, 'username' and 'password'.
	CredentialsRef IssuerSpecVenafiTppCredentialsRefInput `pulumi:"credentialsRef"`
	// URL is the base URL for the vedsdk endpoint of the Venafi TPP instance, for example: "https://tpp.example.com/vedsdk".
	Url pulumi.StringInput `pulumi:"url"`
}

func (IssuerSpecVenafiTppArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecVenafiTpp)(nil)).Elem()
}

func (i IssuerSpecVenafiTppArgs) ToIssuerSpecVenafiTppOutput() IssuerSpecVenafiTppOutput {
	return i.ToIssuerSpecVenafiTppOutputWithContext(context.Background())
}

func (i IssuerSpecVenafiTppArgs) ToIssuerSpecVenafiTppOutputWithContext(ctx context.Context) IssuerSpecVenafiTppOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecVenafiTppOutput)
}

func (i IssuerSpecVenafiTppArgs) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecVenafiTpp] {
	return pulumix.Output[IssuerSpecVenafiTpp]{
		OutputState: i.ToIssuerSpecVenafiTppOutputWithContext(ctx).OutputState,
	}
}

func (i IssuerSpecVenafiTppArgs) ToIssuerSpecVenafiTppPtrOutput() IssuerSpecVenafiTppPtrOutput {
	return i.ToIssuerSpecVenafiTppPtrOutputWithContext(context.Background())
}

func (i IssuerSpecVenafiTppArgs) ToIssuerSpecVenafiTppPtrOutputWithContext(ctx context.Context) IssuerSpecVenafiTppPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecVenafiTppOutput).ToIssuerSpecVenafiTppPtrOutputWithContext(ctx)
}

// IssuerSpecVenafiTppPtrInput is an input type that accepts IssuerSpecVenafiTppArgs, IssuerSpecVenafiTppPtr and IssuerSpecVenafiTppPtrOutput values.
// You can construct a concrete instance of `IssuerSpecVenafiTppPtrInput` via:
//
//	        IssuerSpecVenafiTppArgs{...}
//
//	or:
//
//	        nil
type IssuerSpecVenafiTppPtrInput interface {
	pulumi.Input

	ToIssuerSpecVenafiTppPtrOutput() IssuerSpecVenafiTppPtrOutput
	ToIssuerSpecVenafiTppPtrOutputWithContext(context.Context) IssuerSpecVenafiTppPtrOutput
}

type issuerSpecVenafiTppPtrType IssuerSpecVenafiTppArgs

func IssuerSpecVenafiTppPtr(v *IssuerSpecVenafiTppArgs) IssuerSpecVenafiTppPtrInput {
	return (*issuerSpecVenafiTppPtrType)(v)
}

func (*issuerSpecVenafiTppPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecVenafiTpp)(nil)).Elem()
}

func (i *issuerSpecVenafiTppPtrType) ToIssuerSpecVenafiTppPtrOutput() IssuerSpecVenafiTppPtrOutput {
	return i.ToIssuerSpecVenafiTppPtrOutputWithContext(context.Background())
}

func (i *issuerSpecVenafiTppPtrType) ToIssuerSpecVenafiTppPtrOutputWithContext(ctx context.Context) IssuerSpecVenafiTppPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecVenafiTppPtrOutput)
}

func (i *issuerSpecVenafiTppPtrType) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecVenafiTpp] {
	return pulumix.Output[*IssuerSpecVenafiTpp]{
		OutputState: i.ToIssuerSpecVenafiTppPtrOutputWithContext(ctx).OutputState,
	}
}

// TPP specifies Trust Protection Platform configuration settings. Only one of TPP or Cloud may be specified.
type IssuerSpecVenafiTppOutput struct{ *pulumi.OutputState }

func (IssuerSpecVenafiTppOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecVenafiTpp)(nil)).Elem()
}

func (o IssuerSpecVenafiTppOutput) ToIssuerSpecVenafiTppOutput() IssuerSpecVenafiTppOutput {
	return o
}

func (o IssuerSpecVenafiTppOutput) ToIssuerSpecVenafiTppOutputWithContext(ctx context.Context) IssuerSpecVenafiTppOutput {
	return o
}

func (o IssuerSpecVenafiTppOutput) ToIssuerSpecVenafiTppPtrOutput() IssuerSpecVenafiTppPtrOutput {
	return o.ToIssuerSpecVenafiTppPtrOutputWithContext(context.Background())
}

func (o IssuerSpecVenafiTppOutput) ToIssuerSpecVenafiTppPtrOutputWithContext(ctx context.Context) IssuerSpecVenafiTppPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v IssuerSpecVenafiTpp) *IssuerSpecVenafiTpp {
		return &v
	}).(IssuerSpecVenafiTppPtrOutput)
}

func (o IssuerSpecVenafiTppOutput) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecVenafiTpp] {
	return pulumix.Output[IssuerSpecVenafiTpp]{
		OutputState: o.OutputState,
	}
}

// CABundle is a PEM encoded TLS certificate to use to verify connections to the TPP instance. If specified, system roots will not be used and the issuing CA for the TPP instance must be verifiable using the provided root. If not specified, the connection will be verified using the cert-manager system root certificates.
func (o IssuerSpecVenafiTppOutput) CaBundle() pulumi.StringPtrOutput {
	return o.ApplyT(func(v IssuerSpecVenafiTpp) *string { return v.CaBundle }).(pulumi.StringPtrOutput)
}

// CredentialsRef is a reference to a Secret containing the username and password for the TPP server. The secret must contain two keys, 'username' and 'password'.
func (o IssuerSpecVenafiTppOutput) CredentialsRef() IssuerSpecVenafiTppCredentialsRefOutput {
	return o.ApplyT(func(v IssuerSpecVenafiTpp) IssuerSpecVenafiTppCredentialsRef { return v.CredentialsRef }).(IssuerSpecVenafiTppCredentialsRefOutput)
}

// URL is the base URL for the vedsdk endpoint of the Venafi TPP instance, for example: "https://tpp.example.com/vedsdk".
func (o IssuerSpecVenafiTppOutput) Url() pulumi.StringOutput {
	return o.ApplyT(func(v IssuerSpecVenafiTpp) string { return v.Url }).(pulumi.StringOutput)
}

type IssuerSpecVenafiTppPtrOutput struct{ *pulumi.OutputState }

func (IssuerSpecVenafiTppPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecVenafiTpp)(nil)).Elem()
}

func (o IssuerSpecVenafiTppPtrOutput) ToIssuerSpecVenafiTppPtrOutput() IssuerSpecVenafiTppPtrOutput {
	return o
}

func (o IssuerSpecVenafiTppPtrOutput) ToIssuerSpecVenafiTppPtrOutputWithContext(ctx context.Context) IssuerSpecVenafiTppPtrOutput {
	return o
}

func (o IssuerSpecVenafiTppPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecVenafiTpp] {
	return pulumix.Output[*IssuerSpecVenafiTpp]{
		OutputState: o.OutputState,
	}
}

func (o IssuerSpecVenafiTppPtrOutput) Elem() IssuerSpecVenafiTppOutput {
	return o.ApplyT(func(v *IssuerSpecVenafiTpp) IssuerSpecVenafiTpp {
		if v != nil {
			return *v
		}
		var ret IssuerSpecVenafiTpp
		return ret
	}).(IssuerSpecVenafiTppOutput)
}

// CABundle is a PEM encoded TLS certificate to use to verify connections to the TPP instance. If specified, system roots will not be used and the issuing CA for the TPP instance must be verifiable using the provided root. If not specified, the connection will be verified using the cert-manager system root certificates.
func (o IssuerSpecVenafiTppPtrOutput) CaBundle() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *IssuerSpecVenafiTpp) *string {
		if v == nil {
			return nil
		}
		return v.CaBundle
	}).(pulumi.StringPtrOutput)
}

// CredentialsRef is a reference to a Secret containing the username and password for the TPP server. The secret must contain two keys, 'username' and 'password'.
func (o IssuerSpecVenafiTppPtrOutput) CredentialsRef() IssuerSpecVenafiTppCredentialsRefPtrOutput {
	return o.ApplyT(func(v *IssuerSpecVenafiTpp) *IssuerSpecVenafiTppCredentialsRef {
		if v == nil {
			return nil
		}
		return &v.CredentialsRef
	}).(IssuerSpecVenafiTppCredentialsRefPtrOutput)
}

// URL is the base URL for the vedsdk endpoint of the Venafi TPP instance, for example: "https://tpp.example.com/vedsdk".
func (o IssuerSpecVenafiTppPtrOutput) Url() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *IssuerSpecVenafiTpp) *string {
		if v == nil {
			return nil
		}
		return &v.Url
	}).(pulumi.StringPtrOutput)
}

// CredentialsRef is a reference to a Secret containing the username and password for the TPP server. The secret must contain two keys, 'username' and 'password'.
type IssuerSpecVenafiTppCredentialsRef struct {
	// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
	Name string `pulumi:"name"`
}

// IssuerSpecVenafiTppCredentialsRefInput is an input type that accepts IssuerSpecVenafiTppCredentialsRefArgs and IssuerSpecVenafiTppCredentialsRefOutput values.
// You can construct a concrete instance of `IssuerSpecVenafiTppCredentialsRefInput` via:
//
//	IssuerSpecVenafiTppCredentialsRefArgs{...}
type IssuerSpecVenafiTppCredentialsRefInput interface {
	pulumi.Input

	ToIssuerSpecVenafiTppCredentialsRefOutput() IssuerSpecVenafiTppCredentialsRefOutput
	ToIssuerSpecVenafiTppCredentialsRefOutputWithContext(context.Context) IssuerSpecVenafiTppCredentialsRefOutput
}

// CredentialsRef is a reference to a Secret containing the username and password for the TPP server. The secret must contain two keys, 'username' and 'password'.
type IssuerSpecVenafiTppCredentialsRefArgs struct {
	// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
	Name pulumi.StringInput `pulumi:"name"`
}

func (IssuerSpecVenafiTppCredentialsRefArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecVenafiTppCredentialsRef)(nil)).Elem()
}

func (i IssuerSpecVenafiTppCredentialsRefArgs) ToIssuerSpecVenafiTppCredentialsRefOutput() IssuerSpecVenafiTppCredentialsRefOutput {
	return i.ToIssuerSpecVenafiTppCredentialsRefOutputWithContext(context.Background())
}

func (i IssuerSpecVenafiTppCredentialsRefArgs) ToIssuerSpecVenafiTppCredentialsRefOutputWithContext(ctx context.Context) IssuerSpecVenafiTppCredentialsRefOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecVenafiTppCredentialsRefOutput)
}

func (i IssuerSpecVenafiTppCredentialsRefArgs) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecVenafiTppCredentialsRef] {
	return pulumix.Output[IssuerSpecVenafiTppCredentialsRef]{
		OutputState: i.ToIssuerSpecVenafiTppCredentialsRefOutputWithContext(ctx).OutputState,
	}
}

func (i IssuerSpecVenafiTppCredentialsRefArgs) ToIssuerSpecVenafiTppCredentialsRefPtrOutput() IssuerSpecVenafiTppCredentialsRefPtrOutput {
	return i.ToIssuerSpecVenafiTppCredentialsRefPtrOutputWithContext(context.Background())
}

func (i IssuerSpecVenafiTppCredentialsRefArgs) ToIssuerSpecVenafiTppCredentialsRefPtrOutputWithContext(ctx context.Context) IssuerSpecVenafiTppCredentialsRefPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecVenafiTppCredentialsRefOutput).ToIssuerSpecVenafiTppCredentialsRefPtrOutputWithContext(ctx)
}

// IssuerSpecVenafiTppCredentialsRefPtrInput is an input type that accepts IssuerSpecVenafiTppCredentialsRefArgs, IssuerSpecVenafiTppCredentialsRefPtr and IssuerSpecVenafiTppCredentialsRefPtrOutput values.
// You can construct a concrete instance of `IssuerSpecVenafiTppCredentialsRefPtrInput` via:
//
//	        IssuerSpecVenafiTppCredentialsRefArgs{...}
//
//	or:
//
//	        nil
type IssuerSpecVenafiTppCredentialsRefPtrInput interface {
	pulumi.Input

	ToIssuerSpecVenafiTppCredentialsRefPtrOutput() IssuerSpecVenafiTppCredentialsRefPtrOutput
	ToIssuerSpecVenafiTppCredentialsRefPtrOutputWithContext(context.Context) IssuerSpecVenafiTppCredentialsRefPtrOutput
}

type issuerSpecVenafiTppCredentialsRefPtrType IssuerSpecVenafiTppCredentialsRefArgs

func IssuerSpecVenafiTppCredentialsRefPtr(v *IssuerSpecVenafiTppCredentialsRefArgs) IssuerSpecVenafiTppCredentialsRefPtrInput {
	return (*issuerSpecVenafiTppCredentialsRefPtrType)(v)
}

func (*issuerSpecVenafiTppCredentialsRefPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecVenafiTppCredentialsRef)(nil)).Elem()
}

func (i *issuerSpecVenafiTppCredentialsRefPtrType) ToIssuerSpecVenafiTppCredentialsRefPtrOutput() IssuerSpecVenafiTppCredentialsRefPtrOutput {
	return i.ToIssuerSpecVenafiTppCredentialsRefPtrOutputWithContext(context.Background())
}

func (i *issuerSpecVenafiTppCredentialsRefPtrType) ToIssuerSpecVenafiTppCredentialsRefPtrOutputWithContext(ctx context.Context) IssuerSpecVenafiTppCredentialsRefPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerSpecVenafiTppCredentialsRefPtrOutput)
}

func (i *issuerSpecVenafiTppCredentialsRefPtrType) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecVenafiTppCredentialsRef] {
	return pulumix.Output[*IssuerSpecVenafiTppCredentialsRef]{
		OutputState: i.ToIssuerSpecVenafiTppCredentialsRefPtrOutputWithContext(ctx).OutputState,
	}
}

// CredentialsRef is a reference to a Secret containing the username and password for the TPP server. The secret must contain two keys, 'username' and 'password'.
type IssuerSpecVenafiTppCredentialsRefOutput struct{ *pulumi.OutputState }

func (IssuerSpecVenafiTppCredentialsRefOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerSpecVenafiTppCredentialsRef)(nil)).Elem()
}

func (o IssuerSpecVenafiTppCredentialsRefOutput) ToIssuerSpecVenafiTppCredentialsRefOutput() IssuerSpecVenafiTppCredentialsRefOutput {
	return o
}

func (o IssuerSpecVenafiTppCredentialsRefOutput) ToIssuerSpecVenafiTppCredentialsRefOutputWithContext(ctx context.Context) IssuerSpecVenafiTppCredentialsRefOutput {
	return o
}

func (o IssuerSpecVenafiTppCredentialsRefOutput) ToIssuerSpecVenafiTppCredentialsRefPtrOutput() IssuerSpecVenafiTppCredentialsRefPtrOutput {
	return o.ToIssuerSpecVenafiTppCredentialsRefPtrOutputWithContext(context.Background())
}

func (o IssuerSpecVenafiTppCredentialsRefOutput) ToIssuerSpecVenafiTppCredentialsRefPtrOutputWithContext(ctx context.Context) IssuerSpecVenafiTppCredentialsRefPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v IssuerSpecVenafiTppCredentialsRef) *IssuerSpecVenafiTppCredentialsRef {
		return &v
	}).(IssuerSpecVenafiTppCredentialsRefPtrOutput)
}

func (o IssuerSpecVenafiTppCredentialsRefOutput) ToOutput(ctx context.Context) pulumix.Output[IssuerSpecVenafiTppCredentialsRef] {
	return pulumix.Output[IssuerSpecVenafiTppCredentialsRef]{
		OutputState: o.OutputState,
	}
}

// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
func (o IssuerSpecVenafiTppCredentialsRefOutput) Name() pulumi.StringOutput {
	return o.ApplyT(func(v IssuerSpecVenafiTppCredentialsRef) string { return v.Name }).(pulumi.StringOutput)
}

type IssuerSpecVenafiTppCredentialsRefPtrOutput struct{ *pulumi.OutputState }

func (IssuerSpecVenafiTppCredentialsRefPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerSpecVenafiTppCredentialsRef)(nil)).Elem()
}

func (o IssuerSpecVenafiTppCredentialsRefPtrOutput) ToIssuerSpecVenafiTppCredentialsRefPtrOutput() IssuerSpecVenafiTppCredentialsRefPtrOutput {
	return o
}

func (o IssuerSpecVenafiTppCredentialsRefPtrOutput) ToIssuerSpecVenafiTppCredentialsRefPtrOutputWithContext(ctx context.Context) IssuerSpecVenafiTppCredentialsRefPtrOutput {
	return o
}

func (o IssuerSpecVenafiTppCredentialsRefPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*IssuerSpecVenafiTppCredentialsRef] {
	return pulumix.Output[*IssuerSpecVenafiTppCredentialsRef]{
		OutputState: o.OutputState,
	}
}

func (o IssuerSpecVenafiTppCredentialsRefPtrOutput) Elem() IssuerSpecVenafiTppCredentialsRefOutput {
	return o.ApplyT(func(v *IssuerSpecVenafiTppCredentialsRef) IssuerSpecVenafiTppCredentialsRef {
		if v != nil {
			return *v
		}
		var ret IssuerSpecVenafiTppCredentialsRef
		return ret
	}).(IssuerSpecVenafiTppCredentialsRefOutput)
}

// Name of the resource being referred to. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
func (o IssuerSpecVenafiTppCredentialsRefPtrOutput) Name() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *IssuerSpecVenafiTppCredentialsRef) *string {
		if v == nil {
			return nil
		}
		return &v.Name
	}).(pulumi.StringPtrOutput)
}

// Status of the Issuer. This is set and managed automatically.
type IssuerStatus struct {
	// ACME specific status options. This field should only be set if the Issuer is configured to use an ACME server to issue certificates.
	Acme *IssuerStatusAcme `pulumi:"acme"`
	// List of status conditions to indicate the status of a CertificateRequest. Known condition types are `Ready`.
	Conditions []IssuerStatusConditions `pulumi:"conditions"`
}

// IssuerStatusInput is an input type that accepts IssuerStatusArgs and IssuerStatusOutput values.
// You can construct a concrete instance of `IssuerStatusInput` via:
//
//	IssuerStatusArgs{...}
type IssuerStatusInput interface {
	pulumi.Input

	ToIssuerStatusOutput() IssuerStatusOutput
	ToIssuerStatusOutputWithContext(context.Context) IssuerStatusOutput
}

// Status of the Issuer. This is set and managed automatically.
type IssuerStatusArgs struct {
	// ACME specific status options. This field should only be set if the Issuer is configured to use an ACME server to issue certificates.
	Acme IssuerStatusAcmePtrInput `pulumi:"acme"`
	// List of status conditions to indicate the status of a CertificateRequest. Known condition types are `Ready`.
	Conditions IssuerStatusConditionsArrayInput `pulumi:"conditions"`
}

func (IssuerStatusArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerStatus)(nil)).Elem()
}

func (i IssuerStatusArgs) ToIssuerStatusOutput() IssuerStatusOutput {
	return i.ToIssuerStatusOutputWithContext(context.Background())
}

func (i IssuerStatusArgs) ToIssuerStatusOutputWithContext(ctx context.Context) IssuerStatusOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerStatusOutput)
}

func (i IssuerStatusArgs) ToOutput(ctx context.Context) pulumix.Output[IssuerStatus] {
	return pulumix.Output[IssuerStatus]{
		OutputState: i.ToIssuerStatusOutputWithContext(ctx).OutputState,
	}
}

func (i IssuerStatusArgs) ToIssuerStatusPtrOutput() IssuerStatusPtrOutput {
	return i.ToIssuerStatusPtrOutputWithContext(context.Background())
}

func (i IssuerStatusArgs) ToIssuerStatusPtrOutputWithContext(ctx context.Context) IssuerStatusPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerStatusOutput).ToIssuerStatusPtrOutputWithContext(ctx)
}

// IssuerStatusPtrInput is an input type that accepts IssuerStatusArgs, IssuerStatusPtr and IssuerStatusPtrOutput values.
// You can construct a concrete instance of `IssuerStatusPtrInput` via:
//
//	        IssuerStatusArgs{...}
//
//	or:
//
//	        nil
type IssuerStatusPtrInput interface {
	pulumi.Input

	ToIssuerStatusPtrOutput() IssuerStatusPtrOutput
	ToIssuerStatusPtrOutputWithContext(context.Context) IssuerStatusPtrOutput
}

type issuerStatusPtrType IssuerStatusArgs

func IssuerStatusPtr(v *IssuerStatusArgs) IssuerStatusPtrInput {
	return (*issuerStatusPtrType)(v)
}

func (*issuerStatusPtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerStatus)(nil)).Elem()
}

func (i *issuerStatusPtrType) ToIssuerStatusPtrOutput() IssuerStatusPtrOutput {
	return i.ToIssuerStatusPtrOutputWithContext(context.Background())
}

func (i *issuerStatusPtrType) ToIssuerStatusPtrOutputWithContext(ctx context.Context) IssuerStatusPtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerStatusPtrOutput)
}

func (i *issuerStatusPtrType) ToOutput(ctx context.Context) pulumix.Output[*IssuerStatus] {
	return pulumix.Output[*IssuerStatus]{
		OutputState: i.ToIssuerStatusPtrOutputWithContext(ctx).OutputState,
	}
}

// Status of the Issuer. This is set and managed automatically.
type IssuerStatusOutput struct{ *pulumi.OutputState }

func (IssuerStatusOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerStatus)(nil)).Elem()
}

func (o IssuerStatusOutput) ToIssuerStatusOutput() IssuerStatusOutput {
	return o
}

func (o IssuerStatusOutput) ToIssuerStatusOutputWithContext(ctx context.Context) IssuerStatusOutput {
	return o
}

func (o IssuerStatusOutput) ToIssuerStatusPtrOutput() IssuerStatusPtrOutput {
	return o.ToIssuerStatusPtrOutputWithContext(context.Background())
}

func (o IssuerStatusOutput) ToIssuerStatusPtrOutputWithContext(ctx context.Context) IssuerStatusPtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v IssuerStatus) *IssuerStatus {
		return &v
	}).(IssuerStatusPtrOutput)
}

func (o IssuerStatusOutput) ToOutput(ctx context.Context) pulumix.Output[IssuerStatus] {
	return pulumix.Output[IssuerStatus]{
		OutputState: o.OutputState,
	}
}

// ACME specific status options. This field should only be set if the Issuer is configured to use an ACME server to issue certificates.
func (o IssuerStatusOutput) Acme() IssuerStatusAcmePtrOutput {
	return o.ApplyT(func(v IssuerStatus) *IssuerStatusAcme { return v.Acme }).(IssuerStatusAcmePtrOutput)
}

// List of status conditions to indicate the status of a CertificateRequest. Known condition types are `Ready`.
func (o IssuerStatusOutput) Conditions() IssuerStatusConditionsArrayOutput {
	return o.ApplyT(func(v IssuerStatus) []IssuerStatusConditions { return v.Conditions }).(IssuerStatusConditionsArrayOutput)
}

type IssuerStatusPtrOutput struct{ *pulumi.OutputState }

func (IssuerStatusPtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerStatus)(nil)).Elem()
}

func (o IssuerStatusPtrOutput) ToIssuerStatusPtrOutput() IssuerStatusPtrOutput {
	return o
}

func (o IssuerStatusPtrOutput) ToIssuerStatusPtrOutputWithContext(ctx context.Context) IssuerStatusPtrOutput {
	return o
}

func (o IssuerStatusPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*IssuerStatus] {
	return pulumix.Output[*IssuerStatus]{
		OutputState: o.OutputState,
	}
}

func (o IssuerStatusPtrOutput) Elem() IssuerStatusOutput {
	return o.ApplyT(func(v *IssuerStatus) IssuerStatus {
		if v != nil {
			return *v
		}
		var ret IssuerStatus
		return ret
	}).(IssuerStatusOutput)
}

// ACME specific status options. This field should only be set if the Issuer is configured to use an ACME server to issue certificates.
func (o IssuerStatusPtrOutput) Acme() IssuerStatusAcmePtrOutput {
	return o.ApplyT(func(v *IssuerStatus) *IssuerStatusAcme {
		if v == nil {
			return nil
		}
		return v.Acme
	}).(IssuerStatusAcmePtrOutput)
}

// List of status conditions to indicate the status of a CertificateRequest. Known condition types are `Ready`.
func (o IssuerStatusPtrOutput) Conditions() IssuerStatusConditionsArrayOutput {
	return o.ApplyT(func(v *IssuerStatus) []IssuerStatusConditions {
		if v == nil {
			return nil
		}
		return v.Conditions
	}).(IssuerStatusConditionsArrayOutput)
}

// ACME specific status options. This field should only be set if the Issuer is configured to use an ACME server to issue certificates.
type IssuerStatusAcme struct {
	// LastRegisteredEmail is the email associated with the latest registered ACME account, in order to track changes made to registered account associated with the  Issuer
	LastRegisteredEmail *string `pulumi:"lastRegisteredEmail"`
	// URI is the unique account identifier, which can also be used to retrieve account details from the CA
	Uri *string `pulumi:"uri"`
}

// IssuerStatusAcmeInput is an input type that accepts IssuerStatusAcmeArgs and IssuerStatusAcmeOutput values.
// You can construct a concrete instance of `IssuerStatusAcmeInput` via:
//
//	IssuerStatusAcmeArgs{...}
type IssuerStatusAcmeInput interface {
	pulumi.Input

	ToIssuerStatusAcmeOutput() IssuerStatusAcmeOutput
	ToIssuerStatusAcmeOutputWithContext(context.Context) IssuerStatusAcmeOutput
}

// ACME specific status options. This field should only be set if the Issuer is configured to use an ACME server to issue certificates.
type IssuerStatusAcmeArgs struct {
	// LastRegisteredEmail is the email associated with the latest registered ACME account, in order to track changes made to registered account associated with the  Issuer
	LastRegisteredEmail pulumi.StringPtrInput `pulumi:"lastRegisteredEmail"`
	// URI is the unique account identifier, which can also be used to retrieve account details from the CA
	Uri pulumi.StringPtrInput `pulumi:"uri"`
}

func (IssuerStatusAcmeArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerStatusAcme)(nil)).Elem()
}

func (i IssuerStatusAcmeArgs) ToIssuerStatusAcmeOutput() IssuerStatusAcmeOutput {
	return i.ToIssuerStatusAcmeOutputWithContext(context.Background())
}

func (i IssuerStatusAcmeArgs) ToIssuerStatusAcmeOutputWithContext(ctx context.Context) IssuerStatusAcmeOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerStatusAcmeOutput)
}

func (i IssuerStatusAcmeArgs) ToOutput(ctx context.Context) pulumix.Output[IssuerStatusAcme] {
	return pulumix.Output[IssuerStatusAcme]{
		OutputState: i.ToIssuerStatusAcmeOutputWithContext(ctx).OutputState,
	}
}

func (i IssuerStatusAcmeArgs) ToIssuerStatusAcmePtrOutput() IssuerStatusAcmePtrOutput {
	return i.ToIssuerStatusAcmePtrOutputWithContext(context.Background())
}

func (i IssuerStatusAcmeArgs) ToIssuerStatusAcmePtrOutputWithContext(ctx context.Context) IssuerStatusAcmePtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerStatusAcmeOutput).ToIssuerStatusAcmePtrOutputWithContext(ctx)
}

// IssuerStatusAcmePtrInput is an input type that accepts IssuerStatusAcmeArgs, IssuerStatusAcmePtr and IssuerStatusAcmePtrOutput values.
// You can construct a concrete instance of `IssuerStatusAcmePtrInput` via:
//
//	        IssuerStatusAcmeArgs{...}
//
//	or:
//
//	        nil
type IssuerStatusAcmePtrInput interface {
	pulumi.Input

	ToIssuerStatusAcmePtrOutput() IssuerStatusAcmePtrOutput
	ToIssuerStatusAcmePtrOutputWithContext(context.Context) IssuerStatusAcmePtrOutput
}

type issuerStatusAcmePtrType IssuerStatusAcmeArgs

func IssuerStatusAcmePtr(v *IssuerStatusAcmeArgs) IssuerStatusAcmePtrInput {
	return (*issuerStatusAcmePtrType)(v)
}

func (*issuerStatusAcmePtrType) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerStatusAcme)(nil)).Elem()
}

func (i *issuerStatusAcmePtrType) ToIssuerStatusAcmePtrOutput() IssuerStatusAcmePtrOutput {
	return i.ToIssuerStatusAcmePtrOutputWithContext(context.Background())
}

func (i *issuerStatusAcmePtrType) ToIssuerStatusAcmePtrOutputWithContext(ctx context.Context) IssuerStatusAcmePtrOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerStatusAcmePtrOutput)
}

func (i *issuerStatusAcmePtrType) ToOutput(ctx context.Context) pulumix.Output[*IssuerStatusAcme] {
	return pulumix.Output[*IssuerStatusAcme]{
		OutputState: i.ToIssuerStatusAcmePtrOutputWithContext(ctx).OutputState,
	}
}

// ACME specific status options. This field should only be set if the Issuer is configured to use an ACME server to issue certificates.
type IssuerStatusAcmeOutput struct{ *pulumi.OutputState }

func (IssuerStatusAcmeOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerStatusAcme)(nil)).Elem()
}

func (o IssuerStatusAcmeOutput) ToIssuerStatusAcmeOutput() IssuerStatusAcmeOutput {
	return o
}

func (o IssuerStatusAcmeOutput) ToIssuerStatusAcmeOutputWithContext(ctx context.Context) IssuerStatusAcmeOutput {
	return o
}

func (o IssuerStatusAcmeOutput) ToIssuerStatusAcmePtrOutput() IssuerStatusAcmePtrOutput {
	return o.ToIssuerStatusAcmePtrOutputWithContext(context.Background())
}

func (o IssuerStatusAcmeOutput) ToIssuerStatusAcmePtrOutputWithContext(ctx context.Context) IssuerStatusAcmePtrOutput {
	return o.ApplyTWithContext(ctx, func(_ context.Context, v IssuerStatusAcme) *IssuerStatusAcme {
		return &v
	}).(IssuerStatusAcmePtrOutput)
}

func (o IssuerStatusAcmeOutput) ToOutput(ctx context.Context) pulumix.Output[IssuerStatusAcme] {
	return pulumix.Output[IssuerStatusAcme]{
		OutputState: o.OutputState,
	}
}

// LastRegisteredEmail is the email associated with the latest registered ACME account, in order to track changes made to registered account associated with the  Issuer
func (o IssuerStatusAcmeOutput) LastRegisteredEmail() pulumi.StringPtrOutput {
	return o.ApplyT(func(v IssuerStatusAcme) *string { return v.LastRegisteredEmail }).(pulumi.StringPtrOutput)
}

// URI is the unique account identifier, which can also be used to retrieve account details from the CA
func (o IssuerStatusAcmeOutput) Uri() pulumi.StringPtrOutput {
	return o.ApplyT(func(v IssuerStatusAcme) *string { return v.Uri }).(pulumi.StringPtrOutput)
}

type IssuerStatusAcmePtrOutput struct{ *pulumi.OutputState }

func (IssuerStatusAcmePtrOutput) ElementType() reflect.Type {
	return reflect.TypeOf((**IssuerStatusAcme)(nil)).Elem()
}

func (o IssuerStatusAcmePtrOutput) ToIssuerStatusAcmePtrOutput() IssuerStatusAcmePtrOutput {
	return o
}

func (o IssuerStatusAcmePtrOutput) ToIssuerStatusAcmePtrOutputWithContext(ctx context.Context) IssuerStatusAcmePtrOutput {
	return o
}

func (o IssuerStatusAcmePtrOutput) ToOutput(ctx context.Context) pulumix.Output[*IssuerStatusAcme] {
	return pulumix.Output[*IssuerStatusAcme]{
		OutputState: o.OutputState,
	}
}

func (o IssuerStatusAcmePtrOutput) Elem() IssuerStatusAcmeOutput {
	return o.ApplyT(func(v *IssuerStatusAcme) IssuerStatusAcme {
		if v != nil {
			return *v
		}
		var ret IssuerStatusAcme
		return ret
	}).(IssuerStatusAcmeOutput)
}

// LastRegisteredEmail is the email associated with the latest registered ACME account, in order to track changes made to registered account associated with the  Issuer
func (o IssuerStatusAcmePtrOutput) LastRegisteredEmail() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *IssuerStatusAcme) *string {
		if v == nil {
			return nil
		}
		return v.LastRegisteredEmail
	}).(pulumi.StringPtrOutput)
}

// URI is the unique account identifier, which can also be used to retrieve account details from the CA
func (o IssuerStatusAcmePtrOutput) Uri() pulumi.StringPtrOutput {
	return o.ApplyT(func(v *IssuerStatusAcme) *string {
		if v == nil {
			return nil
		}
		return v.Uri
	}).(pulumi.StringPtrOutput)
}

// IssuerCondition contains condition information for an Issuer.
type IssuerStatusConditions struct {
	// LastTransitionTime is the timestamp corresponding to the last status change of this condition.
	LastTransitionTime *string `pulumi:"lastTransitionTime"`
	// Message is a human readable description of the details of the last transition, complementing reason.
	Message *string `pulumi:"message"`
	// If set, this represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.condition[x].observedGeneration is 9, the condition is out of date with respect to the current state of the Issuer.
	ObservedGeneration *int `pulumi:"observedGeneration"`
	// Reason is a brief machine readable explanation for the condition's last transition.
	Reason *string `pulumi:"reason"`
	// Status of the condition, one of (`True`, `False`, `Unknown`).
	Status string `pulumi:"status"`
	// Type of the condition, known values are (`Ready`).
	Type string `pulumi:"type"`
}

// IssuerStatusConditionsInput is an input type that accepts IssuerStatusConditionsArgs and IssuerStatusConditionsOutput values.
// You can construct a concrete instance of `IssuerStatusConditionsInput` via:
//
//	IssuerStatusConditionsArgs{...}
type IssuerStatusConditionsInput interface {
	pulumi.Input

	ToIssuerStatusConditionsOutput() IssuerStatusConditionsOutput
	ToIssuerStatusConditionsOutputWithContext(context.Context) IssuerStatusConditionsOutput
}

// IssuerCondition contains condition information for an Issuer.
type IssuerStatusConditionsArgs struct {
	// LastTransitionTime is the timestamp corresponding to the last status change of this condition.
	LastTransitionTime pulumi.StringPtrInput `pulumi:"lastTransitionTime"`
	// Message is a human readable description of the details of the last transition, complementing reason.
	Message pulumi.StringPtrInput `pulumi:"message"`
	// If set, this represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.condition[x].observedGeneration is 9, the condition is out of date with respect to the current state of the Issuer.
	ObservedGeneration pulumi.IntPtrInput `pulumi:"observedGeneration"`
	// Reason is a brief machine readable explanation for the condition's last transition.
	Reason pulumi.StringPtrInput `pulumi:"reason"`
	// Status of the condition, one of (`True`, `False`, `Unknown`).
	Status pulumi.StringInput `pulumi:"status"`
	// Type of the condition, known values are (`Ready`).
	Type pulumi.StringInput `pulumi:"type"`
}

func (IssuerStatusConditionsArgs) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerStatusConditions)(nil)).Elem()
}

func (i IssuerStatusConditionsArgs) ToIssuerStatusConditionsOutput() IssuerStatusConditionsOutput {
	return i.ToIssuerStatusConditionsOutputWithContext(context.Background())
}

func (i IssuerStatusConditionsArgs) ToIssuerStatusConditionsOutputWithContext(ctx context.Context) IssuerStatusConditionsOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerStatusConditionsOutput)
}

func (i IssuerStatusConditionsArgs) ToOutput(ctx context.Context) pulumix.Output[IssuerStatusConditions] {
	return pulumix.Output[IssuerStatusConditions]{
		OutputState: i.ToIssuerStatusConditionsOutputWithContext(ctx).OutputState,
	}
}

// IssuerStatusConditionsArrayInput is an input type that accepts IssuerStatusConditionsArray and IssuerStatusConditionsArrayOutput values.
// You can construct a concrete instance of `IssuerStatusConditionsArrayInput` via:
//
//	IssuerStatusConditionsArray{ IssuerStatusConditionsArgs{...} }
type IssuerStatusConditionsArrayInput interface {
	pulumi.Input

	ToIssuerStatusConditionsArrayOutput() IssuerStatusConditionsArrayOutput
	ToIssuerStatusConditionsArrayOutputWithContext(context.Context) IssuerStatusConditionsArrayOutput
}

type IssuerStatusConditionsArray []IssuerStatusConditionsInput

func (IssuerStatusConditionsArray) ElementType() reflect.Type {
	return reflect.TypeOf((*[]IssuerStatusConditions)(nil)).Elem()
}

func (i IssuerStatusConditionsArray) ToIssuerStatusConditionsArrayOutput() IssuerStatusConditionsArrayOutput {
	return i.ToIssuerStatusConditionsArrayOutputWithContext(context.Background())
}

func (i IssuerStatusConditionsArray) ToIssuerStatusConditionsArrayOutputWithContext(ctx context.Context) IssuerStatusConditionsArrayOutput {
	return pulumi.ToOutputWithContext(ctx, i).(IssuerStatusConditionsArrayOutput)
}

func (i IssuerStatusConditionsArray) ToOutput(ctx context.Context) pulumix.Output[[]IssuerStatusConditions] {
	return pulumix.Output[[]IssuerStatusConditions]{
		OutputState: i.ToIssuerStatusConditionsArrayOutputWithContext(ctx).OutputState,
	}
}

// IssuerCondition contains condition information for an Issuer.
type IssuerStatusConditionsOutput struct{ *pulumi.OutputState }

func (IssuerStatusConditionsOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*IssuerStatusConditions)(nil)).Elem()
}

func (o IssuerStatusConditionsOutput) ToIssuerStatusConditionsOutput() IssuerStatusConditionsOutput {
	return o
}

func (o IssuerStatusConditionsOutput) ToIssuerStatusConditionsOutputWithContext(ctx context.Context) IssuerStatusConditionsOutput {
	return o
}

func (o IssuerStatusConditionsOutput) ToOutput(ctx context.Context) pulumix.Output[IssuerStatusConditions] {
	return pulumix.Output[IssuerStatusConditions]{
		OutputState: o.OutputState,
	}
}

// LastTransitionTime is the timestamp corresponding to the last status change of this condition.
func (o IssuerStatusConditionsOutput) LastTransitionTime() pulumi.StringPtrOutput {
	return o.ApplyT(func(v IssuerStatusConditions) *string { return v.LastTransitionTime }).(pulumi.StringPtrOutput)
}

// Message is a human readable description of the details of the last transition, complementing reason.
func (o IssuerStatusConditionsOutput) Message() pulumi.StringPtrOutput {
	return o.ApplyT(func(v IssuerStatusConditions) *string { return v.Message }).(pulumi.StringPtrOutput)
}

// If set, this represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.condition[x].observedGeneration is 9, the condition is out of date with respect to the current state of the Issuer.
func (o IssuerStatusConditionsOutput) ObservedGeneration() pulumi.IntPtrOutput {
	return o.ApplyT(func(v IssuerStatusConditions) *int { return v.ObservedGeneration }).(pulumi.IntPtrOutput)
}

// Reason is a brief machine readable explanation for the condition's last transition.
func (o IssuerStatusConditionsOutput) Reason() pulumi.StringPtrOutput {
	return o.ApplyT(func(v IssuerStatusConditions) *string { return v.Reason }).(pulumi.StringPtrOutput)
}

// Status of the condition, one of (`True`, `False`, `Unknown`).
func (o IssuerStatusConditionsOutput) Status() pulumi.StringOutput {
	return o.ApplyT(func(v IssuerStatusConditions) string { return v.Status }).(pulumi.StringOutput)
}

// Type of the condition, known values are (`Ready`).
func (o IssuerStatusConditionsOutput) Type() pulumi.StringOutput {
	return o.ApplyT(func(v IssuerStatusConditions) string { return v.Type }).(pulumi.StringOutput)
}

type IssuerStatusConditionsArrayOutput struct{ *pulumi.OutputState }

func (IssuerStatusConditionsArrayOutput) ElementType() reflect.Type {
	return reflect.TypeOf((*[]IssuerStatusConditions)(nil)).Elem()
}

func (o IssuerStatusConditionsArrayOutput) ToIssuerStatusConditionsArrayOutput() IssuerStatusConditionsArrayOutput {
	return o
}

func (o IssuerStatusConditionsArrayOutput) ToIssuerStatusConditionsArrayOutputWithContext(ctx context.Context) IssuerStatusConditionsArrayOutput {
	return o
}

func (o IssuerStatusConditionsArrayOutput) ToOutput(ctx context.Context) pulumix.Output[[]IssuerStatusConditions] {
	return pulumix.Output[[]IssuerStatusConditions]{
		OutputState: o.OutputState,
	}
}

func (o IssuerStatusConditionsArrayOutput) Index(i pulumi.IntInput) IssuerStatusConditionsOutput {
	return pulumi.All(o, i).ApplyT(func(vs []interface{}) IssuerStatusConditions {
		return vs[0].([]IssuerStatusConditions)[vs[1].(int)]
	}).(IssuerStatusConditionsOutput)
}

func init() {
	pulumi.RegisterInputType(reflect.TypeOf((*CertificateRequestSpecInput)(nil)).Elem(), CertificateRequestSpecArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*CertificateRequestSpecPtrInput)(nil)).Elem(), CertificateRequestSpecArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*CertificateRequestSpecIssuerRefInput)(nil)).Elem(), CertificateRequestSpecIssuerRefArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*CertificateRequestSpecIssuerRefPtrInput)(nil)).Elem(), CertificateRequestSpecIssuerRefArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*CertificateRequestStatusInput)(nil)).Elem(), CertificateRequestStatusArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*CertificateRequestStatusPtrInput)(nil)).Elem(), CertificateRequestStatusArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*CertificateRequestStatusConditionsInput)(nil)).Elem(), CertificateRequestStatusConditionsArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*CertificateRequestStatusConditionsArrayInput)(nil)).Elem(), CertificateRequestStatusConditionsArray{})
	pulumi.RegisterInputType(reflect.TypeOf((*CertificateSpecInput)(nil)).Elem(), CertificateSpecArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*CertificateSpecPtrInput)(nil)).Elem(), CertificateSpecArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*CertificateSpecIssuerRefInput)(nil)).Elem(), CertificateSpecIssuerRefArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*CertificateSpecIssuerRefPtrInput)(nil)).Elem(), CertificateSpecIssuerRefArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*CertificateSpecKeystoresInput)(nil)).Elem(), CertificateSpecKeystoresArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*CertificateSpecKeystoresPtrInput)(nil)).Elem(), CertificateSpecKeystoresArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*CertificateSpecKeystoresJksInput)(nil)).Elem(), CertificateSpecKeystoresJksArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*CertificateSpecKeystoresJksPtrInput)(nil)).Elem(), CertificateSpecKeystoresJksArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*CertificateSpecKeystoresJksPasswordSecretRefInput)(nil)).Elem(), CertificateSpecKeystoresJksPasswordSecretRefArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*CertificateSpecKeystoresJksPasswordSecretRefPtrInput)(nil)).Elem(), CertificateSpecKeystoresJksPasswordSecretRefArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*CertificateSpecKeystoresPkcs12Input)(nil)).Elem(), CertificateSpecKeystoresPkcs12Args{})
	pulumi.RegisterInputType(reflect.TypeOf((*CertificateSpecKeystoresPkcs12PtrInput)(nil)).Elem(), CertificateSpecKeystoresPkcs12Args{})
	pulumi.RegisterInputType(reflect.TypeOf((*CertificateSpecKeystoresPkcs12PasswordSecretRefInput)(nil)).Elem(), CertificateSpecKeystoresPkcs12PasswordSecretRefArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*CertificateSpecKeystoresPkcs12PasswordSecretRefPtrInput)(nil)).Elem(), CertificateSpecKeystoresPkcs12PasswordSecretRefArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*CertificateSpecPrivateKeyInput)(nil)).Elem(), CertificateSpecPrivateKeyArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*CertificateSpecPrivateKeyPtrInput)(nil)).Elem(), CertificateSpecPrivateKeyArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*CertificateSpecSecretTemplateInput)(nil)).Elem(), CertificateSpecSecretTemplateArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*CertificateSpecSecretTemplatePtrInput)(nil)).Elem(), CertificateSpecSecretTemplateArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*CertificateSpecSubjectInput)(nil)).Elem(), CertificateSpecSubjectArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*CertificateSpecSubjectPtrInput)(nil)).Elem(), CertificateSpecSubjectArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*CertificateStatusInput)(nil)).Elem(), CertificateStatusArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*CertificateStatusPtrInput)(nil)).Elem(), CertificateStatusArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*CertificateStatusConditionsInput)(nil)).Elem(), CertificateStatusConditionsArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*CertificateStatusConditionsArrayInput)(nil)).Elem(), CertificateStatusConditionsArray{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecInput)(nil)).Elem(), ClusterIssuerSpecArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecPtrInput)(nil)).Elem(), ClusterIssuerSpecArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeInput)(nil)).Elem(), ClusterIssuerSpecAcmeArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmePtrInput)(nil)).Elem(), ClusterIssuerSpecAcmeArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeExternalAccountBindingInput)(nil)).Elem(), ClusterIssuerSpecAcmeExternalAccountBindingArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeExternalAccountBindingPtrInput)(nil)).Elem(), ClusterIssuerSpecAcmeExternalAccountBindingArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeExternalAccountBindingKeySecretRefInput)(nil)).Elem(), ClusterIssuerSpecAcmeExternalAccountBindingKeySecretRefArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeExternalAccountBindingKeySecretRefPtrInput)(nil)).Elem(), ClusterIssuerSpecAcmeExternalAccountBindingKeySecretRefArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmePrivateKeySecretRefInput)(nil)).Elem(), ClusterIssuerSpecAcmePrivateKeySecretRefArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmePrivateKeySecretRefPtrInput)(nil)).Elem(), ClusterIssuerSpecAcmePrivateKeySecretRefArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversArrayInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversArray{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversDns01Input)(nil)).Elem(), ClusterIssuerSpecAcmeSolversDns01Args{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversDns01PtrInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversDns01Args{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversDns01AcmeDNSInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversDns01AcmeDNSArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversDns01AcmeDNSPtrInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversDns01AcmeDNSArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefPtrInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversDns01AkamaiInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversDns01AkamaiArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversDns01AkamaiPtrInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversDns01AkamaiArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefPtrInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefPtrInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefPtrInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversDns01AzureDNSInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversDns01AzureDNSArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversDns01AzureDNSPtrInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversDns01AzureDNSArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefPtrInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityPtrInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversDns01CloudDNSInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversDns01CloudDNSArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversDns01CloudDNSPtrInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversDns01CloudDNSArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefPtrInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversDns01CloudflareInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversDns01CloudflareArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversDns01CloudflarePtrInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversDns01CloudflareArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefPtrInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefPtrInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversDns01DigitaloceanInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversDns01DigitaloceanArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversDns01DigitaloceanPtrInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversDns01DigitaloceanArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefPtrInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversDns01Rfc2136Input)(nil)).Elem(), ClusterIssuerSpecAcmeSolversDns01Rfc2136Args{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversDns01Rfc2136PtrInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversDns01Rfc2136Args{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefPtrInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversDns01Route53Input)(nil)).Elem(), ClusterIssuerSpecAcmeSolversDns01Route53Args{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversDns01Route53PtrInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversDns01Route53Args{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefPtrInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversDns01WebhookInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversDns01WebhookArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversDns01WebhookPtrInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversDns01WebhookArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01Input)(nil)).Elem(), ClusterIssuerSpecAcmeSolversHttp01Args{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01PtrInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversHttp01Args{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRouteInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRouteArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRoutePtrInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRouteArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversHttp01IngressArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPtrInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversHttp01IngressArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplatePtrInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataPtrInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplatePtrInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataPtrInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtrInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPtrInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPtrInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionArray{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsArrayInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsArray{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsArrayInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsArray{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionPtrInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsArrayInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsArray{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsArrayInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsArray{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsArrayInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsArray{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPtrInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionArray{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArray{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArray{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionArray{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArray{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArray{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPtrInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionArray{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArray{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArray{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionArray{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArray{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArray{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsArrayInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsArray{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversSelectorInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversSelectorArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecAcmeSolversSelectorPtrInput)(nil)).Elem(), ClusterIssuerSpecAcmeSolversSelectorArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecCaInput)(nil)).Elem(), ClusterIssuerSpecCaArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecCaPtrInput)(nil)).Elem(), ClusterIssuerSpecCaArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecSelfSignedInput)(nil)).Elem(), ClusterIssuerSpecSelfSignedArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecSelfSignedPtrInput)(nil)).Elem(), ClusterIssuerSpecSelfSignedArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecVaultInput)(nil)).Elem(), ClusterIssuerSpecVaultArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecVaultPtrInput)(nil)).Elem(), ClusterIssuerSpecVaultArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecVaultAuthInput)(nil)).Elem(), ClusterIssuerSpecVaultAuthArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecVaultAuthPtrInput)(nil)).Elem(), ClusterIssuerSpecVaultAuthArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecVaultAuthAppRoleInput)(nil)).Elem(), ClusterIssuerSpecVaultAuthAppRoleArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecVaultAuthAppRolePtrInput)(nil)).Elem(), ClusterIssuerSpecVaultAuthAppRoleArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecVaultAuthAppRoleSecretRefInput)(nil)).Elem(), ClusterIssuerSpecVaultAuthAppRoleSecretRefArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecVaultAuthAppRoleSecretRefPtrInput)(nil)).Elem(), ClusterIssuerSpecVaultAuthAppRoleSecretRefArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecVaultAuthKubernetesInput)(nil)).Elem(), ClusterIssuerSpecVaultAuthKubernetesArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecVaultAuthKubernetesPtrInput)(nil)).Elem(), ClusterIssuerSpecVaultAuthKubernetesArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecVaultAuthKubernetesSecretRefInput)(nil)).Elem(), ClusterIssuerSpecVaultAuthKubernetesSecretRefArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecVaultAuthKubernetesSecretRefPtrInput)(nil)).Elem(), ClusterIssuerSpecVaultAuthKubernetesSecretRefArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecVaultAuthTokenSecretRefInput)(nil)).Elem(), ClusterIssuerSpecVaultAuthTokenSecretRefArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecVaultAuthTokenSecretRefPtrInput)(nil)).Elem(), ClusterIssuerSpecVaultAuthTokenSecretRefArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecVenafiInput)(nil)).Elem(), ClusterIssuerSpecVenafiArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecVenafiPtrInput)(nil)).Elem(), ClusterIssuerSpecVenafiArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecVenafiCloudInput)(nil)).Elem(), ClusterIssuerSpecVenafiCloudArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecVenafiCloudPtrInput)(nil)).Elem(), ClusterIssuerSpecVenafiCloudArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecVenafiCloudApiTokenSecretRefInput)(nil)).Elem(), ClusterIssuerSpecVenafiCloudApiTokenSecretRefArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecVenafiCloudApiTokenSecretRefPtrInput)(nil)).Elem(), ClusterIssuerSpecVenafiCloudApiTokenSecretRefArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecVenafiTppInput)(nil)).Elem(), ClusterIssuerSpecVenafiTppArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecVenafiTppPtrInput)(nil)).Elem(), ClusterIssuerSpecVenafiTppArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecVenafiTppCredentialsRefInput)(nil)).Elem(), ClusterIssuerSpecVenafiTppCredentialsRefArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerSpecVenafiTppCredentialsRefPtrInput)(nil)).Elem(), ClusterIssuerSpecVenafiTppCredentialsRefArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerStatusInput)(nil)).Elem(), ClusterIssuerStatusArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerStatusPtrInput)(nil)).Elem(), ClusterIssuerStatusArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerStatusAcmeInput)(nil)).Elem(), ClusterIssuerStatusAcmeArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerStatusAcmePtrInput)(nil)).Elem(), ClusterIssuerStatusAcmeArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerStatusConditionsInput)(nil)).Elem(), ClusterIssuerStatusConditionsArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*ClusterIssuerStatusConditionsArrayInput)(nil)).Elem(), ClusterIssuerStatusConditionsArray{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecInput)(nil)).Elem(), IssuerSpecArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecPtrInput)(nil)).Elem(), IssuerSpecArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeInput)(nil)).Elem(), IssuerSpecAcmeArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmePtrInput)(nil)).Elem(), IssuerSpecAcmeArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeExternalAccountBindingInput)(nil)).Elem(), IssuerSpecAcmeExternalAccountBindingArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeExternalAccountBindingPtrInput)(nil)).Elem(), IssuerSpecAcmeExternalAccountBindingArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeExternalAccountBindingKeySecretRefInput)(nil)).Elem(), IssuerSpecAcmeExternalAccountBindingKeySecretRefArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeExternalAccountBindingKeySecretRefPtrInput)(nil)).Elem(), IssuerSpecAcmeExternalAccountBindingKeySecretRefArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmePrivateKeySecretRefInput)(nil)).Elem(), IssuerSpecAcmePrivateKeySecretRefArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmePrivateKeySecretRefPtrInput)(nil)).Elem(), IssuerSpecAcmePrivateKeySecretRefArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversInput)(nil)).Elem(), IssuerSpecAcmeSolversArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversArrayInput)(nil)).Elem(), IssuerSpecAcmeSolversArray{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversDns01Input)(nil)).Elem(), IssuerSpecAcmeSolversDns01Args{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversDns01PtrInput)(nil)).Elem(), IssuerSpecAcmeSolversDns01Args{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversDns01AcmeDNSInput)(nil)).Elem(), IssuerSpecAcmeSolversDns01AcmeDNSArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversDns01AcmeDNSPtrInput)(nil)).Elem(), IssuerSpecAcmeSolversDns01AcmeDNSArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefInput)(nil)).Elem(), IssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefPtrInput)(nil)).Elem(), IssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversDns01AkamaiInput)(nil)).Elem(), IssuerSpecAcmeSolversDns01AkamaiArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversDns01AkamaiPtrInput)(nil)).Elem(), IssuerSpecAcmeSolversDns01AkamaiArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefInput)(nil)).Elem(), IssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefPtrInput)(nil)).Elem(), IssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefInput)(nil)).Elem(), IssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefPtrInput)(nil)).Elem(), IssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefInput)(nil)).Elem(), IssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefPtrInput)(nil)).Elem(), IssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversDns01AzureDNSInput)(nil)).Elem(), IssuerSpecAcmeSolversDns01AzureDNSArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversDns01AzureDNSPtrInput)(nil)).Elem(), IssuerSpecAcmeSolversDns01AzureDNSArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefInput)(nil)).Elem(), IssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefPtrInput)(nil)).Elem(), IssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversDns01AzureDNSManagedIdentityInput)(nil)).Elem(), IssuerSpecAcmeSolversDns01AzureDNSManagedIdentityArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversDns01AzureDNSManagedIdentityPtrInput)(nil)).Elem(), IssuerSpecAcmeSolversDns01AzureDNSManagedIdentityArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversDns01CloudDNSInput)(nil)).Elem(), IssuerSpecAcmeSolversDns01CloudDNSArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversDns01CloudDNSPtrInput)(nil)).Elem(), IssuerSpecAcmeSolversDns01CloudDNSArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefInput)(nil)).Elem(), IssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefPtrInput)(nil)).Elem(), IssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversDns01CloudflareInput)(nil)).Elem(), IssuerSpecAcmeSolversDns01CloudflareArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversDns01CloudflarePtrInput)(nil)).Elem(), IssuerSpecAcmeSolversDns01CloudflareArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefInput)(nil)).Elem(), IssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefPtrInput)(nil)).Elem(), IssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefInput)(nil)).Elem(), IssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefPtrInput)(nil)).Elem(), IssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversDns01DigitaloceanInput)(nil)).Elem(), IssuerSpecAcmeSolversDns01DigitaloceanArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversDns01DigitaloceanPtrInput)(nil)).Elem(), IssuerSpecAcmeSolversDns01DigitaloceanArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefInput)(nil)).Elem(), IssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefPtrInput)(nil)).Elem(), IssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversDns01Rfc2136Input)(nil)).Elem(), IssuerSpecAcmeSolversDns01Rfc2136Args{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversDns01Rfc2136PtrInput)(nil)).Elem(), IssuerSpecAcmeSolversDns01Rfc2136Args{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefInput)(nil)).Elem(), IssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefPtrInput)(nil)).Elem(), IssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversDns01Route53Input)(nil)).Elem(), IssuerSpecAcmeSolversDns01Route53Args{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversDns01Route53PtrInput)(nil)).Elem(), IssuerSpecAcmeSolversDns01Route53Args{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefInput)(nil)).Elem(), IssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefPtrInput)(nil)).Elem(), IssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversDns01WebhookInput)(nil)).Elem(), IssuerSpecAcmeSolversDns01WebhookArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversDns01WebhookPtrInput)(nil)).Elem(), IssuerSpecAcmeSolversDns01WebhookArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversHttp01Input)(nil)).Elem(), IssuerSpecAcmeSolversHttp01Args{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversHttp01PtrInput)(nil)).Elem(), IssuerSpecAcmeSolversHttp01Args{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversHttp01GatewayHTTPRouteInput)(nil)).Elem(), IssuerSpecAcmeSolversHttp01GatewayHTTPRouteArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversHttp01GatewayHTTPRoutePtrInput)(nil)).Elem(), IssuerSpecAcmeSolversHttp01GatewayHTTPRouteArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressInput)(nil)).Elem(), IssuerSpecAcmeSolversHttp01IngressArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPtrInput)(nil)).Elem(), IssuerSpecAcmeSolversHttp01IngressArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressIngressTemplateInput)(nil)).Elem(), IssuerSpecAcmeSolversHttp01IngressIngressTemplateArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressIngressTemplatePtrInput)(nil)).Elem(), IssuerSpecAcmeSolversHttp01IngressIngressTemplateArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataInput)(nil)).Elem(), IssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataPtrInput)(nil)).Elem(), IssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateInput)(nil)).Elem(), IssuerSpecAcmeSolversHttp01IngressPodTemplateArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplatePtrInput)(nil)).Elem(), IssuerSpecAcmeSolversHttp01IngressPodTemplateArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataInput)(nil)).Elem(), IssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataPtrInput)(nil)).Elem(), IssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecInput)(nil)).Elem(), IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtrInput)(nil)).Elem(), IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityInput)(nil)).Elem(), IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPtrInput)(nil)).Elem(), IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityInput)(nil)).Elem(), IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPtrInput)(nil)).Elem(), IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionInput)(nil)).Elem(), IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayInput)(nil)).Elem(), IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionArray{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceInput)(nil)).Elem(), IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsInput)(nil)).Elem(), IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsArrayInput)(nil)).Elem(), IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsArray{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsInput)(nil)).Elem(), IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsArrayInput)(nil)).Elem(), IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsArray{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionInput)(nil)).Elem(), IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionPtrInput)(nil)).Elem(), IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsInput)(nil)).Elem(), IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsArrayInput)(nil)).Elem(), IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsArray{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsInput)(nil)).Elem(), IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsArrayInput)(nil)).Elem(), IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsArray{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsInput)(nil)).Elem(), IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsArrayInput)(nil)).Elem(), IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsArray{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityInput)(nil)).Elem(), IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPtrInput)(nil)).Elem(), IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionInput)(nil)).Elem(), IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayInput)(nil)).Elem(), IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionArray{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermInput)(nil)).Elem(), IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorInput)(nil)).Elem(), IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrInput)(nil)).Elem(), IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsInput)(nil)).Elem(), IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayInput)(nil)).Elem(), IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArray{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorInput)(nil)).Elem(), IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrInput)(nil)).Elem(), IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsInput)(nil)).Elem(), IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayInput)(nil)).Elem(), IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArray{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionInput)(nil)).Elem(), IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayInput)(nil)).Elem(), IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionArray{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorInput)(nil)).Elem(), IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrInput)(nil)).Elem(), IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsInput)(nil)).Elem(), IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayInput)(nil)).Elem(), IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArray{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorInput)(nil)).Elem(), IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrInput)(nil)).Elem(), IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsInput)(nil)).Elem(), IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayInput)(nil)).Elem(), IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArray{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityInput)(nil)).Elem(), IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPtrInput)(nil)).Elem(), IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionInput)(nil)).Elem(), IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayInput)(nil)).Elem(), IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionArray{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermInput)(nil)).Elem(), IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorInput)(nil)).Elem(), IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrInput)(nil)).Elem(), IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsInput)(nil)).Elem(), IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayInput)(nil)).Elem(), IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArray{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorInput)(nil)).Elem(), IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrInput)(nil)).Elem(), IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsInput)(nil)).Elem(), IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayInput)(nil)).Elem(), IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArray{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionInput)(nil)).Elem(), IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayInput)(nil)).Elem(), IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionArray{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorInput)(nil)).Elem(), IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrInput)(nil)).Elem(), IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsInput)(nil)).Elem(), IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayInput)(nil)).Elem(), IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArray{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorInput)(nil)).Elem(), IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrInput)(nil)).Elem(), IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsInput)(nil)).Elem(), IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayInput)(nil)).Elem(), IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArray{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsInput)(nil)).Elem(), IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsArrayInput)(nil)).Elem(), IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsArray{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversSelectorInput)(nil)).Elem(), IssuerSpecAcmeSolversSelectorArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecAcmeSolversSelectorPtrInput)(nil)).Elem(), IssuerSpecAcmeSolversSelectorArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecCaInput)(nil)).Elem(), IssuerSpecCaArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecCaPtrInput)(nil)).Elem(), IssuerSpecCaArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecSelfSignedInput)(nil)).Elem(), IssuerSpecSelfSignedArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecSelfSignedPtrInput)(nil)).Elem(), IssuerSpecSelfSignedArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecVaultInput)(nil)).Elem(), IssuerSpecVaultArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecVaultPtrInput)(nil)).Elem(), IssuerSpecVaultArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecVaultAuthInput)(nil)).Elem(), IssuerSpecVaultAuthArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecVaultAuthPtrInput)(nil)).Elem(), IssuerSpecVaultAuthArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecVaultAuthAppRoleInput)(nil)).Elem(), IssuerSpecVaultAuthAppRoleArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecVaultAuthAppRolePtrInput)(nil)).Elem(), IssuerSpecVaultAuthAppRoleArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecVaultAuthAppRoleSecretRefInput)(nil)).Elem(), IssuerSpecVaultAuthAppRoleSecretRefArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecVaultAuthAppRoleSecretRefPtrInput)(nil)).Elem(), IssuerSpecVaultAuthAppRoleSecretRefArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecVaultAuthKubernetesInput)(nil)).Elem(), IssuerSpecVaultAuthKubernetesArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecVaultAuthKubernetesPtrInput)(nil)).Elem(), IssuerSpecVaultAuthKubernetesArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecVaultAuthKubernetesSecretRefInput)(nil)).Elem(), IssuerSpecVaultAuthKubernetesSecretRefArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecVaultAuthKubernetesSecretRefPtrInput)(nil)).Elem(), IssuerSpecVaultAuthKubernetesSecretRefArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecVaultAuthTokenSecretRefInput)(nil)).Elem(), IssuerSpecVaultAuthTokenSecretRefArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecVaultAuthTokenSecretRefPtrInput)(nil)).Elem(), IssuerSpecVaultAuthTokenSecretRefArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecVenafiInput)(nil)).Elem(), IssuerSpecVenafiArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecVenafiPtrInput)(nil)).Elem(), IssuerSpecVenafiArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecVenafiCloudInput)(nil)).Elem(), IssuerSpecVenafiCloudArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecVenafiCloudPtrInput)(nil)).Elem(), IssuerSpecVenafiCloudArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecVenafiCloudApiTokenSecretRefInput)(nil)).Elem(), IssuerSpecVenafiCloudApiTokenSecretRefArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecVenafiCloudApiTokenSecretRefPtrInput)(nil)).Elem(), IssuerSpecVenafiCloudApiTokenSecretRefArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecVenafiTppInput)(nil)).Elem(), IssuerSpecVenafiTppArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecVenafiTppPtrInput)(nil)).Elem(), IssuerSpecVenafiTppArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecVenafiTppCredentialsRefInput)(nil)).Elem(), IssuerSpecVenafiTppCredentialsRefArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerSpecVenafiTppCredentialsRefPtrInput)(nil)).Elem(), IssuerSpecVenafiTppCredentialsRefArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerStatusInput)(nil)).Elem(), IssuerStatusArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerStatusPtrInput)(nil)).Elem(), IssuerStatusArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerStatusAcmeInput)(nil)).Elem(), IssuerStatusAcmeArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerStatusAcmePtrInput)(nil)).Elem(), IssuerStatusAcmeArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerStatusConditionsInput)(nil)).Elem(), IssuerStatusConditionsArgs{})
	pulumi.RegisterInputType(reflect.TypeOf((*IssuerStatusConditionsArrayInput)(nil)).Elem(), IssuerStatusConditionsArray{})
	pulumi.RegisterOutputType(CertificateRequestSpecOutput{})
	pulumi.RegisterOutputType(CertificateRequestSpecPtrOutput{})
	pulumi.RegisterOutputType(CertificateRequestSpecIssuerRefOutput{})
	pulumi.RegisterOutputType(CertificateRequestSpecIssuerRefPtrOutput{})
	pulumi.RegisterOutputType(CertificateRequestStatusOutput{})
	pulumi.RegisterOutputType(CertificateRequestStatusPtrOutput{})
	pulumi.RegisterOutputType(CertificateRequestStatusConditionsOutput{})
	pulumi.RegisterOutputType(CertificateRequestStatusConditionsArrayOutput{})
	pulumi.RegisterOutputType(CertificateSpecOutput{})
	pulumi.RegisterOutputType(CertificateSpecPtrOutput{})
	pulumi.RegisterOutputType(CertificateSpecIssuerRefOutput{})
	pulumi.RegisterOutputType(CertificateSpecIssuerRefPtrOutput{})
	pulumi.RegisterOutputType(CertificateSpecKeystoresOutput{})
	pulumi.RegisterOutputType(CertificateSpecKeystoresPtrOutput{})
	pulumi.RegisterOutputType(CertificateSpecKeystoresJksOutput{})
	pulumi.RegisterOutputType(CertificateSpecKeystoresJksPtrOutput{})
	pulumi.RegisterOutputType(CertificateSpecKeystoresJksPasswordSecretRefOutput{})
	pulumi.RegisterOutputType(CertificateSpecKeystoresJksPasswordSecretRefPtrOutput{})
	pulumi.RegisterOutputType(CertificateSpecKeystoresPkcs12Output{})
	pulumi.RegisterOutputType(CertificateSpecKeystoresPkcs12PtrOutput{})
	pulumi.RegisterOutputType(CertificateSpecKeystoresPkcs12PasswordSecretRefOutput{})
	pulumi.RegisterOutputType(CertificateSpecKeystoresPkcs12PasswordSecretRefPtrOutput{})
	pulumi.RegisterOutputType(CertificateSpecPrivateKeyOutput{})
	pulumi.RegisterOutputType(CertificateSpecPrivateKeyPtrOutput{})
	pulumi.RegisterOutputType(CertificateSpecSecretTemplateOutput{})
	pulumi.RegisterOutputType(CertificateSpecSecretTemplatePtrOutput{})
	pulumi.RegisterOutputType(CertificateSpecSubjectOutput{})
	pulumi.RegisterOutputType(CertificateSpecSubjectPtrOutput{})
	pulumi.RegisterOutputType(CertificateStatusOutput{})
	pulumi.RegisterOutputType(CertificateStatusPtrOutput{})
	pulumi.RegisterOutputType(CertificateStatusConditionsOutput{})
	pulumi.RegisterOutputType(CertificateStatusConditionsArrayOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecPtrOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmePtrOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeExternalAccountBindingOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeExternalAccountBindingPtrOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeExternalAccountBindingKeySecretRefOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeExternalAccountBindingKeySecretRefPtrOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmePrivateKeySecretRefOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmePrivateKeySecretRefPtrOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversArrayOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversDns01Output{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversDns01PtrOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversDns01AcmeDNSOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversDns01AcmeDNSPtrOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefPtrOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversDns01AkamaiOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversDns01AkamaiPtrOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefPtrOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefPtrOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefPtrOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversDns01AzureDNSOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversDns01AzureDNSPtrOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefPtrOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversDns01AzureDNSManagedIdentityPtrOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversDns01CloudDNSOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversDns01CloudDNSPtrOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefPtrOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversDns01CloudflareOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversDns01CloudflarePtrOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefPtrOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefPtrOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversDns01DigitaloceanOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversDns01DigitaloceanPtrOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefPtrOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversDns01Rfc2136Output{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversDns01Rfc2136PtrOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefPtrOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversDns01Route53Output{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversDns01Route53PtrOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefPtrOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversDns01WebhookOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversDns01WebhookPtrOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversHttp01Output{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversHttp01PtrOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRouteOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversHttp01GatewayHTTPRoutePtrOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversHttp01IngressOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversHttp01IngressPtrOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplatePtrOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataPtrOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplatePtrOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataPtrOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtrOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPtrOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPtrOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsArrayOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsArrayOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionPtrOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsArrayOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsArrayOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsArrayOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPtrOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPtrOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsArrayOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversSelectorOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecAcmeSolversSelectorPtrOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecCaOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecCaPtrOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecSelfSignedOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecSelfSignedPtrOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecVaultOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecVaultPtrOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecVaultAuthOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecVaultAuthPtrOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecVaultAuthAppRoleOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecVaultAuthAppRolePtrOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecVaultAuthAppRoleSecretRefOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecVaultAuthAppRoleSecretRefPtrOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecVaultAuthKubernetesOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecVaultAuthKubernetesPtrOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecVaultAuthKubernetesSecretRefOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecVaultAuthKubernetesSecretRefPtrOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecVaultAuthTokenSecretRefOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecVaultAuthTokenSecretRefPtrOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecVenafiOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecVenafiPtrOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecVenafiCloudOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecVenafiCloudPtrOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecVenafiCloudApiTokenSecretRefOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecVenafiCloudApiTokenSecretRefPtrOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecVenafiTppOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecVenafiTppPtrOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecVenafiTppCredentialsRefOutput{})
	pulumi.RegisterOutputType(ClusterIssuerSpecVenafiTppCredentialsRefPtrOutput{})
	pulumi.RegisterOutputType(ClusterIssuerStatusOutput{})
	pulumi.RegisterOutputType(ClusterIssuerStatusPtrOutput{})
	pulumi.RegisterOutputType(ClusterIssuerStatusAcmeOutput{})
	pulumi.RegisterOutputType(ClusterIssuerStatusAcmePtrOutput{})
	pulumi.RegisterOutputType(ClusterIssuerStatusConditionsOutput{})
	pulumi.RegisterOutputType(ClusterIssuerStatusConditionsArrayOutput{})
	pulumi.RegisterOutputType(IssuerSpecOutput{})
	pulumi.RegisterOutputType(IssuerSpecPtrOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmePtrOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeExternalAccountBindingOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeExternalAccountBindingPtrOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeExternalAccountBindingKeySecretRefOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeExternalAccountBindingKeySecretRefPtrOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmePrivateKeySecretRefOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmePrivateKeySecretRefPtrOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversArrayOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversDns01Output{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversDns01PtrOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversDns01AcmeDNSOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversDns01AcmeDNSPtrOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversDns01AcmeDNSAccountSecretRefPtrOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversDns01AkamaiOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversDns01AkamaiPtrOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversDns01AkamaiAccessTokenSecretRefPtrOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversDns01AkamaiClientSecretSecretRefPtrOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversDns01AkamaiClientTokenSecretRefPtrOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversDns01AzureDNSOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversDns01AzureDNSPtrOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversDns01AzureDNSClientSecretSecretRefPtrOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversDns01AzureDNSManagedIdentityOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversDns01AzureDNSManagedIdentityPtrOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversDns01CloudDNSOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversDns01CloudDNSPtrOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversDns01CloudDNSServiceAccountSecretRefPtrOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversDns01CloudflareOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversDns01CloudflarePtrOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversDns01CloudflareApiKeySecretRefPtrOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversDns01CloudflareApiTokenSecretRefPtrOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversDns01DigitaloceanOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversDns01DigitaloceanPtrOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversDns01DigitaloceanTokenSecretRefPtrOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversDns01Rfc2136Output{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversDns01Rfc2136PtrOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversDns01Rfc2136TsigSecretSecretRefPtrOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversDns01Route53Output{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversDns01Route53PtrOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversDns01Route53SecretAccessKeySecretRefPtrOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversDns01WebhookOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversDns01WebhookPtrOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversHttp01Output{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversHttp01PtrOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversHttp01GatewayHTTPRouteOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversHttp01GatewayHTTPRoutePtrOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversHttp01IngressOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversHttp01IngressPtrOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversHttp01IngressIngressTemplateOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversHttp01IngressIngressTemplatePtrOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversHttp01IngressIngressTemplateMetadataPtrOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversHttp01IngressPodTemplateOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversHttp01IngressPodTemplatePtrOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversHttp01IngressPodTemplateMetadataPtrOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecPtrOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPtrOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPtrOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressionsArrayOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFieldsArrayOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionPtrOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsArrayOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressionsArrayOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFieldsArrayOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPtrOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPtrOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionArrayOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorPtrOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressionsArrayOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorPtrOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressionsArrayOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionArrayOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorPtrOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressionsArrayOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorPtrOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressionsArrayOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversHttp01IngressPodTemplateSpecTolerationsArrayOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversSelectorOutput{})
	pulumi.RegisterOutputType(IssuerSpecAcmeSolversSelectorPtrOutput{})
	pulumi.RegisterOutputType(IssuerSpecCaOutput{})
	pulumi.RegisterOutputType(IssuerSpecCaPtrOutput{})
	pulumi.RegisterOutputType(IssuerSpecSelfSignedOutput{})
	pulumi.RegisterOutputType(IssuerSpecSelfSignedPtrOutput{})
	pulumi.RegisterOutputType(IssuerSpecVaultOutput{})
	pulumi.RegisterOutputType(IssuerSpecVaultPtrOutput{})
	pulumi.RegisterOutputType(IssuerSpecVaultAuthOutput{})
	pulumi.RegisterOutputType(IssuerSpecVaultAuthPtrOutput{})
	pulumi.RegisterOutputType(IssuerSpecVaultAuthAppRoleOutput{})
	pulumi.RegisterOutputType(IssuerSpecVaultAuthAppRolePtrOutput{})
	pulumi.RegisterOutputType(IssuerSpecVaultAuthAppRoleSecretRefOutput{})
	pulumi.RegisterOutputType(IssuerSpecVaultAuthAppRoleSecretRefPtrOutput{})
	pulumi.RegisterOutputType(IssuerSpecVaultAuthKubernetesOutput{})
	pulumi.RegisterOutputType(IssuerSpecVaultAuthKubernetesPtrOutput{})
	pulumi.RegisterOutputType(IssuerSpecVaultAuthKubernetesSecretRefOutput{})
	pulumi.RegisterOutputType(IssuerSpecVaultAuthKubernetesSecretRefPtrOutput{})
	pulumi.RegisterOutputType(IssuerSpecVaultAuthTokenSecretRefOutput{})
	pulumi.RegisterOutputType(IssuerSpecVaultAuthTokenSecretRefPtrOutput{})
	pulumi.RegisterOutputType(IssuerSpecVenafiOutput{})
	pulumi.RegisterOutputType(IssuerSpecVenafiPtrOutput{})
	pulumi.RegisterOutputType(IssuerSpecVenafiCloudOutput{})
	pulumi.RegisterOutputType(IssuerSpecVenafiCloudPtrOutput{})
	pulumi.RegisterOutputType(IssuerSpecVenafiCloudApiTokenSecretRefOutput{})
	pulumi.RegisterOutputType(IssuerSpecVenafiCloudApiTokenSecretRefPtrOutput{})
	pulumi.RegisterOutputType(IssuerSpecVenafiTppOutput{})
	pulumi.RegisterOutputType(IssuerSpecVenafiTppPtrOutput{})
	pulumi.RegisterOutputType(IssuerSpecVenafiTppCredentialsRefOutput{})
	pulumi.RegisterOutputType(IssuerSpecVenafiTppCredentialsRefPtrOutput{})
	pulumi.RegisterOutputType(IssuerStatusOutput{})
	pulumi.RegisterOutputType(IssuerStatusPtrOutput{})
	pulumi.RegisterOutputType(IssuerStatusAcmeOutput{})
	pulumi.RegisterOutputType(IssuerStatusAcmePtrOutput{})
	pulumi.RegisterOutputType(IssuerStatusConditionsOutput{})
	pulumi.RegisterOutputType(IssuerStatusConditionsArrayOutput{})
}
