From e963e480a70fbfddfa15fc01275ebbe3ea80bb0f Mon Sep 17 00:00:00 2001 From: Andrei Kvapil Date: Thu, 18 Dec 2025 19:19:22 +0100 Subject: [PATCH] [cozystack-operator] Add PackageSet types Signed-off-by: Andrei Kvapil --- api/v1alpha1/packageset_types.go | 89 ++++ api/v1alpha1/packagesetdefinition_types.go | 202 +++++++++ api/v1alpha1/zz_generated.deepcopy.go | 382 ++++++++++++++++++ packages/core/platform/psds/clickhouse.yaml | 52 +++ packages/core/platform/psds/cozystack.yaml | 67 +++ packages/core/platform/psds/ferretdb.yaml | 28 ++ .../platform/psds/foundationdb-operator.yaml | 24 ++ packages/core/platform/psds/foundationdb.yaml | 30 ++ packages/core/platform/psds/http-cache.yaml | 28 ++ .../core/platform/psds/kafka-operator.yaml | 24 ++ packages/core/platform/psds/kafka.yaml | 30 ++ .../core/platform/psds/mariadb-operator.yaml | 26 ++ packages/core/platform/psds/mysql.yaml | 30 ++ packages/core/platform/psds/nats.yaml | 30 ++ packages/core/platform/psds/networking.yaml | 65 +++ packages/core/platform/psds/postgres.yaml | 29 ++ .../core/platform/psds/rabbitmq-operator.yaml | 21 + packages/core/platform/psds/rabbitmq.yaml | 30 ++ .../core/platform/psds/redis-operator.yaml | 21 + packages/core/platform/psds/redis.yaml | 30 ++ packages/core/platform/psds/tcp-balancer.yaml | 29 ++ packages/core/platform/psds/vpn.yaml | 29 ++ packages/packages.yaml | 199 +++++++++ 23 files changed, 1495 insertions(+) create mode 100644 api/v1alpha1/packageset_types.go create mode 100644 api/v1alpha1/packagesetdefinition_types.go create mode 100644 packages/core/platform/psds/clickhouse.yaml create mode 100644 packages/core/platform/psds/cozystack.yaml create mode 100644 packages/core/platform/psds/ferretdb.yaml create mode 100644 packages/core/platform/psds/foundationdb-operator.yaml create mode 100644 packages/core/platform/psds/foundationdb.yaml create mode 100644 packages/core/platform/psds/http-cache.yaml create mode 100644 packages/core/platform/psds/kafka-operator.yaml create mode 100644 packages/core/platform/psds/kafka.yaml create mode 100644 packages/core/platform/psds/mariadb-operator.yaml create mode 100644 packages/core/platform/psds/mysql.yaml create mode 100644 packages/core/platform/psds/nats.yaml create mode 100644 packages/core/platform/psds/networking.yaml create mode 100644 packages/core/platform/psds/postgres.yaml create mode 100644 packages/core/platform/psds/rabbitmq-operator.yaml create mode 100644 packages/core/platform/psds/rabbitmq.yaml create mode 100644 packages/core/platform/psds/redis-operator.yaml create mode 100644 packages/core/platform/psds/redis.yaml create mode 100644 packages/core/platform/psds/tcp-balancer.yaml create mode 100644 packages/core/platform/psds/vpn.yaml create mode 100644 packages/packages.yaml diff --git a/api/v1alpha1/packageset_types.go b/api/v1alpha1/packageset_types.go new file mode 100644 index 00000000..b7529683 --- /dev/null +++ b/api/v1alpha1/packageset_types.go @@ -0,0 +1,89 @@ +/* +Copyright 2025. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1alpha1 + +import ( + apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" +) + +// +kubebuilder:object:root=true +// +kubebuilder:resource:scope=Cluster,shortName=ps +// +kubebuilder:subresource:status +// +kubebuilder:printcolumn:name="Variant",type="string",JSONPath=".status.variant",description="Selected variant" +// +kubebuilder:printcolumn:name="Ready",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status",description="Ready status" +// +kubebuilder:printcolumn:name="Status",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].message",description="Ready message" + +// PackageSet is the Schema for the packagesets API +type PackageSet struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + + Spec PackageSetSpec `json:"spec,omitempty"` + Status PackageSetStatus `json:"status,omitempty"` +} + +// +kubebuilder:object:root=true + +// PackageSetList contains a list of PackageSets +type PackageSetList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []PackageSet `json:"items"` +} + +func init() { + SchemeBuilder.Register(&PackageSet{}, &PackageSetList{}) +} + +// PackageSetSpec defines the desired state of PackageSet +type PackageSetSpec struct { + // IgnoreDependencies is a list of package set dependencies to ignore + // Dependencies listed here will not be installed even if they are specified in the PackageSetDefinition + // +optional + IgnoreDependencies []string `json:"ignoreDependencies,omitempty"` + + // Packages is a map of package name to package overrides + // Allows overriding values and enabling/disabling specific packages from the PackageSetDefinition + // +optional + Packages map[string]PackageSetPackageOverride `json:"packages,omitempty"` +} + +// PackageSetPackageOverride defines overrides for a specific package +type PackageSetPackageOverride struct { + // Enabled indicates whether this package should be installed + // If false, the package will be disabled even if it's defined in the PackageSetDefinition + // +optional + Enabled *bool `json:"enabled,omitempty"` + + // Values contains Helm chart values as a JSON object + // These values will be merged with the default values from the PackageSetDefinition + // +optional + Values *apiextensionsv1.JSON `json:"values,omitempty"` +} + +// PackageSetStatus defines the observed state of PackageSet +type PackageSetStatus struct { + // Variant is the selected variant name, or "default" if not specified + // This field is populated by the controller based on spec.packageSetDefinitionRef.variant + // +optional + Variant string `json:"variant,omitempty"` + + // Conditions represents the latest available observations of a PackageSet's state + // +optional + Conditions []metav1.Condition `json:"conditions,omitempty"` +} diff --git a/api/v1alpha1/packagesetdefinition_types.go b/api/v1alpha1/packagesetdefinition_types.go new file mode 100644 index 00000000..36c1e921 --- /dev/null +++ b/api/v1alpha1/packagesetdefinition_types.go @@ -0,0 +1,202 @@ +/* +Copyright 2025. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1alpha1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" +) + +// +kubebuilder:object:root=true +// +kubebuilder:resource:scope=Cluster,shortName=psd +// +kubebuilder:subresource:status +// +kubebuilder:printcolumn:name="Variants",type="string",JSONPath=".status.variants",description="Package variants (comma-separated)" +// +kubebuilder:printcolumn:name="Ready",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status",description="Ready status" +// +kubebuilder:printcolumn:name="Status",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].message",description="Ready message" + +// PackageSetDefinition is the Schema for the packagesetdefinitions API +type PackageSetDefinition struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + + Spec PackageSetDefinitionSpec `json:"spec,omitempty"` + Status PackageSetDefinitionStatus `json:"status,omitempty"` +} + +// +kubebuilder:object:root=true + +// PackageSetDefinitionList contains a list of PackageSetDefinitions +type PackageSetDefinitionList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []PackageSetDefinition `json:"items"` +} + +func init() { + SchemeBuilder.Register(&PackageSetDefinition{}, &PackageSetDefinitionList{}) +} + +// PackageSetDefinitionSpec defines the desired state of PackageSetDefinition +type PackageSetDefinitionSpec struct { + // SourceRef is the source reference for the package set charts + // +optional + SourceRef *PackageSetDefinitionSourceRef `json:"sourceRef,omitempty"` + + // Variants is a list of package set variants + // Each variant defines packages, sources, dependencies, and libraries for a specific configuration + // +optional + Variants []PackageSetDefinitionVariant `json:"variants,omitempty"` +} + +// PackageSetDefinitionVariant defines a single variant configuration +type PackageSetDefinitionVariant struct { + // Name is the unique identifier for this variant + // +required + Name string `json:"name"` + + // DependsOn is a list of package set dependencies in the format "packageSetName/target" + // For example: "cozystack-system/network" + // If specified, the dependencies listed in the target's packages will be taken + // from the specified package set and added to all packages in this variant + // +optional + DependsOn []string `json:"dependsOn,omitempty"` + + // Libraries is a list of Helm library charts used by packages in this variant + // +optional + Libraries []PackageSetDefinitionLibrary `json:"libraries,omitempty"` + + // Packages is a list of Helm releases to be installed as part of this variant + // +optional + Packages []PackageSetDefinitionPackage `json:"packages,omitempty"` + + // Sources is a list of application sources for this variant + // +optional + Sources []PackageSetDefinitionApplication `json:"sources,omitempty"` +} + +// PackageSetDefinitionDependencyTarget defines a named group of packages that can be referenced +// by other package sets via dependsOn +type PackageSetDefinitionDependencyTarget struct { + // Name is the unique identifier for this dependency target + // +required + Name string `json:"name"` + + // Packages is a list of package names that belong to this target + // These packages will be added as dependencies when this target is referenced + // +required + Packages []string `json:"packages"` +} + +// PackageSetDefinitionLibrary defines a Helm library chart +type PackageSetDefinitionLibrary struct { + // Name is the optional name for library placed in charts + // +optional + Name string `json:"name,omitempty"` + + // Path is the path to the library chart directory + // +required + Path string `json:"path"` +} + +// PackageSetDefinitionSourceRef defines the source reference for package set charts +type PackageSetDefinitionSourceRef struct { + // Kind of the source reference + // +kubebuilder:validation:Enum=GitRepository;OCIRepository + // +required + Kind string `json:"kind"` + + // Name of the source reference + // +required + Name string `json:"name"` + + // Namespace of the source reference + // +required + Namespace string `json:"namespace"` + + // BasePath is the base path where packages are located in the source. + // For GitRepository, defaults to "packages" if not specified. + // For OCIRepository, defaults to empty string (root) if not specified. + // +optional + Path string `json:"path,omitempty"` +} + +// PackageSetDefinitionPackage defines a single Helm release within a package set +type PackageSetDefinitionPackage struct { + // Name is the unique identifier for this package within the package set + // +required + Name string `json:"name"` + + // ReleaseName is the name of the HelmRelease resource that will be created + // If not specified, defaults to the Name field + // +optional + ReleaseName string `json:"releaseName,omitempty"` + + // Path is the path to the Helm chart directory + // +required + Path string `json:"path"` + + // Namespace is the Kubernetes namespace where the release will be installed + // +required + Namespace string `json:"namespace"` + + // Privileged indicates whether this release requires privileged access + // +optional + Privileged bool `json:"privileged,omitempty"` + + // Disabled indicates whether this release is disabled (should not be installed) + // +optional + Disabled bool `json:"disabled,omitempty"` + + // DependsOn is a list of release names that must be installed before this release + // +optional + DependsOn []string `json:"dependsOn,omitempty"` + + // Libraries is a list of library charts that this package depends on + // +optional + Libraries []PackageSetDefinitionLibrary `json:"libraries,omitempty"` + + // ValuesFiles is a list of values file names to use + // +optional + ValuesFiles []string `json:"valuesFiles,omitempty"` +} + +// PackageSetDefinitionApplication defines a single application release within a package set +type PackageSetDefinitionApplication struct { + // Name is the unique identifier for this application within the package set + // +required + Name string `json:"name"` + + // Path is the path to the Helm chart directory + // +required + Path string `json:"path"` + + // Libraries is a list of library names that this application depends on + // These libraries must be defined at the variant level + // +optional + Libraries []string `json:"libraries,omitempty"` +} + +// PackageSetDefinitionStatus defines the observed state of PackageSetDefinition +type PackageSetDefinitionStatus struct { + // Variants is a comma-separated list of package variant names + // This field is populated by the controller based on spec.packages keys + // +optional + Variants string `json:"variants,omitempty"` + + // Conditions represents the latest available observations of a PackageSetDefinition's state + // +optional + Conditions []metav1.Condition `json:"conditions,omitempty"` +} diff --git a/api/v1alpha1/zz_generated.deepcopy.go b/api/v1alpha1/zz_generated.deepcopy.go index 42cf4c4a..a49ad31f 100644 --- a/api/v1alpha1/zz_generated.deepcopy.go +++ b/api/v1alpha1/zz_generated.deepcopy.go @@ -21,7 +21,9 @@ limitations under the License. package v1alpha1 import ( + "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" "k8s.io/apimachinery/pkg/api/resource" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" runtime "k8s.io/apimachinery/pkg/runtime" ) @@ -256,6 +258,386 @@ func (in *CozystackResourceDefinitionSpec) DeepCopy() *CozystackResourceDefiniti return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PackageSet) DeepCopyInto(out *PackageSet) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PackageSet. +func (in *PackageSet) DeepCopy() *PackageSet { + if in == nil { + return nil + } + out := new(PackageSet) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *PackageSet) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PackageSetDefinition) DeepCopyInto(out *PackageSetDefinition) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PackageSetDefinition. +func (in *PackageSetDefinition) DeepCopy() *PackageSetDefinition { + if in == nil { + return nil + } + out := new(PackageSetDefinition) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *PackageSetDefinition) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PackageSetDefinitionApplication) DeepCopyInto(out *PackageSetDefinitionApplication) { + *out = *in + if in.Libraries != nil { + in, out := &in.Libraries, &out.Libraries + *out = make([]PackageSetDefinitionLibrary, len(*in)) + copy(*out, *in) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PackageSetDefinitionApplication. +func (in *PackageSetDefinitionApplication) DeepCopy() *PackageSetDefinitionApplication { + if in == nil { + return nil + } + out := new(PackageSetDefinitionApplication) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PackageSetDefinitionDependencyTarget) DeepCopyInto(out *PackageSetDefinitionDependencyTarget) { + *out = *in + if in.Packages != nil { + in, out := &in.Packages, &out.Packages + *out = make([]string, len(*in)) + copy(*out, *in) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PackageSetDefinitionDependencyTarget. +func (in *PackageSetDefinitionDependencyTarget) DeepCopy() *PackageSetDefinitionDependencyTarget { + if in == nil { + return nil + } + out := new(PackageSetDefinitionDependencyTarget) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PackageSetDefinitionLibrary) DeepCopyInto(out *PackageSetDefinitionLibrary) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PackageSetDefinitionLibrary. +func (in *PackageSetDefinitionLibrary) DeepCopy() *PackageSetDefinitionLibrary { + if in == nil { + return nil + } + out := new(PackageSetDefinitionLibrary) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PackageSetDefinitionList) DeepCopyInto(out *PackageSetDefinitionList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]PackageSetDefinition, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PackageSetDefinitionList. +func (in *PackageSetDefinitionList) DeepCopy() *PackageSetDefinitionList { + if in == nil { + return nil + } + out := new(PackageSetDefinitionList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *PackageSetDefinitionList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PackageSetDefinitionPackage) DeepCopyInto(out *PackageSetDefinitionPackage) { + *out = *in + if in.DependsOn != nil { + in, out := &in.DependsOn, &out.DependsOn + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.Libraries != nil { + in, out := &in.Libraries, &out.Libraries + *out = make([]PackageSetDefinitionLibrary, len(*in)) + copy(*out, *in) + } + if in.ValuesFiles != nil { + in, out := &in.ValuesFiles, &out.ValuesFiles + *out = make([]string, len(*in)) + copy(*out, *in) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PackageSetDefinitionPackage. +func (in *PackageSetDefinitionPackage) DeepCopy() *PackageSetDefinitionPackage { + if in == nil { + return nil + } + out := new(PackageSetDefinitionPackage) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PackageSetDefinitionSourceRef) DeepCopyInto(out *PackageSetDefinitionSourceRef) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PackageSetDefinitionSourceRef. +func (in *PackageSetDefinitionSourceRef) DeepCopy() *PackageSetDefinitionSourceRef { + if in == nil { + return nil + } + out := new(PackageSetDefinitionSourceRef) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PackageSetDefinitionSpec) DeepCopyInto(out *PackageSetDefinitionSpec) { + *out = *in + if in.SourceRef != nil { + in, out := &in.SourceRef, &out.SourceRef + *out = new(PackageSetDefinitionSourceRef) + **out = **in + } + if in.Variants != nil { + in, out := &in.Variants, &out.Variants + *out = make([]PackageSetDefinitionVariant, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PackageSetDefinitionSpec. +func (in *PackageSetDefinitionSpec) DeepCopy() *PackageSetDefinitionSpec { + if in == nil { + return nil + } + out := new(PackageSetDefinitionSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PackageSetDefinitionStatus) DeepCopyInto(out *PackageSetDefinitionStatus) { + *out = *in + if in.Conditions != nil { + in, out := &in.Conditions, &out.Conditions + *out = make([]metav1.Condition, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PackageSetDefinitionStatus. +func (in *PackageSetDefinitionStatus) DeepCopy() *PackageSetDefinitionStatus { + if in == nil { + return nil + } + out := new(PackageSetDefinitionStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PackageSetDefinitionVariant) DeepCopyInto(out *PackageSetDefinitionVariant) { + *out = *in + if in.DependsOn != nil { + in, out := &in.DependsOn, &out.DependsOn + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.Libraries != nil { + in, out := &in.Libraries, &out.Libraries + *out = make([]PackageSetDefinitionLibrary, len(*in)) + copy(*out, *in) + } + if in.Packages != nil { + in, out := &in.Packages, &out.Packages + *out = make([]PackageSetDefinitionPackage, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Applications != nil { + in, out := &in.Applications, &out.Applications + *out = make([]PackageSetDefinitionApplication, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PackageSetDefinitionVariant. +func (in *PackageSetDefinitionVariant) DeepCopy() *PackageSetDefinitionVariant { + if in == nil { + return nil + } + out := new(PackageSetDefinitionVariant) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PackageSetList) DeepCopyInto(out *PackageSetList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]PackageSet, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PackageSetList. +func (in *PackageSetList) DeepCopy() *PackageSetList { + if in == nil { + return nil + } + out := new(PackageSetList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *PackageSetList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PackageSetPackageOverride) DeepCopyInto(out *PackageSetPackageOverride) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } + if in.Values != nil { + in, out := &in.Values, &out.Values + *out = new(v1.JSON) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PackageSetPackageOverride. +func (in *PackageSetPackageOverride) DeepCopy() *PackageSetPackageOverride { + if in == nil { + return nil + } + out := new(PackageSetPackageOverride) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PackageSetSpec) DeepCopyInto(out *PackageSetSpec) { + *out = *in + if in.IgnoreDependencies != nil { + in, out := &in.IgnoreDependencies, &out.IgnoreDependencies + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.Packages != nil { + in, out := &in.Packages, &out.Packages + *out = make(map[string]PackageSetPackageOverride, len(*in)) + for key, val := range *in { + (*out)[key] = *val.DeepCopy() + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PackageSetSpec. +func (in *PackageSetSpec) DeepCopy() *PackageSetSpec { + if in == nil { + return nil + } + out := new(PackageSetSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PackageSetStatus) DeepCopyInto(out *PackageSetStatus) { + *out = *in + if in.Conditions != nil { + in, out := &in.Conditions, &out.Conditions + *out = make([]metav1.Condition, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PackageSetStatus. +func (in *PackageSetStatus) DeepCopy() *PackageSetStatus { + if in == nil { + return nil + } + out := new(PackageSetStatus) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in Selector) DeepCopyInto(out *Selector) { { diff --git a/packages/core/platform/psds/clickhouse.yaml b/packages/core/platform/psds/clickhouse.yaml new file mode 100644 index 00000000..f3506afb --- /dev/null +++ b/packages/core/platform/psds/clickhouse.yaml @@ -0,0 +1,52 @@ +--- +apiVersion: cozystack.io/v1alpha1 +kind: PackageSetDefinition +metadata: + name: cozystack.clickhouse-operator +spec: + sourceRef: + kind: OCIRepository + name: cozystack-packages + namespace: cozy-system + path: / + variants: + - name: default + dependsOn: + - cozystack.networking + - cozystack.monitoring + - cozystack.cozystack-core + packages: + - name: clickhouse-operator + path: system/clickhouse-operator + releaseName: clickhouse-operator + namespace: cozy-clickhouse-operator + dependsOn: + - victoria-metrics-operator +--- +apiVersion: cozystack.io/v1alpha1 +kind: PackageSetDefinition +metadata: + name: cozystack.clickhouse-application +spec: + sourceRef: + kind: OCIRepository + name: cozystack-packages + namespace: cozy-system + path: / + variants: + - name: default + dependsOn: + - cozystack.clickhouse-operator + libraries: + - name: cozy-lib + path: library/cozy-lib + packages: + - name: clickhouse-application + path: system/clickhouse-application + releaseName: clickhouse-application + namespace: cozy-system + sources: + - name: clickhouse + path: apps/clickhouse + libraries: + - cozy-lib diff --git a/packages/core/platform/psds/cozystack.yaml b/packages/core/platform/psds/cozystack.yaml new file mode 100644 index 00000000..d049842f --- /dev/null +++ b/packages/core/platform/psds/cozystack.yaml @@ -0,0 +1,67 @@ +--- +apiVersion: cozystack.io/v1alpha1 +kind: PackageSetDefinition +metadata: + name: cozystack.cozystack-core +spec: + variants: + - name: default + libraries: + - name: cozy-lib + path: library/cozy-lib + packages: + - name: cozystack-controller + releaseName: cozystack-controller + path: system/cozystack-controller + namespace: cozy-system + dependsOn: [] + - name: cozystack-api + releaseName: cozystack-api + path: system/cozystack-api + namespace: cozy-system + dependsOn: [cozystack-controller] + - name: lineage-controller-webhook + releaseName: lineage-controller-webhook + path: system/lineage-controller-webhook + namespace: cozy-system + dependsOn: [cozystack-controller] + - name: dashboard + releaseName: dashboard + path: system/dashboard + namespace: cozy-dashboard + dependsOn: [cozystack-api,cozystack-controller] + - name: cozystack-controller + releaseName: cozystack-controller + path: system/cozystack-controller + namespace: cozy-system + dependsOn: [] + - name: cozystack-api + releaseName: cozystack-api + path: system/cozystack-api + namespace: cozy-system + dependsOn: [cozystack-controller] + - name: lineage-controller-webhook + releaseName: lineage-controller-webhook + path: system/lineage-controller-webhook + namespace: cozy-system + dependsOn: [cozystack-controller] + - name: dashboard + releaseName: dashboard + path: system/dashboard + namespace: cozy-dashboard + dependsOn: [cozystack-api,cozystack-controller,keycloak-configure] + - name: keycloak-configure + releaseName: keycloak-configure + path: system/keycloak-configure + namespace: cozy-keycloak + dependsOn: [keycloak-operator] + - name: keycloak + releaseName: keycloak + path: system/keycloak + namespace: cozy-keycloak + dependsOn: [postgres-operator] + - name: keycloak-operator + releaseName: keycloak-operator + path: system/keycloak-operator + namespace: cozy-keycloak + dependsOn: [keycloak] diff --git a/packages/core/platform/psds/ferretdb.yaml b/packages/core/platform/psds/ferretdb.yaml new file mode 100644 index 00000000..6bd96a77 --- /dev/null +++ b/packages/core/platform/psds/ferretdb.yaml @@ -0,0 +1,28 @@ +--- +apiVersion: cozystack.io/v1alpha1 +kind: PackageSetDefinition +metadata: + name: cozystack.ferretdb +spec: + sourceRef: + kind: OCIRepository + name: cozystack-packages + namespace: cozy-system + path: / + variants: + - name: default + dependsOn: + - cozystack.networking + libraries: + - name: cozy-lib + path: library/cozy-lib + packages: + - name: ferretdb-application + path: system/ferretdb-application + releaseName: ferretdb-application + namespace: cozy-system + sources: + - name: ferretdb + path: apps/ferretdb + libraries: + - cozy-lib diff --git a/packages/core/platform/psds/foundationdb-operator.yaml b/packages/core/platform/psds/foundationdb-operator.yaml new file mode 100644 index 00000000..844b5d20 --- /dev/null +++ b/packages/core/platform/psds/foundationdb-operator.yaml @@ -0,0 +1,24 @@ +--- +apiVersion: cozystack.io/v1alpha1 +kind: PackageSetDefinition +metadata: + name: cozystack.foundationdb-operator +spec: + sourceRef: + kind: OCIRepository + name: cozystack-packages + namespace: cozy-system + path: / + variants: + - name: default + dependsOn: + - cozystack.networking + - cozystack.cert-manager + packages: + - name: foundationdb-operator + path: system/foundationdb-operator + releaseName: foundationdb-operator + namespace: cozy-foundationdb-operator + dependsOn: + - cert-manager + diff --git a/packages/core/platform/psds/foundationdb.yaml b/packages/core/platform/psds/foundationdb.yaml new file mode 100644 index 00000000..d8ac8883 --- /dev/null +++ b/packages/core/platform/psds/foundationdb.yaml @@ -0,0 +1,30 @@ +--- +apiVersion: cozystack.io/v1alpha1 +kind: PackageSetDefinition +metadata: + name: cozystack.foundationdb +spec: + sourceRef: + kind: OCIRepository + name: cozystack-packages + namespace: cozy-system + path: / + variants: + - name: default + dependsOn: + - cozystack.networking + - cozystack.foundationdb-operator + libraries: + - name: cozy-lib + path: library/cozy-lib + packages: + - name: foundationdb-application + path: system/foundationdb-application + releaseName: foundationdb-application + namespace: cozy-system + sources: + - name: foundationdb + path: apps/foundationdb + libraries: + - cozy-lib + diff --git a/packages/core/platform/psds/http-cache.yaml b/packages/core/platform/psds/http-cache.yaml new file mode 100644 index 00000000..38229093 --- /dev/null +++ b/packages/core/platform/psds/http-cache.yaml @@ -0,0 +1,28 @@ +--- +apiVersion: cozystack.io/v1alpha1 +kind: PackageSetDefinition +metadata: + name: cozystack.http-cache-application +spec: + sourceRef: + kind: OCIRepository + name: cozystack-packages + namespace: cozy-system + path: / + variants: + - name: default + dependsOn: + - cozystack.networking + libraries: + - name: cozy-lib + path: library/cozy-lib + packages: + - name: http-cache-application + path: system/http-cache-application + releaseName: http-cache + namespace: cozy-system + sources: + - name: http-cache + path: apps/http-cache + libraries: + - cozy-lib diff --git a/packages/core/platform/psds/kafka-operator.yaml b/packages/core/platform/psds/kafka-operator.yaml new file mode 100644 index 00000000..b433a46b --- /dev/null +++ b/packages/core/platform/psds/kafka-operator.yaml @@ -0,0 +1,24 @@ +--- +apiVersion: cozystack.io/v1alpha1 +kind: PackageSetDefinition +metadata: + name: cozystack.kafka-operator +spec: + sourceRef: + kind: OCIRepository + name: cozystack-packages + namespace: cozy-system + path: / + variants: + - name: default + dependsOn: + - cozystack.networking + - cozystack.monitoring + packages: + - name: kafka-operator + path: system/kafka-operator + releaseName: kafka-operator + namespace: cozy-kafka-operator + dependsOn: + - victoria-metrics-operator + diff --git a/packages/core/platform/psds/kafka.yaml b/packages/core/platform/psds/kafka.yaml new file mode 100644 index 00000000..92d93295 --- /dev/null +++ b/packages/core/platform/psds/kafka.yaml @@ -0,0 +1,30 @@ +--- +apiVersion: cozystack.io/v1alpha1 +kind: PackageSetDefinition +metadata: + name: cozystack.kafka +spec: + sourceRef: + kind: OCIRepository + name: cozystack-packages + namespace: cozy-system + path: / + variants: + - name: default + dependsOn: + - cozystack.networking + - cozystack.kafka-operator + libraries: + - name: cozy-lib + path: library/cozy-lib + packages: + - name: kafka-application + path: system/kafka-application + releaseName: kafka-application + namespace: cozy-system + sources: + - name: kafka + path: apps/kafka + libraries: + - cozy-lib + diff --git a/packages/core/platform/psds/mariadb-operator.yaml b/packages/core/platform/psds/mariadb-operator.yaml new file mode 100644 index 00000000..d1366cba --- /dev/null +++ b/packages/core/platform/psds/mariadb-operator.yaml @@ -0,0 +1,26 @@ +--- +apiVersion: cozystack.io/v1alpha1 +kind: PackageSetDefinition +metadata: + name: cozystack.mariadb-operator +spec: + sourceRef: + kind: OCIRepository + name: cozystack-packages + namespace: cozy-system + path: / + variants: + - name: default + dependsOn: + - cozystack.networking + - cozystack.monitoring + - cozystack.cert-manager + packages: + - name: mariadb-operator + path: system/mariadb-operator + releaseName: mariadb-operator + namespace: cozy-mariadb-operator + dependsOn: + - cert-manager + - victoria-metrics-operator + diff --git a/packages/core/platform/psds/mysql.yaml b/packages/core/platform/psds/mysql.yaml new file mode 100644 index 00000000..44c1409f --- /dev/null +++ b/packages/core/platform/psds/mysql.yaml @@ -0,0 +1,30 @@ +--- +apiVersion: cozystack.io/v1alpha1 +kind: PackageSetDefinition +metadata: + name: cozystack.mysql +spec: + sourceRef: + kind: OCIRepository + name: cozystack-packages + namespace: cozy-system + path: / + variants: + - name: default + dependsOn: + - cozystack.networking + - cozystack.mariadb-operator + libraries: + - name: cozy-lib + path: library/cozy-lib + packages: + - name: mysql-application + path: system/mysql-application + releaseName: mysql-application + namespace: cozy-system + sources: + - name: mysql + path: apps/mysql + libraries: + - cozy-lib + diff --git a/packages/core/platform/psds/nats.yaml b/packages/core/platform/psds/nats.yaml new file mode 100644 index 00000000..746bbf99 --- /dev/null +++ b/packages/core/platform/psds/nats.yaml @@ -0,0 +1,30 @@ +--- +apiVersion: cozystack.io/v1alpha1 +kind: PackageSetDefinition +metadata: + name: cozystack.nats +spec: + sourceRef: + kind: OCIRepository + name: cozystack-packages + namespace: cozy-system + path: / + variants: + - name: default + dependsOn: + - cozystack.networking + libraries: + - name: cozy-lib + path: library/cozy-lib + packages: + - name: nats-application + path: system/nats-application + releaseName: nats-application + namespace: cozy-system + sources: + - name: nats + path: apps/nats + libraries: + - cozy-lib + - name: nats-system + path: system/nats diff --git a/packages/core/platform/psds/networking.yaml b/packages/core/platform/psds/networking.yaml new file mode 100644 index 00000000..57cf3504 --- /dev/null +++ b/packages/core/platform/psds/networking.yaml @@ -0,0 +1,65 @@ +--- +apiVersion: cozystack.io/v1alpha1 +kind: PackageSetDefinition +metadata: + name: cozystack.networking +spec: + variants: + - name: noop + packages: [] + - name: cilium + dependsOn: + - cozystack.cert-manager + packages: + - name: cilium + releaseName: cilium + path: system/cilium + namespace: cozy-cilium + privileged: true + dependsOn: [] + valuesFiles: + - values.yaml + - values-talos.yaml + - name: cilium-networkpolicy + releaseName: cilium-networkpolicy + path: system/cilium-networkpolicy + namespace: cozy-cilium + privileged: true + dependsOn: [cilium] + - name: kubeovn-cilium + dependsOn: + - cozystack.cert-manager + packages: + - name: cilium + releaseName: cilium + path: system/cilium + namespace: cozy-cilium + privileged: true + dependsOn: [] + valuesFiles: + - values.yaml + - values-talos.yaml + - values-kubeovn.yaml + - name: cilium-networkpolicy + releaseName: cilium-networkpolicy + path: system/cilium-networkpolicy + namespace: cozy-cilium + privileged: true + dependsOn: [cilium] + - name: kubeovn + releaseName: kubeovn + path: system/kubeovn + namespace: cozy-kubeovn + privileged: true + dependsOn: [cilium] + - name: kubeovn-plunger + releaseName: kubeovn-plunger + path: system/kubeovn-plunger + namespace: cozy-kubeovn + dependsOn: [cilium,kubeovn] + - name: kubeovn-webhook + releaseName: kubeovn-webhook + path: system/kubeovn-webhook + namespace: cozy-kubeovn + privileged: true + dependsOn: [cilium,kubeovn] diff --git a/packages/core/platform/psds/postgres.yaml b/packages/core/platform/psds/postgres.yaml new file mode 100644 index 00000000..fef3d58e --- /dev/null +++ b/packages/core/platform/psds/postgres.yaml @@ -0,0 +1,29 @@ +--- +apiVersion: cozystack.io/v1alpha1 +kind: PackageSetDefinition +metadata: + name: cozystack.postgres +spec: + sourceRef: + kind: OCIRepository + name: cozystack-packages + namespace: cozy-system + path: / + variants: + - name: default + dependsOn: + - cozystack.networking + libraries: + - name: cozy-lib + path: library/cozy-lib + packages: + - name: postgres-application + path: system/postgres-application + releaseName: postgres-application + namespace: cozy-system + sources: + - name: postgres + path: apps/postgres + libraries: + - cozy-lib + diff --git a/packages/core/platform/psds/rabbitmq-operator.yaml b/packages/core/platform/psds/rabbitmq-operator.yaml new file mode 100644 index 00000000..236ae761 --- /dev/null +++ b/packages/core/platform/psds/rabbitmq-operator.yaml @@ -0,0 +1,21 @@ +--- +apiVersion: cozystack.io/v1alpha1 +kind: PackageSetDefinition +metadata: + name: cozystack.rabbitmq-operator +spec: + sourceRef: + kind: OCIRepository + name: cozystack-packages + namespace: cozy-system + path: / + variants: + - name: default + dependsOn: + - cozystack.networking + packages: + - name: rabbitmq-operator + path: system/rabbitmq-operator + releaseName: rabbitmq-operator + namespace: cozy-rabbitmq-operator + diff --git a/packages/core/platform/psds/rabbitmq.yaml b/packages/core/platform/psds/rabbitmq.yaml new file mode 100644 index 00000000..39201831 --- /dev/null +++ b/packages/core/platform/psds/rabbitmq.yaml @@ -0,0 +1,30 @@ +--- +apiVersion: cozystack.io/v1alpha1 +kind: PackageSetDefinition +metadata: + name: cozystack.rabbitmq +spec: + sourceRef: + kind: OCIRepository + name: cozystack-packages + namespace: cozy-system + path: / + variants: + - name: default + dependsOn: + - cozystack.networking + - cozystack.rabbitmq-operator + libraries: + - name: cozy-lib + path: library/cozy-lib + packages: + - name: rabbitmq-application + path: system/rabbitmq-application + releaseName: rabbitmq-application + namespace: cozy-system + sources: + - name: rabbitmq + path: apps/rabbitmq + libraries: + - cozy-lib + diff --git a/packages/core/platform/psds/redis-operator.yaml b/packages/core/platform/psds/redis-operator.yaml new file mode 100644 index 00000000..ee6e349b --- /dev/null +++ b/packages/core/platform/psds/redis-operator.yaml @@ -0,0 +1,21 @@ +--- +apiVersion: cozystack.io/v1alpha1 +kind: PackageSetDefinition +metadata: + name: cozystack.redis-operator +spec: + sourceRef: + kind: OCIRepository + name: cozystack-packages + namespace: cozy-system + path: / + variants: + - name: default + dependsOn: + - cozystack.networking + packages: + - name: redis-operator + path: system/redis-operator + releaseName: redis-operator + namespace: cozy-redis-operator + diff --git a/packages/core/platform/psds/redis.yaml b/packages/core/platform/psds/redis.yaml new file mode 100644 index 00000000..1f456bed --- /dev/null +++ b/packages/core/platform/psds/redis.yaml @@ -0,0 +1,30 @@ +--- +apiVersion: cozystack.io/v1alpha1 +kind: PackageSetDefinition +metadata: + name: cozystack.redis +spec: + sourceRef: + kind: OCIRepository + name: cozystack-packages + namespace: cozy-system + path: / + variants: + - name: default + dependsOn: + - cozystack.networking + - cozystack.redis-operator + libraries: + - name: cozy-lib + path: library/cozy-lib + packages: + - name: redis-application + path: system/redis-application + releaseName: redis-application + namespace: cozy-system + sources: + - name: redis + path: apps/redis + libraries: + - cozy-lib + diff --git a/packages/core/platform/psds/tcp-balancer.yaml b/packages/core/platform/psds/tcp-balancer.yaml new file mode 100644 index 00000000..10ea89ac --- /dev/null +++ b/packages/core/platform/psds/tcp-balancer.yaml @@ -0,0 +1,29 @@ +--- +apiVersion: cozystack.io/v1alpha1 +kind: PackageSetDefinition +metadata: + name: cozystack.tcp-balancer-application +spec: + sourceRef: + kind: OCIRepository + name: cozystack-packages + namespace: cozy-system + path: / + variants: + - name: default + dependsOn: + - cozystack.networking + libraries: + - name: cozy-lib + path: library/cozy-lib + packages: + - name: tcp-balancer-application + path: system/tcp-balancer-application + releaseName: tcp-balancer + namespace: cozy-system + sources: + - name: tcp-balancer + path: apps/tcp-balancer + libraries: + - cozy-lib + diff --git a/packages/core/platform/psds/vpn.yaml b/packages/core/platform/psds/vpn.yaml new file mode 100644 index 00000000..3347a330 --- /dev/null +++ b/packages/core/platform/psds/vpn.yaml @@ -0,0 +1,29 @@ +--- +apiVersion: cozystack.io/v1alpha1 +kind: PackageSetDefinition +metadata: + name: cozystack.vpn-application +spec: + sourceRef: + kind: OCIRepository + name: cozystack-packages + namespace: cozy-system + path: / + variants: + - name: default + dependsOn: + - cozystack.networking + libraries: + - name: cozy-lib + path: library/cozy-lib + packages: + - name: vpn-application + path: system/vpn-application + releaseName: vpn + namespace: cozy-system + sources: + - name: vpn + path: apps/vpn + libraries: + - cozy-lib + diff --git a/packages/packages.yaml b/packages/packages.yaml new file mode 100644 index 00000000..828af96b --- /dev/null +++ b/packages/packages.yaml @@ -0,0 +1,199 @@ +--- +apiVersion: cozystack.io/v1alpha1 +kind: PackageSetDefinition +metadata: + name: cozystack.clickhouse-operator +spec: + sourceRef: + kind: OCIRepository + name: cozystack-packages + namespace: cozy-system + path: / + dependsOn: + - cozystack.networking + - cozystack.monitoring + - cozystack.cozystack-core + packages: + default: + - name: clickhouse-operator + path: system/clickhouse-operator + releaseName: clickhouse-operator + namespace: cozy-clickhouse-operator +--- +apiVersion: cozystack.io/v1alpha1 +kind: PackageSetDefinition +metadata: + name: cozystack.clickhouse-application +spec: + sourceRef: + kind: OCIRepository + name: cozystack-packages + namespace: cozy-system + path: / + dependsOn: + - cozystack.clickhouse-operator + packages: + default: + - name: clickhouse-application + path: system/clickhouse-application + releaseName: clickhouse-application + namespace: cozy-system + applications: + default: + - name: clickhouse-application + path: apps/clickhouse + libraries: + - path: library/cozy-lib +--- +apiVersion: cozystack.io/v1alpha1 +kind: PackageSetDefinition +metadata: + name: cozystack.networking +spec: + dependsOn: + - cozystack.cert-manager + packages: + noop: [] + cilium: + - name: cilium + releaseName: cilium + path: system/cilium + namespace: cozy-cilium + privileged: true + dependsOn: [] + valuesFiles: + - values.yaml + - values-talos.yaml + - name: cilium-networkpolicy + releaseName: cilium-networkpolicy + path: system/cilium-networkpolicy + namespace: cozy-cilium + privileged: true + dependsOn: [cilium] + kubeovn-cilium: + - name: cilium + releaseName: cilium + path: system/cilium + namespace: cozy-cilium + privileged: true + dependsOn: [] + valuesFiles: + - values.yaml + - values-talos.yaml + - values-kubeovn.yaml + - name: cilium-networkpolicy + releaseName: cilium-networkpolicy + path: system/cilium-networkpolicy + namespace: cozy-cilium + privileged: true + dependsOn: [cilium] + - name: kubeovn + releaseName: kubeovn + path: system/kubeovn + namespace: cozy-kubeovn + privileged: true + dependsOn: [cilium] + - name: kubeovn-plunger + releaseName: kubeovn-plunger + path: system/kubeovn-plunger + namespace: cozy-kubeovn + dependsOn: [cilium,kubeovn] + - name: kubeovn-webhook + releaseName: kubeovn-webhook + path: system/kubeovn-webhook + namespace: cozy-kubeovn + privileged: true + dependsOn: [cilium,kubeovn] + +# PackageSetDefinition --> ArtifactGenerator --> ExternalArtifact (many) +# PackageSet --> HelmRelease (many) +--- +apiVersion: cozystack.io/v1alpha1 +kind: PackageSet +metadata: + name: cozystack.networking +spec: + #ignoreDependencies: + #- cozystack.networking + packages: + cilium: + enabled: false + values: + kubeProxyReplacement: strict + k8sServiceHost: api.example.org + k8sServicePort: 6443 + kubeovn: + values: + kube-ovn: + ipv4: + POD_CIDR: "10.244.0.0/16" + POD_GATEWAY: "10.244.0.1" + SVC_CIDR: "10.96.0.0/16" + JOIN_CIDR: "100.64.0.0/16" + +--- +apiVersion: cozystack.io/v1alpha1 +kind: PackageSetDefinition +metadata: + name: cozystack.cozystack-core +spec: + packages: + default: + - name: cozystack-controller + releaseName: cozystack-controller + path: system/cozystack-controller + namespace: cozy-system + dependsOn: [] + - name: cozystack-api + releaseName: cozystack-api + path: system/cozystack-api + namespace: cozy-system + dependsOn: [cozystack-controller] + - name: lineage-controller-webhook + releaseName: lineage-controller-webhook + path: system/lineage-controller-webhook + namespace: cozy-system + dependsOn: [cozystack-controller] + - name: dashboard + releaseName: dashboard + path: system/dashboard + namespace: cozy-dashboard + dependsOn: [cozystack-api,cozystack-controller] + oidc: + - name: cozystack-controller + releaseName: cozystack-controller + path: system/cozystack-controller + namespace: cozy-system + dependsOn: [] + - name: cozystack-api + releaseName: cozystack-api + path: system/cozystack-api + namespace: cozy-system + dependsOn: [cozystack-controller] + - name: lineage-controller-webhook + releaseName: lineage-controller-webhook + path: system/lineage-controller-webhook + namespace: cozy-system + dependsOn: [cozystack-controller] + - name: dashboard + releaseName: dashboard + path: system/dashboard + namespace: cozy-dashboard + dependsOn: [cozystack-api,cozystack-controller,keycloak-configure] + - name: keycloak-configure + releaseName: keycloak-configure + path: system/keycloak-configure + namespace: cozy-keycloak + dependsOn: [keycloak-operator] + - name: keycloak + releaseName: keycloak + path: system/keycloak + namespace: cozy-keycloak + dependsOn: [postgres-operator] + libraries: + - path: library/cozy-lib + - name: keycloak-operator + releaseName: keycloak-operator + path: system/keycloak-operator + namespace: cozy-keycloak + dependsOn: [keycloak]