v1alpha1

package
v0.0.1 Latest Latest
Warning

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

Go to latest
Published: Sep 25, 2025 License: Apache-2.0 Imports: 9 Imported by: 0

Documentation

Overview

+kubebuilder:object:generate=true +groupName=dns.openmcp.cloud

Index

Constants

View Source
const (
	OperationAnnotation = "dns." + openmcpconst.OperationAnnotation

	ExternalDNSFinalizerOnCluster = "platformservice." + openmcpconst.OpenMCPGroupName + "/dns"
)
View Source
const GroupName = "dns." + apiconst.OpenMCPGroupName

Variables

View Source
var (
	// GroupVersion is group version used to register these objects
	GroupVersion = schema.GroupVersion{Group: GroupName, 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 DNSServiceConfig

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

	Spec DNSServiceConfigSpec `json:"spec,omitempty"`
}

DNSServiceConfig is the Schema for the DNS PlatformService configuration API

func (*DNSServiceConfig) DeepCopy

func (in *DNSServiceConfig) DeepCopy() *DNSServiceConfig

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

func (*DNSServiceConfig) DeepCopyInto

func (in *DNSServiceConfig) DeepCopyInto(out *DNSServiceConfig)

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

func (*DNSServiceConfig) DeepCopyObject

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

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

type DNSServiceConfigList

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

DNSServiceConfigList contains a list of DNSServiceConfig

func (*DNSServiceConfigList) DeepCopy

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

func (*DNSServiceConfigList) DeepCopyInto

func (in *DNSServiceConfigList) DeepCopyInto(out *DNSServiceConfigList)

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

func (*DNSServiceConfigList) DeepCopyObject

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

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

type DNSServiceConfigSpec

type DNSServiceConfigSpec struct {
	// ExternalDNSSource is the source of the external-dns helm chart.
	ExternalDNSSource ExternalDNSSource `json:"externalDNSSource"`

	// SecretsToCopy specifies an optional list of secrets which will be copied from the provider namespace into the namespaces of the reconciled Clusters.
	// This can, for example, be used to distribute credentials for the registry holding the external-dns helm chart.
	// +optional
	SecretsToCopy []SecretCopy `json:"secretsToCopy,omitempty"`

	// HelmReleaseReconciliationInterval is the interval at which the HelmRelease for external-dns is reconciled.
	// The value can be overwritten for specific purposes using ExternalDNSForPurposes.
	// If not set, a default of 1h is used.
	// +optional
	HelmReleaseReconciliationInterval *metav1.Duration `json:"helmReleaseReconciliationInterval,omitempty"`

	// ExternalDNSForPurposes is a list of DNS configurations in combination with purpose selectors.
	// The first matching purpose selector will be applied to the Cluster.
	// If no selector matches, no configuration will be applied.
	// +optional
	ExternalDNSForPurposes []ExternalDNSPurposeConfig `json:"externalDNSForPurposes,omitempty"`
}

DNSServiceConfigSpec defines the desired state of DNSServiceConfig

func (*DNSServiceConfigSpec) DeepCopy

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

func (*DNSServiceConfigSpec) DeepCopyInto

func (in *DNSServiceConfigSpec) DeepCopyInto(out *DNSServiceConfigSpec)

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

type ExternalDNSPurposeConfig

type ExternalDNSPurposeConfig struct {
	// Name is an optional name.
	// It can be set to more easily identify the configuration in logs and events.
	// +optional
	Name string `json:"name,omitempty"`

	// PurposeSelector is a selector to match against the list of purposes of a Cluster.
	// If not set, all Clusters are matched.
	// +optional
	PurposeSelector *PurposeSelector `json:"purposeSelector,omitempty"`

	// HelmReleaseReconciliationInterval is the interval at which the HelmRelease for external-dns is reconciled.
	// If not set, the global HelmReleaseReconciliationInterval is used.
	// +optional
	HelmReleaseReconciliationInterval *metav1.Duration `json:"helmReleaseReconciliationInterval,omitempty"`

	// HelmValues are the helm values to deploy external-dns with, if the purpose selector matches.
	// There are a few special strings which will be replaced before creating the HelmRelease:
	// - <provider.name> will be replaced with the provider name resource.
	// - <provider.namespace> will be replaced with the namespace that hosts the platform service.
	// - <environment> will be replaced with the environment name of the operator.
	// - <cluster.name> will be replaced with the name of the reconciled Cluster.
	// - <cluster.namespace> will be replaced with the namespace of the reconciled Cluster.
	// +kubebuilder:validation:Type=string
	// +kubebuilder:validation:Schemaless
	HelmValues *apiextensionsv1.JSON `json:"helmValues"`
}

ExternalDNSPurposeConfig holds a purpose selector and the DNS configuration to apply if the selector matches.

func (*ExternalDNSPurposeConfig) DeepCopy

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

func (*ExternalDNSPurposeConfig) DeepCopyInto

func (in *ExternalDNSPurposeConfig) DeepCopyInto(out *ExternalDNSPurposeConfig)

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

type ExternalDNSSource

type ExternalDNSSource struct {
	// ChartName specifies the name of the external-dns chart.
	// Depending on the source, this can also be a relative path within the repository.
	// When using a source that needs a version (helm or oci), append the version to the chart name using '@', e.g. 'external-dns@1.10.0' or omit for latest version.
	// +kubebuilder:validation:MinLength=1
	ChartName string                     `json:"chartName"`
	Helm      *fluxv1.HelmRepositorySpec `json:"helm,omitempty"`
	Git       *fluxv1.GitRepositorySpec  `json:"git,omitempty"`
	OCI       *fluxv1.OCIRepositorySpec  `json:"oci,omitempty"`
}

ExternalDNSSource defines the source of the external-dns helm chart in form of a Flux source. Exactly one of 'HelmRepository', 'GitRepository' or 'OCIRepository' must be set. If 'copyAuthSecret' is set, the referenced source secret is copied into the namespace where the Flux resources are created with the specified target name. +kubebuilder:validation:ExactlyOneOf=helm;git;oci

func (*ExternalDNSSource) DeepCopy

func (in *ExternalDNSSource) DeepCopy() *ExternalDNSSource

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

func (*ExternalDNSSource) DeepCopyInto

func (in *ExternalDNSSource) DeepCopyInto(out *ExternalDNSSource)

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

type PurposeSelector

type PurposeSelector struct {
	PurposeSelectorRequirement `json:",inline"`
}

PurposeSelector is a selector to match against the list of purposes of a Cluster.

func (*PurposeSelector) DeepCopy

func (in *PurposeSelector) DeepCopy() *PurposeSelector

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

func (*PurposeSelector) DeepCopyInto

func (in *PurposeSelector) DeepCopyInto(out *PurposeSelector)

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

func (*PurposeSelector) Matches

func (ps *PurposeSelector) Matches(purposes []string) bool

Matches returns true if the selector matches the given list of purposes.

type PurposeSelectorRequirement

type PurposeSelectorRequirement struct {
	// +kubebuilder:validation:items:Type=object
	// +optional
	And []PurposeSelectorRequirement `json:"and,omitempty"`
	// +kubebuilder:validation:items:Type=object
	// +optional
	Or []PurposeSelectorRequirement `json:"or,omitempty"`
	// +kubebuilder:validation:Type=object
	// +optional
	Not *PurposeSelectorRequirement `json:"not,omitempty"`
	// +optional
	Name string `json:"name,omitempty"`
}

PurposeSelectorRequirement is a selector to select purposes to apply the configuration to. The struct can be combined recursively using "and", "or" and "not" to build complex selectors. Exactly one of the fields must be set, otherwise only one of them is evaluated in the order: name, not, and, or. If name is set, the selector matches if the Cluster's purposes contain the given name. If and is set, the selector matches if all of the contained selectors match. If or is set, the selector matches if any of the contained selectors match. If not is set, the selector matches if the contained selector does not match.

func (*PurposeSelectorRequirement) DeepCopy

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

func (*PurposeSelectorRequirement) DeepCopyInto

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

type SecretCopy

type SecretCopy struct {
	Source commonapi.LocalObjectReference  `json:"source"`
	Target *commonapi.LocalObjectReference `json:"target"`
}

SecretCopy defines the name of the secret to copy and the name of the copied secret. If target is nil or target.name is empty, the secret will be copied with the same name as the source secret.

func (*SecretCopy) DeepCopy

func (in *SecretCopy) DeepCopy() *SecretCopy

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

func (*SecretCopy) DeepCopyInto

func (in *SecretCopy) DeepCopyInto(out *SecretCopy)

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

Jump to

Keyboard shortcuts

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