v1alpha1

package
v0.14.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 12, 2023 License: Apache-2.0 Imports: 12 Imported by: 0

Documentation

Overview

Package v1alpha1 contains API Schema definitions for the dex v1alpha1 API group +kubebuilder:object:generate=true +groupName=dex.gpu-ninja.com

Index

Constants

This section is empty.

Variables

View Source
var (
	// GroupVersion is group version used to register these objects
	GroupVersion = schema.GroupVersion{Group: "dex.gpu-ninja.com", Version: "v1alpha1"}

	// SchemeBuilder is used to add go types to the GroupVersionKind scheme
	SchemeBuilder = &scheme.Builder{GroupVersion: GroupVersion}

	// AddToScheme adds the types in this group-version to the given scheme.
	AddToScheme = SchemeBuilder.AddToScheme
)

Functions

This section is empty.

Types

type DexIdentityProvider

type DexIdentityProvider struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata,omitempty"`

	Spec   DexIdentityProviderSpec   `json:"spec,omitempty"`
	Status DexIdentityProviderStatus `json:"status,omitempty"`
}

DexIdentityProvider is a Dex identity provider instance. +kubebuilder:object:root=true +kubebuilder:subresource:status +kubebuilder:resource:shortName=idp +kubebuilder:printcolumn:name="Status",type=string,JSONPath=`.status.phase` +kubebuilder:printcolumn:name="Age",type=date,JSONPath=`.metadata.creationTimestamp`

func (*DexIdentityProvider) ChildResourceName added in v0.14.1

func (d *DexIdentityProvider) ChildResourceName(names ...string) string

func (*DexIdentityProvider) DeepCopy

func (in *DexIdentityProvider) DeepCopy() *DexIdentityProvider

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DexIdentityProvider.

func (*DexIdentityProvider) DeepCopyInto

func (in *DexIdentityProvider) DeepCopyInto(out *DexIdentityProvider)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*DexIdentityProvider) DeepCopyObject

func (in *DexIdentityProvider) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (*DexIdentityProvider) ResolveReferences

func (d *DexIdentityProvider) ResolveReferences(ctx context.Context, reader client.Reader, scheme *runtime.Scheme) (bool, error)

type DexIdentityProviderConditionType

type DexIdentityProviderConditionType string
const (
	DexIdentityProviderConditionTypePending DexIdentityProviderConditionType = "Pending"
	DexIdentityProviderConditionTypeReady   DexIdentityProviderConditionType = "Ready"
	DexIdentityProviderConditionTypeFailed  DexIdentityProviderConditionType = "Failed"
)

type DexIdentityProviderConnectorLDAPGroupSearchSpec

type DexIdentityProviderConnectorLDAPGroupSearchSpec struct {
	// BaseDN to start the search from. For example "cn=groups,dc=example,dc=com"
	BaseDN string `json:"baseDN"`
	// Filter is an optional filter to apply when searching the directory. For example "(objectClass=posixGroup)"
	Filter string `json:"filter,omitempty"`
	// Scope is the optional scope of the search (default "sub").
	// Can either be:
	// * "sub" - search the whole sub tree
	// * "one" - only search one level
	// +kubebuilder:validation:Enum=sub;one
	Scope string `json:"scope,omitempty"`
	// NameAttr is the attribute of the group that represents its name.
	NameAttr string `json:"nameAttr"`
	// UserMatchers is an array of the field pairs used to match a user to a group.
	// See the "DexIdentityProviderConnectorLDAPGroupSearchUserMatcher" struct for the
	// exact field names
	//
	// Each pair adds an additional requirement to the filter that an attribute in the group
	// match the user's attribute value. For example that the "members" attribute of
	// a group matches the "uid" of the user. The exact filter being added is:
	//
	//   (userMatchers[n].<groupAttr>=userMatchers[n].<userAttr value>)
	//
	UserMatchers []DexIdentityProviderConnectorLDAPGroupSearchUserMatcher `json:"userMatchers"`
}

DexIdentityProviderConnectorLDAPGroupSearchSpec holds configuration for searching LDAP groups.

func (*DexIdentityProviderConnectorLDAPGroupSearchSpec) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DexIdentityProviderConnectorLDAPGroupSearchSpec.

func (*DexIdentityProviderConnectorLDAPGroupSearchSpec) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type DexIdentityProviderConnectorLDAPGroupSearchUserMatcher

type DexIdentityProviderConnectorLDAPGroupSearchUserMatcher struct {
	// UserAttr is the attribute to match against the user ID.
	UserAttr string `json:"userAttr"`
	// GroupAttr is the attribute to match against the group ID.
	GroupAttr string `json:"groupAttr"`
}

DexIdentityProviderConnectorLDAPGroupSearchUserMatcher holds information about user and group matching.

func (*DexIdentityProviderConnectorLDAPGroupSearchUserMatcher) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DexIdentityProviderConnectorLDAPGroupSearchUserMatcher.

func (*DexIdentityProviderConnectorLDAPGroupSearchUserMatcher) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type DexIdentityProviderConnectorLDAPSpec

type DexIdentityProviderConnectorLDAPSpec struct {
	// Host is the host and optional port of the LDAP server.
	// If port isn't supplied, it will be guessed based on the TLS configuration.
	Host string `json:"host"`
	// InsecureNoSSL is required to connect to a server without TLS.
	InsecureNoSSL bool `json:"insecureNoSSL,omitempty"`
	// InsecureSkipVerify allows connecting to a server without
	// verifying the TLS certificate.
	InsecureSkipVerify bool `json:"insecureSkipVerify,omitempty"`
	// StartTLS allows connecting to a server that supports the StartTLS command.
	// If unsupplied secure connections will use the LDAPS protocol.
	StartTLS bool `json:"startTLS,omitempty"`
	// CASecretRef is an optional reference to a secret containing the CA certificate.
	CASecretRef *reference.LocalSecretReference `json:"caSecretRef,omitempty"`
	// ClientCertificateSecretRef is an optional reference to a secret containing the client certificate and key.
	ClientCertificateSecretRef *reference.LocalSecretReference `json:"clientCertificateSecretRef,omitempty"`
	// BindUsername is the DN of the user to bind with.
	// The connector uses these credentials to search for users and groups.
	BindUsername string `json:"bindUsername"`
	// BindPasswordSecretRef is a reference to a secret containing the bind password.
	// The connector uses these credentials to search for users and groups.
	BindPasswordSecretRef reference.LocalSecretReference `json:"bindPasswordSecretRef"`
	// UsernamePrompt allows users to override the username attribute (displayed
	// in the username/password prompt). If unset, the handler will use
	// "Username".
	UsernamePrompt string `json:"usernamePrompt,omitempty"`
	// UserSearch contains configuration for searching LDAP users.
	UserSearch DexIdentityProviderConnectorLDAPUserSearchSpec `json:"userSearch"`
	// GroupSearch contains configuration for searching LDAP groups.
	GroupSearch DexIdentityProviderConnectorLDAPGroupSearchSpec `json:"groupSearch"`
}

DexIdentityProviderConnectorLDAPSpec holds configuration for the LDAP connector.

func (*DexIdentityProviderConnectorLDAPSpec) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DexIdentityProviderConnectorLDAPSpec.

func (*DexIdentityProviderConnectorLDAPSpec) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type DexIdentityProviderConnectorLDAPUserSearchSpec

type DexIdentityProviderConnectorLDAPUserSearchSpec struct {
	// BaseDN to start the search from. For example "cn=users,dc=example,dc=com"
	BaseDN string `json:"baseDN"`
	// Filter is an optional filter to apply when searching the directory. For example "(objectClass=person)"
	Filter string `json:"filter,omitempty"`
	// Username is the attribute to match against the inputted username. This will be translated and combined
	// with the other filter as "(<attr>=<username>)".
	Username string `json:"username"`
	// Scope is the optional scope of the search (default "sub").
	// Can either be:
	// * "sub" - search the whole sub tree
	// * "one" - only search one level
	// +kubebuilder:validation:Enum=sub;one
	Scope string `json:"scope,omitempty"`
	// IDAttr is the attribute to use as the user ID (default "uid").
	IDAttr string `json:"idAttr,omitempty"`
	// EmailAttr is the attribute to use as the user email (default "mail").
	EmailAttr string `json:"emailAttr,omitempty"`
	// NameAttr is the attribute to use as the display name for the user.
	NameAttr string `json:"nameAttr,omitempty"`
	// PreferredUsernameAttr is the attribute to use as the preferred username for the user.
	PreferredUsernameAttr string `json:"preferredUsernameAttr,omitempty"`
	// EmailSuffix if set, will be appended to the idAttr to construct the email claim.
	// This should not include the @ character.
	EmailSuffix string `json:"emailSuffix,omitempty"`
}

DexIdentityProviderConnectorLDAPUserSearchSpec holds configuration for searching LDAP users.

func (*DexIdentityProviderConnectorLDAPUserSearchSpec) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DexIdentityProviderConnectorLDAPUserSearchSpec.

func (*DexIdentityProviderConnectorLDAPUserSearchSpec) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type DexIdentityProviderConnectorOIDCClaimMapping

type DexIdentityProviderConnectorOIDCClaimMapping struct {
	// PreferredUsernameKey is the key which contains the preferred username claims, defaults to "preferred_username".
	PreferredUsernameKey string `json:"preferred_username,omitempty"`
	// EmailKey is the key which contains the email claims, defaults to "email".
	EmailKey string `json:"email,omitempty"`
	// GroupsKey is the key which contains the groups claims, defaults to "groups".
	GroupsKey string `json:"groups,omitempty"`
}

DexIdentityProviderConnectorOIDCClaimMapping holds configuration for OIDC claim mapping.

func (*DexIdentityProviderConnectorOIDCClaimMapping) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DexIdentityProviderConnectorOIDCClaimMapping.

func (*DexIdentityProviderConnectorOIDCClaimMapping) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type DexIdentityProviderConnectorOIDCSpec

type DexIdentityProviderConnectorOIDCSpec struct {
	// Issuer is the URL of the OIDC issuer.
	Issuer string `json:"issuer"`
	// ClientSecretRef is a reference to a secret containing the OAuth client id and secret.
	ClientSecretRef reference.LocalSecretReference `json:"clientSecretRef"`
	// RedirectURI is the OAuth redirect URI.
	RedirectURI string `json:"redirectURI"`
	// BasicAuthUnsupported causes client_secret to be passed as POST parameters instead of basic
	// auth. This is specifically "NOT RECOMMENDED" by the OAuth2 RFC, but some
	// providers require it.
	//
	// https://tools.ietf.org/html/rfc6749#section-2.3.1
	BasicAuthUnsupported *bool `json:"basicAuthUnsupported,omitempty"`
	// Scopes is an optional list of scopes to request.
	// If omitted, defaults to "profile" and "email".
	Scopes []string `json:"scopes,omitempty"`
	// CASecretRef is an optional reference to a secret containing the CA certificate.
	// Only required if your provider uses a self-signed certificate.
	CASecretRef *reference.LocalSecretReference `json:"caSecretRef,omitempty"`
	// InsecureSkipVerify disables TLS certificate verification.
	InsecureSkipVerify bool `json:"insecureSkipVerify,omitempty"`
	// InsecureSkipEmailVerified if set will override the value of email_verified to true in the returned claims.
	InsecureSkipEmailVerified bool `json:"insecureSkipEmailVerified,omitempty"`
	// InsecureEnableGroups enables groups claims.
	InsecureEnableGroups bool `json:"insecureEnableGroups,omitempty"`
	// AcrValues (Authentication Context Class Reference Values) that specifies the Authentication Context Class Values
	// within the Authentication Request that the Authorization Server is being requested to use for
	// processing requests from this Client, with the values appearing in order of preference.
	AcrValues []string `json:"acrValues,omitempty"`
	// GetUserInfo uses the userinfo endpoint to get additional claims for
	// the token. This is especially useful where upstreams return "thin"
	// id tokens
	GetUserInfo bool `json:"getUserInfo,omitempty"`
	// UserIDKey is the claim key to use for the user ID (default sub).
	UserIDKey string `json:"userIDKey,omitempty"`
	// UserNameKey is the claim key to use for the username (default name).
	UserNameKey string `json:"userNameKey,omitempty"`
	// PromptType will be used fot the prompt parameter (when offline_access, by default prompt=consent).
	PromptType string `json:"promptType,omitempty"`
	// OverrideClaimMapping will be used to override the options defined in claimMappings.
	// i.e. if there are 'email' and `preferred_email` claims available, by default Dex will always use the `email` claim independent of the ClaimMapping.EmailKey.
	// This setting allows you to override the default behavior of Dex and enforce the mappings defined in `claimMapping`.
	// Defaults to false.
	OverrideClaimMapping bool `json:"overrideClaimMapping,omitempty"`
	// ClaimMapping is used to map non-standard claims to standard claims.
	// Some providers return non-standard claims (eg. mail).
	// https://openid.net/specs/openid-connect-core-1_0.html#Claims
	ClaimMapping *DexIdentityProviderConnectorOIDCClaimMapping `json:"claimMapping,omitempty"`
}

DexIdentityProviderConnectorOIDCSpec holds configuration for the OIDC connector.

func (*DexIdentityProviderConnectorOIDCSpec) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DexIdentityProviderConnectorOIDCSpec.

func (*DexIdentityProviderConnectorOIDCSpec) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type DexIdentityProviderConnectorSpec

type DexIdentityProviderConnectorSpec struct {
	// Type is the connector type to use.
	// +kubebuilder:validation:Enum=ldap;oidc
	Type DexIdentityProviderConnectorType `json:"type"`
	// Name is the connector name.
	Name string `json:"name"`
	// ID is the connector ID.
	ID string `json:"id"`
	// LDAP holds configuration for the LDAP connector.
	LDAP *DexIdentityProviderConnectorLDAPSpec `json:"ldap,omitempty"`
	// OIDC holds configuration for the OIDC connector.
	OIDC *DexIdentityProviderConnectorOIDCSpec `json:"oidc,omitempty"`
}

DexIdentityProviderConnectorSpec holds configuration for a connector.

func (*DexIdentityProviderConnectorSpec) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DexIdentityProviderConnectorSpec.

func (*DexIdentityProviderConnectorSpec) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type DexIdentityProviderConnectorType

type DexIdentityProviderConnectorType string

DexIdentityProviderConnectorType defines the connector type to use. We only support a subset of the available Dex connectors atm.

const (
	DexIdentityProviderConnectorTypeLDAP DexIdentityProviderConnectorType = "ldap"
	DexIdentityProviderConnectorTypeOIDC DexIdentityProviderConnectorType = "oidc"
)

type DexIdentityProviderExpirySpec

type DexIdentityProviderExpirySpec struct {
	// SigningKeys defines the duration of time after which the SigningKeys will be rotated.
	SigningKeys *metav1.Duration `json:"signingKeys,omitempty"`
	// IDTokens defines the duration of time for which the IdTokens will be valid.
	IDTokens *metav1.Duration `json:"idTokens,omitempty"`
	// AuthRequests defines the duration of time for which the AuthRequests will be valid.
	AuthRequests *metav1.Duration `json:"authRequests,omitempty"`
	// DeviceRequests defines the duration of time for which the DeviceRequests will be valid.
	DeviceRequests *metav1.Duration `json:"deviceRequests,omitempty"`
	// RefreshTokens defines refresh tokens expiry policy.
	RefreshTokens *DexIdentityProviderRefreshTokenSpec `json:"refreshTokens,omitempty"`
}

DexIdentityProviderExpirySpec holds configuration for the validity of tokens, signing keys, etc.

func (*DexIdentityProviderExpirySpec) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DexIdentityProviderExpirySpec.

func (*DexIdentityProviderExpirySpec) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type DexIdentityProviderFrontendSpec

type DexIdentityProviderFrontendSpec struct {
	// Dir is a file path to static web assets.
	//
	// It is expected to contain the following directories:
	//   * static - Static static served at "( issuer URL )/static".
	//   * templates - HTML templates controlled by dex.
	//   * themes/(theme) - Static static served at "( issuer URL )/theme".
	Dir string `json:"dir,omitempty"`
	// LogoURL is the URL of the logo to use in the HTML templates.
	// Defaults to "( issuer URL )/theme/logo.png"
	LogoURL string `json:"logoURL,omitempty"`
	// Issuer is the name of the issuer, used in the HTML templates.
	// Defaults to "dex".
	Issuer string `json:"issuer,omitempty"`
	// Theme is the name of the theme to use.
	// Defaults to "light".
	Theme string `json:"theme,omitempty"`
}

DexIdentityProviderFrontendSpec holds the server's frontend templates and asset configuration.

func (*DexIdentityProviderFrontendSpec) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DexIdentityProviderFrontendSpec.

func (*DexIdentityProviderFrontendSpec) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type DexIdentityProviderGRPCSpec

type DexIdentityProviderGRPCSpec struct {
	// CertificateSecretRef is an optional reference to a secret containing the TLS certificate and key
	// to use for the Dex API gRPC server.
	CertificateSecretRef *reference.LocalSecretReference `json:"certificateSecretRef,omitempty"`
	// ClientCASecretRef is an optional reference to a secret containing the client CA.
	ClientCASecretRef *reference.LocalSecretReference `json:"clientCASecretRef,omitempty"`
	// Reflection enables gRPC server reflection.
	Reflection bool `json:"reflection,omitempty"`
	// Annotations is an optional map of additional annotations to add to the Dex API gRPC service.
	Annotations map[string]string `json:"annotations,omitempty"`
}

DexIdentityProviderGRPCSpec holds configuration for the Dex API gRPC server.

func (*DexIdentityProviderGRPCSpec) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DexIdentityProviderGRPCSpec.

func (*DexIdentityProviderGRPCSpec) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type DexIdentityProviderIngressHostSpec added in v0.14.0

type DexIdentityProviderIngressHostSpec struct {
	// Host is the host to route traffic to the Dex identity provider.
	Host string `json:"host"`
	// Paths is a list of paths to route traffic to the Dex identity provider.
	Paths []DexIdentityProviderIngressPathSpec `json:"paths"`
}

DexIdentityProviderIngressHostSpec is the ingress host configuration for a Dex identity provider.

func (*DexIdentityProviderIngressHostSpec) DeepCopy added in v0.14.0

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DexIdentityProviderIngressHostSpec.

func (*DexIdentityProviderIngressHostSpec) DeepCopyInto added in v0.14.0

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type DexIdentityProviderIngressPathSpec added in v0.14.0

type DexIdentityProviderIngressPathSpec struct {
	// Path is matched against the path of an incoming request.
	Path string `json:"path"`
	// PathType determines the interpretation of the Path matching.
	// +kubebuilder:validation:Enum=Exact;Prefix;ImplementationSpecific
	PathType networkingv1.PathType `json:"pathType"`
}

DexIdentityProviderIngressPathSpec is the ingress path configuration for a Dex identity provider.

func (*DexIdentityProviderIngressPathSpec) DeepCopy added in v0.14.0

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DexIdentityProviderIngressPathSpec.

func (*DexIdentityProviderIngressPathSpec) DeepCopyInto added in v0.14.0

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type DexIdentityProviderIngressSpec added in v0.14.0

type DexIdentityProviderIngressSpec struct {
	// Enabled enables ingress for the Dex identity provider.
	Enabled bool `json:"enabled"`
	// IngressClassName is the optional ingress class to use for the Dex identity provider.
	IngressClassName *string `json:"ingressClassName,omitempty"`
	// Annotations is an optional map of additional annotations to add to the ingress.
	Annotations map[string]string `json:"annotations,omitempty"`
	// Hosts is a list of hosts and paths to route traffic to the Dex identity provider.
	Hosts []DexIdentityProviderIngressHostSpec `json:"hosts"`
	// TLS is an optional list of TLS configurations for the ingress.
	TLS []networkingv1.IngressTLS `json:"tls,omitempty"`
}

DexIdentityProviderIngressSpec is the ingress configuration for a Dex identity provider.

func (*DexIdentityProviderIngressSpec) DeepCopy added in v0.14.0

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DexIdentityProviderIngressSpec.

func (*DexIdentityProviderIngressSpec) DeepCopyInto added in v0.14.0

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type DexIdentityProviderList

type DexIdentityProviderList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata,omitempty"`
	Items           []DexIdentityProvider `json:"items"`
}

DexIdentityProviderList contains a list of DexIdentityProvider +kubebuilder:object:root=true

func (*DexIdentityProviderList) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DexIdentityProviderList.

func (*DexIdentityProviderList) DeepCopyInto

func (in *DexIdentityProviderList) DeepCopyInto(out *DexIdentityProviderList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*DexIdentityProviderList) DeepCopyObject

func (in *DexIdentityProviderList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type DexIdentityProviderLoggerSpec

type DexIdentityProviderLoggerSpec struct {
	// Level sets logging level severity.
	Level string `json:"level,omitempty"`
	// Format specifies the format to be used for logging.
	Format string `json:"format,omitempty"`
}

DexIdentityProviderLoggerSpec allows customizing logging for Dex.

func (*DexIdentityProviderLoggerSpec) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DexIdentityProviderLoggerSpec.

func (*DexIdentityProviderLoggerSpec) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type DexIdentityProviderMetricsSpec added in v0.12.0

type DexIdentityProviderMetricsSpec struct {
	// Enabled enables Prometheus metric scraping.
	Enabled bool `json:"enabled,omitempty"`
	// Interval at which metrics should be scraped
	// If not specified Prometheus' global scrape interval is used.
	Interval Duration `json:"interval,omitempty"`
}

DexIdentityProviderMetricsSpec holds configuration for metrics.

func (*DexIdentityProviderMetricsSpec) DeepCopy added in v0.12.0

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DexIdentityProviderMetricsSpec.

func (*DexIdentityProviderMetricsSpec) DeepCopyInto added in v0.12.0

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type DexIdentityProviderOAuth2Spec

type DexIdentityProviderOAuth2Spec struct {
	// GrantTypes is a list of allowed grant types, defaults to all supported types.
	GrantTypes []string `json:"grantTypes,omitempty"`
	// ResponseTypes is a list of allowed response types, defaults to all supported types.
	ResponseTypes []string `json:"responseTypes,omitempty"`
	// SkipApprovalScreen, if specified, do not prompt the user to approve client authorization. The
	// act of logging in implies authorization.
	SkipApprovalScreen bool `json:"skipApprovalScreen,omitempty"`
	// AlwaysShowLoginScreen, if specified, show the connector selection screen even if there's only one.
	AlwaysShowLoginScreen bool `json:"alwaysShowLoginScreen,omitempty"`
	// PasswordConnector is a specific connector to user for password grants.
	PasswordConnector string `json:"passwordConnector,omitempty"`
}

DexIdentityProviderOAuth2Spec holds configuration for OAuth2.

func (*DexIdentityProviderOAuth2Spec) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DexIdentityProviderOAuth2Spec.

func (*DexIdentityProviderOAuth2Spec) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type DexIdentityProviderPhase

type DexIdentityProviderPhase string

DexIdentityProviderPhase is the current state of the Dex identity provider.

const (
	DexIdentityProviderPhasePending DexIdentityProviderPhase = "Pending"
	DexIdentityProviderPhaseReady   DexIdentityProviderPhase = "Ready"
	DexIdentityProviderPhaseFailed  DexIdentityProviderPhase = "Failed"
)

type DexIdentityProviderRefreshTokenSpec

type DexIdentityProviderRefreshTokenSpec struct {
	// DisableRotation disables refresh token rotation.
	DisableRotation bool `json:"disableRotation,omitempty"`
	// ReuseInterval defines the duration of time after which a refresh token can be reused.
	ReuseInterval *metav1.Duration `json:"reuseInterval,omitempty"`
	// AbsoluteLifetime defines the duration of time after which a refresh token will expire.
	AbsoluteLifetime *metav1.Duration `json:"absoluteLifetime,omitempty"`
	// ValidIfNotUsedFor defines the duration of time after which a refresh token will expire if not used.
	ValidIfNotUsedFor *metav1.Duration `json:"validIfNotUsedFor,omitempty"`
}

RefreshTokenSpec holds configuration for refresh tokens.

func (*DexIdentityProviderRefreshTokenSpec) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DexIdentityProviderRefreshTokenSpec.

func (*DexIdentityProviderRefreshTokenSpec) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type DexIdentityProviderSpec

type DexIdentityProviderSpec struct {
	// Image is the Dex image to use.
	Image string `json:"image"`
	// Replicas is the optional number of replicas of the Dex identity provider pod to run.
	// Only supported if using postgresql storage.
	Replicas *int32 `json:"replicas,omitempty"`
	// ClientCertificateSecretRef is an optional reference to a secret containing a client
	// certificate that the operator can use for connecting to the Dex API gRPC server.
	ClientCertificateSecretRef *reference.LocalSecretReference `json:"clientCertificateSecretRef,omitempty"`
	// Issuer is the base path of Dex and the external name of the OpenID
	// Connect service. This is the canonical URL that all clients MUST use
	// to refer to Dex.
	Issuer string `json:"issuer"`
	// Storage configures the storage for Dex.
	Storage DexIdentityProviderStorageSpec `json:"storage"`
	// OAuth2 holds configuration for OAuth2.
	OAuth2 *DexIdentityProviderOAuth2Spec `json:"oauth2,omitempty"`
	// Expiry holds configuration for tokens, signing keys, etc.
	Expiry *DexIdentityProviderExpirySpec `json:"expiry,omitempty"`
	// Frontend holds the web server's frontend templates and asset configuration.
	Frontend *DexIdentityProviderFrontendSpec `json:"frontend,omitempty"`
	// Logger holds configuration required to customize logging for dex.
	Logger *DexIdentityProviderLoggerSpec `json:"logger,omitempty"`
	// Metrics holds configuration for metrics.
	Metrics *DexIdentityProviderMetricsSpec `json:"metrics,omitempty"`
	// GRPC holds configuration for the Dex API gRPC server.
	GRPC DexIdentityProviderGRPCSpec `json:"grpc"`
	// Web holds configuration for the web server.
	Web DexIdentityProviderWebSpec `json:"web"`
	// Connectors holds configuration for connectors.
	Connectors []DexIdentityProviderConnectorSpec `json:"connectors,omitempty"`
	// Ingress is the optional ingress configuration for the Dex identity provider.
	Ingress *DexIdentityProviderIngressSpec `json:"ingress,omitempty"`
	// VolumeMounts are volume mounts for the Dex identity provider container.
	VolumeMounts []corev1.VolumeMount `json:"volumeMounts,omitempty"`
	// VolumeClaimTemplates are volume claim templates for the Dex identity provider pod.
	VolumeClaimTemplates []corev1.PersistentVolumeClaim `json:"volumeClaimTemplates,omitempty"`
	// Resources allows specifying the resource requirements for the Dex identity provider container.
	Resources corev1.ResourceRequirements `json:"resources,omitempty"`
}

DexIdentityProviderSpec defines the desired state of the Dex identity provider.

func (*DexIdentityProviderSpec) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DexIdentityProviderSpec.

func (*DexIdentityProviderSpec) DeepCopyInto

func (in *DexIdentityProviderSpec) DeepCopyInto(out *DexIdentityProviderSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type DexIdentityProviderStatus

type DexIdentityProviderStatus struct {
	// Phase is the current state of the Dex identity provider.
	Phase DexIdentityProviderPhase `json:"phase,omitempty"`
	// ObservedGeneration is the most recent generation observed for this DexIdentityProvider by the controller.
	ObservedGeneration int64 `json:"observedGeneration,omitempty"`
	// Conditions represents the latest available observations of an DexIdentityProvider's current state.
	Conditions []metav1.Condition `json:"conditions,omitempty"`
	// ClientRefs is a list of clients that are using this DexIdentityProvider.
	ClientRefs []api.DexOAuth2ClientReference `json:"clientRefs,omitempty"`
}

DexIdentityProviderStatus defines the observed state of the Dex identity provider.

func (*DexIdentityProviderStatus) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DexIdentityProviderStatus.

func (*DexIdentityProviderStatus) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type DexIdentityProviderStorageNetworkDBSpec

type DexIdentityProviderStorageNetworkDBSpec struct {
	// Database is the name of the database to connect to.
	Database string `json:"database"`
	// CredentialsSecretRef is a reference to a secret containing the
	// username and password to use for authentication.
	CredentialsSecretRef reference.LocalSecretReference `json:"credentialsSecretRef"`
	// Host is the host to connect to.
	Host string `json:"host"`
	// Port is the port to connect to.
	Port int `json:"port"`
	// ConnectionTimeout is the maximum amount of time to wait for a connection to become available.
	ConnectionTimeout *metav1.Duration `json:"connectionTimeout,omitempty"`
	// MaxOpenConns is the maximum number of open connections to the database (default 5).
	MaxOpenConns *int `json:"maxOpenConns,omitempty"`
	// MaxIdleConns is the maximum number of connections in the idle connection pool (default 5).
	MaxIdleConns *int `json:"maxIdleConns,omitempty"`
	// ConnMaxLifetime is the maximum amount of time a connection may be reused (default forever).
	ConnMaxLifetime *metav1.Duration `json:"connMaxLifetime,omitempty"`
	// SSL holds optional TLS configuration for postgres.
	SSL *DexIdentityProviderStorageSSLSpec `json:"ssl,omitempty"`
}

DexIdentityProviderStorageNetworkDBSpec holds configuration for postgres and mysql storage.

func (*DexIdentityProviderStorageNetworkDBSpec) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DexIdentityProviderStorageNetworkDBSpec.

func (*DexIdentityProviderStorageNetworkDBSpec) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type DexIdentityProviderStorageSSLSpec

type DexIdentityProviderStorageSSLSpec struct {
	// Mode is the SSL mode to use.
	Mode string `json:"mode,omitempty"`
	// ServerName ensures that the certificate matches the given hostname the client is connecting to.
	ServerName string `json:"serverName,omitempty"`
	// CASecretRef is an optional reference to a secret containing the CA certificate.
	CASecretRef *reference.LocalSecretReference `json:"caSecretRef,omitempty"`
	// ClientCertificateSecretRef is an optional reference to a secret containing the client certificate and key.
	ClientCertificateSecretRef *reference.LocalSecretReference `json:"clientCertificateSecretRef,omitempty"`
}

SSL represents SSL options for etcd databases.

func (*DexIdentityProviderStorageSSLSpec) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DexIdentityProviderStorageSSLSpec.

func (*DexIdentityProviderStorageSSLSpec) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type DexIdentityProviderStorageSpec

type DexIdentityProviderStorageSpec struct {
	// Type is the storage type to use.
	// +kubebuilder:validation:Enum=memory;sqlite3;postgres
	Type DexIdentityProviderStorageType `json:"type"`
	// Sqlite3 holds the configuration for the sqlite3 storage type.
	Sqlite3 *DexIdentityProviderStorageSqlite3Spec `json:"sqlite3,omitempty"`
	// Postgres holds the configuration for the postgres storage type.
	Postgres *DexIdentityProviderStorageNetworkDBSpec `json:"postgres,omitempty"`
}

func (*DexIdentityProviderStorageSpec) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DexIdentityProviderStorageSpec.

func (*DexIdentityProviderStorageSpec) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type DexIdentityProviderStorageSqlite3Spec

type DexIdentityProviderStorageSqlite3Spec struct {
	// File is the path to the sqlite3 database file.
	File string `json:"file"`
}

DexIdentityProviderStorageSqlite3Spec holds configuration for sqlite3 storage.

func (*DexIdentityProviderStorageSqlite3Spec) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DexIdentityProviderStorageSqlite3Spec.

func (*DexIdentityProviderStorageSqlite3Spec) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type DexIdentityProviderStorageType

type DexIdentityProviderStorageType string

DexIdentityProviderStorageType defines the storage type to use. We only support a subset of the available Dex storage types atm.

const (
	DexIdentityProviderStorageTypeMemory   DexIdentityProviderStorageType = "memory"
	DexIdentityProviderStorageTypeSqlite3  DexIdentityProviderStorageType = "sqlite3"
	DexIdentityProviderStorageTypePostgres DexIdentityProviderStorageType = "postgres"
)

type DexIdentityProviderWebSpec

type DexIdentityProviderWebSpec struct {
	// CertificateSecretRef is an optional reference to a secret containing the TLS certificate and key
	// to use for HTTPS.
	CertificateSecretRef *reference.LocalSecretReference `json:"certificateSecretRef,omitempty"`
	// AllowedOrigins is a list of allowed origins for CORS requests.
	AllowedOrigins []string `json:"allowedOrigins,omitempty"`
	// Annotations is an optional map of additional annotations to add to the web service.
	Annotations map[string]string `json:"annotations,omitempty"`
}

DexIdentityProviderWebSpec holds configuration for the web server.

func (*DexIdentityProviderWebSpec) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DexIdentityProviderWebSpec.

func (*DexIdentityProviderWebSpec) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type DexOAuth2Client

type DexOAuth2Client struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata,omitempty"`

	Spec   DexOAuth2ClientSpec   `json:"spec,omitempty"`
	Status DexOAuth2ClientStatus `json:"status,omitempty"`
}

DexOAuth2Client is an OAuth2 client registered with Dex. +kubebuilder:object:root=true +kubebuilder:subresource:status +kubebuilder:resource:shortName=oac +kubebuilder:printcolumn:name="Status",type=string,JSONPath=`.status.phase` +kubebuilder:printcolumn:name="Age",type=date,JSONPath=`.metadata.creationTimestamp`

func (*DexOAuth2Client) DeepCopy

func (in *DexOAuth2Client) DeepCopy() *DexOAuth2Client

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DexOAuth2Client.

func (*DexOAuth2Client) DeepCopyInto

func (in *DexOAuth2Client) DeepCopyInto(out *DexOAuth2Client)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*DexOAuth2Client) DeepCopyObject

func (in *DexOAuth2Client) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (*DexOAuth2Client) ResolveReferences

func (c *DexOAuth2Client) ResolveReferences(ctx context.Context, reader client.Reader, scheme *runtime.Scheme) (bool, error)

type DexOAuth2ClientList

type DexOAuth2ClientList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata,omitempty"`
	Items           []DexOAuth2Client `json:"items"`
}

DexOAuth2ClientList contains a list of DexOAuth2Client +kubebuilder:object:root=true

func (*DexOAuth2ClientList) DeepCopy

func (in *DexOAuth2ClientList) DeepCopy() *DexOAuth2ClientList

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DexOAuth2ClientList.

func (*DexOAuth2ClientList) DeepCopyInto

func (in *DexOAuth2ClientList) DeepCopyInto(out *DexOAuth2ClientList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*DexOAuth2ClientList) DeepCopyObject

func (in *DexOAuth2ClientList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type DexOAuth2ClientPhase

type DexOAuth2ClientPhase string
const (
	// DexOAuth2ClientPhasePending indicates that the OAuth2 client is pending.
	DexOAuth2ClientPhasePending DexOAuth2ClientPhase = "Pending"
	// DexOAuth2ClientPhaseReady indicates that the OAuth2 client is ready.
	DexOAuth2ClientPhaseReady DexOAuth2ClientPhase = "Ready"
	// DexOAuth2ClientPhaseFailed indicates that the OAuth2 client has failed.
	DexOAuth2ClientPhaseFailed DexOAuth2ClientPhase = "Failed"
)

type DexOAuth2ClientSpec

type DexOAuth2ClientSpec struct {
	// IdentityProviderRef is a reference to the identity provider which this
	// client is associated with.
	IdentityProviderRef api.DexIdentityProviderReference `json:"identityProviderRef"`
	// SecretName is the name of the secret that will be created to store the
	// OAuth2 client id and client secret.
	SecretName string `json:"secretName"`
	// RedirectURIs is a list of allowed redirect URLs for the client.
	RedirectURIs []string `json:"redirectURIs,omitempty"`
	// TrustedPeers are a list of peers which can issue tokens on this client's
	// behalf using the dynamic "oauth2:server:client_id:(client_id)" scope.
	// If a peer makes such a request, this client's ID will appear as the ID Token's audience.
	TrustedPeers []string `json:"trustedPeers,omitempty"`
	// Public indicates that this client is a public client, such as a mobile app.
	// Public clients must use either use a redirectURL 127.0.0.1:X or "urn:ietf:wg:oauth:2.0:oob".
	Public bool `json:"public,omitempty"`
	// Name is the human-readable name of the client.
	Name string `json:"name,omitempty"`
	// LogoURL is the URL to a logo for the client.
	LogoURL string `json:"logoURL,omitempty"`
}

DexOAuth2ClientSpec defines the desired state of the OAuth2 client.

func (*DexOAuth2ClientSpec) DeepCopy

func (in *DexOAuth2ClientSpec) DeepCopy() *DexOAuth2ClientSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DexOAuth2ClientSpec.

func (*DexOAuth2ClientSpec) DeepCopyInto

func (in *DexOAuth2ClientSpec) DeepCopyInto(out *DexOAuth2ClientSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type DexOAuth2ClientStatus

type DexOAuth2ClientStatus struct {
	// Phase is the current phase of the OAuth2 client.
	Phase DexOAuth2ClientPhase `json:"phase,omitempty"`
	// ObservedGeneration is the most recent generation observed for this OAuth2 client by the controller.
	ObservedGeneration int64 `json:"observedGeneration,omitempty"`
	// Reason is a human readable message indicating details about why the OAuth2 client is in this condition.
	Reason string `json:"reason,omitempty"`
}

DexOAuth2ClientStatus defines the observed state of the OAuth2 client.

func (*DexOAuth2ClientStatus) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DexOAuth2ClientStatus.

func (*DexOAuth2ClientStatus) DeepCopyInto

func (in *DexOAuth2ClientStatus) DeepCopyInto(out *DexOAuth2ClientStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type DexUser added in v0.13.0

type DexUser struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata,omitempty"`

	Spec   DexUserSpec   `json:"spec,omitempty"`
	Status DexUserStatus `json:"status,omitempty"`
}

DexUser is a user registered with Dex. +kubebuilder:object:root=true +kubebuilder:subresource:status +kubebuilder:printcolumn:name="Status",type=string,JSONPath=`.status.phase` +kubebuilder:printcolumn:name="Age",type=date,JSONPath=`.metadata.creationTimestamp`

func (*DexUser) DeepCopy added in v0.13.0

func (in *DexUser) DeepCopy() *DexUser

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DexUser.

func (*DexUser) DeepCopyInto added in v0.13.0

func (in *DexUser) DeepCopyInto(out *DexUser)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*DexUser) DeepCopyObject added in v0.13.0

func (in *DexUser) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (*DexUser) ResolveReferences added in v0.13.0

func (u *DexUser) ResolveReferences(ctx context.Context, reader client.Reader, scheme *runtime.Scheme) (bool, error)

type DexUserList added in v0.13.0

type DexUserList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata,omitempty"`
	Items           []DexUser `json:"items"`
}

DexUserList contains a list of DexUser +kubebuilder:object:root=true

func (*DexUserList) DeepCopy added in v0.13.0

func (in *DexUserList) DeepCopy() *DexUserList

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DexUserList.

func (*DexUserList) DeepCopyInto added in v0.13.0

func (in *DexUserList) DeepCopyInto(out *DexUserList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*DexUserList) DeepCopyObject added in v0.13.0

func (in *DexUserList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type DexUserPhase added in v0.13.0

type DexUserPhase string
const (
	// DexUserPhasePending indicates that the user is pending.
	DexUserPhasePending DexUserPhase = "Pending"
	// DexUserPhaseReady indicates that the user is ready.
	DexUserPhaseReady DexUserPhase = "Ready"
	// DexUserPhaseFailed indicates that the user has failed.
	DexUserPhaseFailed DexUserPhase = "Failed"
)

type DexUserSpec added in v0.13.0

type DexUserSpec struct {
	// IdentityProviderRef is a reference to the identity provider which this
	// user is associated with.
	IdentityProviderRef api.LocalDexIdentityProviderReference `json:"identityProviderRef"`
	// SecretName is the name of the secret that will be created to store the
	// generated user password.
	SecretName string `json:"secretName"`
	// Email and identifying name of the password. Emails are assumed to be valid and
	// determining that an end-user controls the address is left to an outside application.
	Email string `json:"email"`
}

DexUserSpec defines the desired state of the user.

func (*DexUserSpec) DeepCopy added in v0.13.0

func (in *DexUserSpec) DeepCopy() *DexUserSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DexUserSpec.

func (*DexUserSpec) DeepCopyInto added in v0.13.0

func (in *DexUserSpec) DeepCopyInto(out *DexUserSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type DexUserStatus added in v0.13.0

type DexUserStatus struct {
	// Phase is the current phase of the user.
	Phase DexUserPhase `json:"phase,omitempty"`
	// ObservedGeneration is the most recent generation observed for this user by the controller.
	ObservedGeneration int64 `json:"observedGeneration,omitempty"`
	// Reason is a human readable message indicating details about why the user is in this condition.
	Reason string `json:"reason,omitempty"`
}

DexUserStatus defines the observed state of the user.

func (*DexUserStatus) DeepCopy added in v0.13.0

func (in *DexUserStatus) DeepCopy() *DexUserStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DexUserStatus.

func (*DexUserStatus) DeepCopyInto added in v0.13.0

func (in *DexUserStatus) DeepCopyInto(out *DexUserStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type Duration added in v0.12.0

type Duration string

Duration is a valid time duration that can be parsed by Prometheus model.ParseDuration() function. Supported units: y, w, d, h, m, s, ms Examples: `30s`, `1m`, `1h20m15s`, `15d` +kubebuilder:validation:Pattern:="^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$"

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL