refactor(platform): restructure bundles and add PackageSources

Restructure platform bundles from monolithic files to modular
directory structure with separate applicationdefinitions.

Add PackageSources for better dependency management and
migrate from legacy HelmRepositories to new repository format.

Co-Authored-By: Claude <noreply@anthropic.com>
Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
This commit is contained in:
Andrei Kvapil 2026-01-15 14:15:00 +01:00
parent 8e9c0dd5ad
commit 2d022e38e3
No known key found for this signature in database
GPG key ID: 931CF7FEACEAF765
36 changed files with 568 additions and 2169 deletions

View file

@ -4,31 +4,26 @@ NAMESPACE=cozy-system
include ../../../scripts/common-envs.mk
show:
cozyhr show -n $(NAMESPACE) $(NAME) --plain
cozyhr show --namespace $(NAMESPACE) $(NAME) --plain
apply:
cozyhr show -n $(NAMESPACE) $(NAME) --plain | kubectl apply -f-
kubectl delete helmreleases.helm.toolkit.fluxcd.io -l cozystack.io/marked-for-deletion=true -A
cozyhr show --namespace $(NAMESPACE) $(NAME) --plain | kubectl apply --filename -
kubectl delete helmreleases.helm.toolkit.fluxcd.io --selector cozystack.io/marked-for-deletion=true --all-namespaces
reconcile: apply
namespaces-show:
cozyhr show -n $(NAMESPACE) $(NAME) --plain -s templates/namespaces.yaml
namespaces-apply:
cozyhr show -n $(NAMESPACE) $(NAME) --plain -s templates/namespaces.yaml | kubectl apply -f-
diff:
cozyhr show -n $(NAMESPACE) $(NAME) --plain | kubectl diff -f-
cozyhr show --namespace $(NAMESPACE) $(NAME) --plain | kubectl diff --filename -
image: image-assets
image-assets:
docker buildx build -f images/cozystack-assets/Dockerfile ../../.. \
--tag $(REGISTRY)/cozystack-assets:$(call settag,$(TAG)) \
--cache-from type=registry,ref=$(REGISTRY)/cozystack-assets:latest \
image: image-migrations
image-migrations:
docker buildx build --file images/migrations/Dockerfile . \
--tag $(REGISTRY)/platform-migrations:$(call settag,$(TAG)) \
--cache-from type=registry,ref=$(REGISTRY)/platform-migrations:latest \
--cache-to type=inline \
--metadata-file images/cozystack-assets.json \
--metadata-file images/migrations.json \
$(BUILDX_ARGS)
IMAGE="$(REGISTRY)/cozystack-assets:$(call settag,$(TAG))@$$(yq e '."containerimage.digest"' images/cozystack-assets.json -o json -r)" \
yq -i '.assets.image = strenv(IMAGE)' values.yaml
rm -f images/cozystack-assets.json
IMAGE="$(REGISTRY)/platform-migrations:$(call settag,$(TAG))@$$(yq --exit-status '.["containerimage.digest"]' images/migrations.json --output-format json --raw-output)" \
yq --inplace '.migrations.image = strenv(IMAGE)' values.yaml
rm -f images/migrations.json

View file

@ -1,435 +0,0 @@
{{- $cozyConfig := lookup "v1" "ConfigMap" "cozy-system" "cozystack" }}
{{- $clusterDomain := (index $cozyConfig.data "cluster-domain") | default "cozy.local" }}
releases:
- name: cilium
releaseName: cilium
chart: cozy-cilium
namespace: cozy-cilium
privileged: true
dependsOn: []
valuesFiles:
- values.yaml
- values-talos.yaml
values:
cilium:
enableIPv4Masquerade: true
enableIdentityMark: true
ipv4NativeRoutingCIDR: "{{ index $cozyConfig.data "ipv4-pod-cidr" }}"
autoDirectNodeRoutes: true
routingMode: native
- name: cilium-networkpolicy
releaseName: cilium-networkpolicy
chart: cozy-cilium-networkpolicy
namespace: cozy-cilium
privileged: true
dependsOn: [cilium]
- name: cozy-proxy
releaseName: cozystack
chart: cozy-cozy-proxy
namespace: cozy-system
optional: true
dependsOn: [cilium]
- name: cert-manager-crds
releaseName: cert-manager-crds
chart: cozy-cert-manager-crds
namespace: cozy-cert-manager
dependsOn: [cilium]
- name: cozystack-controller
releaseName: cozystack-controller
chart: cozy-cozystack-controller
namespace: cozy-system
dependsOn: [cilium]
{{- if eq (index $cozyConfig.data "telemetry-enabled") "false" }}
values:
cozystackController:
disableTelemetry: true
{{- end }}
- name: lineage-controller-webhook
releaseName: lineage-controller-webhook
chart: cozy-lineage-controller-webhook
namespace: cozy-system
dependsOn: [cozystack-controller,cilium,cert-manager]
- name: cozystack-resource-definition-crd
releaseName: cozystack-resource-definition-crd
chart: cozystack-resource-definition-crd
namespace: cozy-system
dependsOn: [cilium]
- name: bootbox-rd
releaseName: bootbox-rd
chart: bootbox-rd
namespace: cozy-system
dependsOn: [cozystack-resource-definition-crd]
- name: bucket-rd
releaseName: bucket-rd
chart: bucket-rd
namespace: cozy-system
dependsOn: [cozystack-resource-definition-crd]
- name: clickhouse-rd
releaseName: clickhouse-rd
chart: clickhouse-rd
namespace: cozy-system
dependsOn: [cozystack-resource-definition-crd]
- name: etcd-rd
releaseName: etcd-rd
chart: etcd-rd
namespace: cozy-system
dependsOn: [cozystack-resource-definition-crd]
- name: ferretdb-rd
releaseName: ferretdb-rd
chart: ferretdb-rd
namespace: cozy-system
dependsOn: [cozystack-resource-definition-crd]
- name: foundationdb-rd
releaseName: foundationdb-rd
chart: foundationdb-rd
namespace: cozy-system
dependsOn: [cozystack-resource-definition-crd]
- name: http-cache-rd
releaseName: http-cache-rd
chart: http-cache-rd
namespace: cozy-system
dependsOn: [cozystack-resource-definition-crd]
- name: info-rd
releaseName: info-rd
chart: info-rd
namespace: cozy-system
dependsOn: [cozystack-resource-definition-crd]
- name: ingress-rd
releaseName: ingress-rd
chart: ingress-rd
namespace: cozy-system
dependsOn: [cozystack-resource-definition-crd]
- name: kafka-rd
releaseName: kafka-rd
chart: kafka-rd
namespace: cozy-system
dependsOn: [cozystack-resource-definition-crd]
- name: kubernetes-rd
releaseName: kubernetes-rd
chart: kubernetes-rd
namespace: cozy-system
dependsOn: [cozystack-resource-definition-crd]
- name: monitoring-rd
releaseName: monitoring-rd
chart: monitoring-rd
namespace: cozy-system
dependsOn: [cozystack-resource-definition-crd]
- name: mysql-rd
releaseName: mysql-rd
chart: mysql-rd
namespace: cozy-system
dependsOn: [cozystack-resource-definition-crd]
- name: nats-rd
releaseName: nats-rd
chart: nats-rd
namespace: cozy-system
dependsOn: [cozystack-resource-definition-crd]
- name: postgres-rd
releaseName: postgres-rd
chart: postgres-rd
namespace: cozy-system
dependsOn: [cozystack-resource-definition-crd]
- name: rabbitmq-rd
releaseName: rabbitmq-rd
chart: rabbitmq-rd
namespace: cozy-system
dependsOn: [cozystack-resource-definition-crd]
- name: redis-rd
releaseName: redis-rd
chart: redis-rd
namespace: cozy-system
dependsOn: [cozystack-resource-definition-crd]
- name: seaweedfs-rd
releaseName: seaweedfs-rd
chart: seaweedfs-rd
namespace: cozy-system
dependsOn: [cozystack-resource-definition-crd]
- name: tcp-balancer-rd
releaseName: tcp-balancer-rd
chart: tcp-balancer-rd
namespace: cozy-system
dependsOn: [cozystack-resource-definition-crd]
- name: tenant-rd
releaseName: tenant-rd
chart: tenant-rd
namespace: cozy-system
dependsOn: [cozystack-resource-definition-crd]
- name: virtual-machine-rd
releaseName: virtual-machine-rd
chart: virtual-machine-rd
namespace: cozy-system
dependsOn: [cozystack-resource-definition-crd]
- name: virtualprivatecloud-rd
releaseName: virtualprivatecloud-rd
chart: virtualprivatecloud-rd
namespace: cozy-system
dependsOn: [cozystack-resource-definition-crd]
- name: vm-disk-rd
releaseName: vm-disk-rd
chart: vm-disk-rd
namespace: cozy-system
dependsOn: [cozystack-resource-definition-crd]
- name: vm-instance-rd
releaseName: vm-instance-rd
chart: vm-instance-rd
namespace: cozy-system
dependsOn: [cozystack-resource-definition-crd]
- name: vpn-rd
releaseName: vpn-rd
chart: vpn-rd
namespace: cozy-system
dependsOn: [cozystack-resource-definition-crd]
- name: cert-manager
releaseName: cert-manager
chart: cozy-cert-manager
namespace: cozy-cert-manager
dependsOn: [cert-manager-crds]
- name: cert-manager-issuers
releaseName: cert-manager-issuers
chart: cozy-cert-manager-issuers
namespace: cozy-cert-manager
dependsOn: [cilium,cert-manager]
- name: prometheus-operator-crds
releaseName: prometheus-operator-crds
chart: cozy-prometheus-operator-crds
namespace: cozy-victoria-metrics-operator
dependsOn: []
- name: metrics-server
releaseName: metrics-server
chart: cozy-metrics-server
namespace: cozy-monitoring
dependsOn: [cilium,prometheus-operator-crds]
- name: victoria-metrics-operator
releaseName: victoria-metrics-operator
chart: cozy-victoria-metrics-operator
namespace: cozy-victoria-metrics-operator
optional: true
dependsOn: [cilium,cert-manager,prometheus-operator-crds]
- name: monitoring-agents
releaseName: monitoring-agents
chart: cozy-monitoring-agents
namespace: cozy-monitoring
privileged: true
optional: true
dependsOn: [cilium,victoria-metrics-operator,metrics-server]
values:
scrapeRules:
etcd:
enabled: true
- name: metallb
releaseName: metallb
chart: cozy-metallb
namespace: cozy-metallb
privileged: true
dependsOn: [cilium]
- name: etcd-operator
releaseName: etcd-operator
chart: cozy-etcd-operator
namespace: cozy-etcd-operator
optional: true
dependsOn: [cilium,cert-manager]
- name: grafana-operator
releaseName: grafana-operator
chart: cozy-grafana-operator
namespace: cozy-grafana-operator
optional: true
dependsOn: [cilium]
- name: mariadb-operator
releaseName: mariadb-operator
chart: cozy-mariadb-operator
namespace: cozy-mariadb-operator
optional: true
dependsOn: [cilium,cert-manager,victoria-metrics-operator]
values:
mariadb-operator:
clusterName: {{ $clusterDomain }}
- name: postgres-operator
releaseName: postgres-operator
chart: cozy-postgres-operator
namespace: cozy-postgres-operator
optional: true
dependsOn: [cilium,cert-manager,victoria-metrics-operator]
- name: kafka-operator
releaseName: kafka-operator
chart: cozy-kafka-operator
namespace: cozy-kafka-operator
optional: true
dependsOn: [cilium,victoria-metrics-operator]
values:
strimzi-kafka-operator:
kubernetesServiceDnsDomain: {{ $clusterDomain }}
- name: clickhouse-operator
releaseName: clickhouse-operator
chart: cozy-clickhouse-operator
namespace: cozy-clickhouse-operator
optional: true
dependsOn: [cilium,victoria-metrics-operator]
- name: foundationdb-operator
releaseName: foundationdb-operator
chart: cozy-foundationdb-operator
namespace: cozy-foundationdb-operator
optional: true
dependsOn: [cilium,cert-manager]
- name: rabbitmq-operator
releaseName: rabbitmq-operator
chart: cozy-rabbitmq-operator
namespace: cozy-rabbitmq-operator
optional: true
dependsOn: [cilium]
- name: redis-operator
releaseName: redis-operator
chart: cozy-redis-operator
namespace: cozy-redis-operator
optional: true
dependsOn: [cilium]
- name: piraeus-operator
releaseName: piraeus-operator
chart: cozy-piraeus-operator
namespace: cozy-linstor
dependsOn: [cilium,cert-manager]
- name: snapshot-controller
releaseName: snapshot-controller
chart: cozy-snapshot-controller
namespace: cozy-snapshot-controller
dependsOn: [cilium,cert-manager-issuers]
- name: objectstorage-controller
releaseName: objectstorage-controller
chart: cozy-objectstorage-controller
namespace: cozy-objectstorage-controller
optional: true
dependsOn: [cilium]
- name: linstor
releaseName: linstor
chart: cozy-linstor
namespace: cozy-linstor
privileged: true
dependsOn: [piraeus-operator,cilium,cert-manager,snapshot-controller]
- name: linstor-scheduler
releaseName: linstor-scheduler
chart: cozy-linstor-scheduler
namespace: cozy-linstor
dependsOn: [linstor,cert-manager]
- name: nfs-driver
releaseName: nfs-driver
chart: cozy-nfs-driver
namespace: cozy-nfs-driver
privileged: true
dependsOn: [cilium]
optional: true
- name: telepresence
releaseName: traffic-manager
chart: cozy-telepresence
namespace: cozy-telepresence
optional: true
dependsOn: []
- name: external-dns
releaseName: external-dns
chart: cozy-external-dns
namespace: cozy-external-dns
optional: true
dependsOn: [cilium]
- name: external-secrets-operator
releaseName: external-secrets-operator
chart: cozy-external-secrets-operator
namespace: cozy-external-secrets-operator
optional: true
dependsOn: [cilium]
- name: keycloak
releaseName: keycloak
chart: cozy-keycloak
namespace: cozy-keycloak
optional: true
dependsOn: [postgres-operator]
- name: keycloak-operator
releaseName: keycloak-operator
chart: cozy-keycloak-operator
namespace: cozy-keycloak
optional: true
dependsOn: [keycloak]
- name: bootbox
releaseName: bootbox
chart: cozy-bootbox
namespace: cozy-bootbox
privileged: true
optional: true
dependsOn: [cilium]
- name: reloader
releaseName: reloader
chart: cozy-reloader
namespace: cozy-reloader
- name: velero
releaseName: velero
chart: cozy-velero
namespace: cozy-velero
privileged: true
optional: true
dependsOn: [cilium]
- name: hetzner-robotlb
releaseName: robotlb
optional: true
chart: cozy-hetzner-robotlb
namespace: cozy-hetzner-robotlb
dependsOn: [cilium]

View file

@ -1,186 +0,0 @@
{{- $cozyConfig := lookup "v1" "ConfigMap" "cozy-system" "cozystack" }}
{{- $clusterDomain := (index $cozyConfig.data "cluster-domain") | default "cozy.local" }}
releases:
- name: cert-manager-crds
releaseName: cert-manager-crds
chart: cozy-cert-manager-crds
namespace: cozy-cert-manager
dependsOn: []
- name: cozystack-controller
releaseName: cozystack-controller
chart: cozy-cozystack-controller
namespace: cozy-system
{{- if eq (index $cozyConfig.data "telemetry-enabled") "false" }}
values:
cozystackController:
disableTelemetry: true
{{- end }}
- name: lineage-controller-webhook
releaseName: lineage-controller-webhook
chart: cozy-lineage-controller-webhook
namespace: cozy-system
dependsOn: [cozystack-controller,cert-manager]
- name: cert-manager
releaseName: cert-manager
chart: cozy-cert-manager
namespace: cozy-cert-manager
dependsOn: [cert-manager-crds]
- name: cert-manager-issuers
releaseName: cert-manager-issuers
chart: cozy-cert-manager-issuers
namespace: cozy-cert-manager
optional: true
dependsOn: [cert-manager]
- name: prometheus-operator-crds
releaseName: prometheus-operator-crds
chart: cozy-prometheus-operator-crds
namespace: cozy-victoria-metrics-operator
dependsOn: []
- name: metrics-server
releaseName: metrics-server
chart: cozy-metrics-server
namespace: cozy-monitoring
dependsOn: [prometheus-operator-crds]
- name: victoria-metrics-operator
releaseName: victoria-metrics-operator
chart: cozy-victoria-metrics-operator
namespace: cozy-victoria-metrics-operator
optional: true
dependsOn: [prometheus-operator-crds,cert-manager]
- name: monitoring-agents
releaseName: monitoring-agents
chart: cozy-monitoring-agents
namespace: cozy-monitoring
privileged: true
optional: true
dependsOn: [victoria-metrics-operator, metrics-server]
values:
scrapeRules:
etcd:
enabled: true
- name: etcd-operator
releaseName: etcd-operator
chart: cozy-etcd-operator
namespace: cozy-etcd-operator
optional: true
dependsOn: [cert-manager]
- name: grafana-operator
releaseName: grafana-operator
chart: cozy-grafana-operator
namespace: cozy-grafana-operator
optional: true
dependsOn: []
- name: mariadb-operator
releaseName: mariadb-operator
chart: cozy-mariadb-operator
namespace: cozy-mariadb-operator
optional: true
dependsOn: [victoria-metrics-operator]
values:
mariadb-operator:
clusterName: {{ $clusterDomain }}
- name: postgres-operator
releaseName: postgres-operator
chart: cozy-postgres-operator
namespace: cozy-postgres-operator
optional: true
dependsOn: [victoria-metrics-operator]
- name: kafka-operator
releaseName: kafka-operator
chart: cozy-kafka-operator
namespace: cozy-kafka-operator
optional: true
dependsOn: [victoria-metrics-operator]
values:
strimzi-kafka-operator:
kubernetesServiceDnsDomain: {{ $clusterDomain }}
- name: clickhouse-operator
releaseName: clickhouse-operator
chart: cozy-clickhouse-operator
namespace: cozy-clickhouse-operator
optional: true
dependsOn: [victoria-metrics-operator]
- name: foundationdb-operator
releaseName: foundationdb-operator
chart: cozy-foundationdb-operator
namespace: cozy-foundationdb-operator
optional: true
dependsOn: [cert-manager]
- name: rabbitmq-operator
releaseName: rabbitmq-operator
chart: cozy-rabbitmq-operator
namespace: cozy-rabbitmq-operator
optional: true
dependsOn: []
- name: redis-operator
releaseName: redis-operator
chart: cozy-redis-operator
namespace: cozy-redis-operator
optional: true
dependsOn: []
- name: telepresence
releaseName: traffic-manager
chart: cozy-telepresence
namespace: cozy-telepresence
optional: true
dependsOn: []
- name: external-dns
releaseName: external-dns
chart: cozy-external-dns
namespace: cozy-external-dns
optional: true
dependsOn: []
- name: external-secrets-operator
releaseName: external-secrets-operator
chart: cozy-external-secrets-operator
namespace: cozy-external-secrets-operator
optional: true
dependsOn: []
- name: keycloak
releaseName: keycloak
chart: cozy-keycloak
namespace: cozy-keycloak
optional: true
dependsOn: [postgres-operator]
- name: keycloak-operator
releaseName: keycloak-operator
chart: cozy-keycloak-operator
namespace: cozy-keycloak
optional: true
dependsOn: [keycloak]
- name: velero
releaseName: velero
chart: cozy-velero
namespace: cozy-velero
privileged: true
optional: true
- name: hetzner-robotlb
releaseName: robotlb
optional: true
chart: cozy-hetzner-robotlb
namespace: cozy-hetzner-robotlb

View file

@ -1,612 +0,0 @@
{{- $cozyConfig := lookup "v1" "ConfigMap" "cozy-system" "cozystack" }}
{{- $clusterDomain := (index $cozyConfig.data "cluster-domain") | default "cozy.local" }}
{{- $oidcEnabled := index $cozyConfig.data "oidc-enabled" }}
{{- $host := index $cozyConfig.data "root-host" }}
{{- if not $host }}
{{- fail "ERROR need root-host in cozystack ConfigMap" }}
{{- end }}
{{- $apiServerEndpoint := index $cozyConfig.data "api-server-endpoint" }}
{{- if not $apiServerEndpoint }}
{{- fail "ERROR need api-server-endpoint in cozystack ConfigMap" }}
{{- end }}
releases:
- name: cilium
releaseName: cilium
chart: cozy-cilium
namespace: cozy-cilium
privileged: true
dependsOn: []
valuesFiles:
- values.yaml
- values-talos.yaml
- values-kubeovn.yaml
- name: cilium-networkpolicy
releaseName: cilium-networkpolicy
chart: cozy-cilium-networkpolicy
namespace: cozy-cilium
privileged: true
dependsOn: [cilium]
- name: kubeovn
releaseName: kubeovn
chart: cozy-kubeovn
namespace: cozy-kubeovn
privileged: true
dependsOn: [cilium]
values:
cozystack:
nodesHash: {{ include "cozystack.master-node-ips" . | sha256sum }}
kube-ovn:
ipv4:
POD_CIDR: "{{ index $cozyConfig.data "ipv4-pod-cidr" }}"
POD_GATEWAY: "{{ index $cozyConfig.data "ipv4-pod-gateway" }}"
SVC_CIDR: "{{ index $cozyConfig.data "ipv4-svc-cidr" }}"
JOIN_CIDR: "{{ index $cozyConfig.data "ipv4-join-cidr" }}"
- name: kubeovn-webhook
releaseName: kubeovn-webhook
chart: cozy-kubeovn-webhook
namespace: cozy-kubeovn
privileged: true
dependsOn: [cilium,kubeovn,cert-manager]
- name: kubeovn-plunger
releaseName: kubeovn-plunger
chart: cozy-kubeovn-plunger
namespace: cozy-kubeovn
dependsOn: [cilium,kubeovn]
- name: multus
releaseName: multus
chart: cozy-multus
namespace: cozy-multus
privileged: true
dependsOn: [cilium,kubeovn]
- name: cozy-proxy
releaseName: cozystack
chart: cozy-cozy-proxy
namespace: cozy-system
dependsOn: [cilium,kubeovn,multus]
- name: cert-manager-crds
releaseName: cert-manager-crds
chart: cozy-cert-manager-crds
namespace: cozy-cert-manager
dependsOn: []
- name: cozystack-api
releaseName: cozystack-api
chart: cozy-cozystack-api
namespace: cozy-system
dependsOn: [cilium,kubeovn,multus,cozystack-controller]
- name: cozystack-controller
releaseName: cozystack-controller
chart: cozy-cozystack-controller
namespace: cozy-system
dependsOn: [cilium,kubeovn,multus]
{{- if eq (index $cozyConfig.data "telemetry-enabled") "false" }}
values:
cozystackController:
disableTelemetry: true
{{- end }}
- name: backup-controller
releaseName: backup-controller
chart: cozy-backup-controller
namespace: cozy-backup-controller
dependsOn: [cilium,kubeovn,multus]
- name: lineage-controller-webhook
releaseName: lineage-controller-webhook
chart: cozy-lineage-controller-webhook
namespace: cozy-system
dependsOn: [cozystack-controller,cilium,kubeovn,multus,cert-manager]
- name: cozystack-resource-definition-crd
releaseName: cozystack-resource-definition-crd
chart: cozystack-resource-definition-crd
namespace: cozy-system
dependsOn: [cilium,kubeovn,multus,cozystack-api,cozystack-controller]
- name: bootbox-rd
releaseName: bootbox-rd
chart: bootbox-rd
namespace: cozy-system
dependsOn: [cozystack-resource-definition-crd]
- name: bucket-rd
releaseName: bucket-rd
chart: bucket-rd
namespace: cozy-system
dependsOn: [cozystack-resource-definition-crd]
- name: clickhouse-rd
releaseName: clickhouse-rd
chart: clickhouse-rd
namespace: cozy-system
dependsOn: [cozystack-resource-definition-crd]
- name: etcd-rd
releaseName: etcd-rd
chart: etcd-rd
namespace: cozy-system
dependsOn: [cozystack-resource-definition-crd]
- name: ferretdb-rd
releaseName: ferretdb-rd
chart: ferretdb-rd
namespace: cozy-system
dependsOn: [cozystack-resource-definition-crd]
- name: foundationdb-rd
releaseName: foundationdb-rd
chart: foundationdb-rd
namespace: cozy-system
dependsOn: [cozystack-resource-definition-crd]
- name: http-cache-rd
releaseName: http-cache-rd
chart: http-cache-rd
namespace: cozy-system
dependsOn: [cozystack-resource-definition-crd]
- name: info-rd
releaseName: info-rd
chart: info-rd
namespace: cozy-system
dependsOn: [cozystack-resource-definition-crd]
- name: ingress-rd
releaseName: ingress-rd
chart: ingress-rd
namespace: cozy-system
dependsOn: [cozystack-resource-definition-crd]
- name: kafka-rd
releaseName: kafka-rd
chart: kafka-rd
namespace: cozy-system
dependsOn: [cozystack-resource-definition-crd]
- name: kubernetes-rd
releaseName: kubernetes-rd
chart: kubernetes-rd
namespace: cozy-system
dependsOn: [cozystack-resource-definition-crd]
- name: monitoring-rd
releaseName: monitoring-rd
chart: monitoring-rd
namespace: cozy-system
dependsOn: [cozystack-resource-definition-crd]
- name: mysql-rd
releaseName: mysql-rd
chart: mysql-rd
namespace: cozy-system
dependsOn: [cozystack-resource-definition-crd]
- name: nats-rd
releaseName: nats-rd
chart: nats-rd
namespace: cozy-system
dependsOn: [cozystack-resource-definition-crd]
- name: postgres-rd
releaseName: postgres-rd
chart: postgres-rd
namespace: cozy-system
dependsOn: [cozystack-resource-definition-crd]
- name: rabbitmq-rd
releaseName: rabbitmq-rd
chart: rabbitmq-rd
namespace: cozy-system
dependsOn: [cozystack-resource-definition-crd]
- name: redis-rd
releaseName: redis-rd
chart: redis-rd
namespace: cozy-system
dependsOn: [cozystack-resource-definition-crd]
- name: seaweedfs-rd
releaseName: seaweedfs-rd
chart: seaweedfs-rd
namespace: cozy-system
dependsOn: [cozystack-resource-definition-crd]
- name: tcp-balancer-rd
releaseName: tcp-balancer-rd
chart: tcp-balancer-rd
namespace: cozy-system
dependsOn: [cozystack-resource-definition-crd]
- name: tenant-rd
releaseName: tenant-rd
chart: tenant-rd
namespace: cozy-system
dependsOn: [cozystack-resource-definition-crd]
- name: virtual-machine-rd
releaseName: virtual-machine-rd
chart: virtual-machine-rd
namespace: cozy-system
dependsOn: [cozystack-resource-definition-crd]
- name: virtualprivatecloud-rd
releaseName: virtualprivatecloud-rd
chart: virtualprivatecloud-rd
namespace: cozy-system
dependsOn: [cozystack-resource-definition-crd]
- name: vm-disk-rd
releaseName: vm-disk-rd
chart: vm-disk-rd
namespace: cozy-system
dependsOn: [cozystack-resource-definition-crd]
- name: vm-instance-rd
releaseName: vm-instance-rd
chart: vm-instance-rd
namespace: cozy-system
dependsOn: [cozystack-resource-definition-crd]
- name: vpn-rd
releaseName: vpn-rd
chart: vpn-rd
namespace: cozy-system
dependsOn: [cozystack-resource-definition-crd]
- name: cert-manager
releaseName: cert-manager
chart: cozy-cert-manager
namespace: cozy-cert-manager
dependsOn: [cilium,kubeovn,multus,cert-manager-crds]
- name: cert-manager-issuers
releaseName: cert-manager-issuers
chart: cozy-cert-manager-issuers
namespace: cozy-cert-manager
dependsOn: [cert-manager]
- name: prometheus-operator-crds
releaseName: prometheus-operator-crds
chart: cozy-prometheus-operator-crds
namespace: cozy-victoria-metrics-operator
dependsOn: []
- name: metrics-server
releaseName: metrics-server
chart: cozy-metrics-server
namespace: cozy-monitoring
dependsOn: [cilium,kubeovn,multus,prometheus-operator-crds]
- name: victoria-metrics-operator
releaseName: victoria-metrics-operator
chart: cozy-victoria-metrics-operator
namespace: cozy-victoria-metrics-operator
dependsOn: [cilium,kubeovn,multus,cert-manager,prometheus-operator-crds]
- name: monitoring-agents
releaseName: monitoring-agents
chart: cozy-monitoring-agents
namespace: cozy-monitoring
privileged: true
dependsOn: [victoria-metrics-operator,vertical-pod-autoscaler-crds,metrics-server]
values:
scrapeRules:
etcd:
enabled: true
- name: kubevirt-operator
releaseName: kubevirt-operator
chart: cozy-kubevirt-operator
namespace: cozy-kubevirt
dependsOn: [cilium,kubeovn,multus,victoria-metrics-operator]
- name: kubevirt
releaseName: kubevirt
chart: cozy-kubevirt
namespace: cozy-kubevirt
privileged: true
dependsOn: [cilium,kubeovn,multus,kubevirt-operator]
{{- $cpuAllocationRatio := index $cozyConfig.data "cpu-allocation-ratio" }}
{{- if $cpuAllocationRatio }}
values:
cpuAllocationRatio: {{ $cpuAllocationRatio }}
{{- end }}
- name: kubevirt-instancetypes
releaseName: kubevirt-instancetypes
chart: cozy-kubevirt-instancetypes
namespace: cozy-kubevirt
dependsOn: [cilium,kubeovn,multus,kubevirt-operator,kubevirt]
- name: kubevirt-cdi-operator
releaseName: kubevirt-cdi-operator
chart: cozy-kubevirt-cdi-operator
namespace: cozy-kubevirt-cdi
dependsOn: [cilium,kubeovn,multus]
- name: kubevirt-cdi
releaseName: kubevirt-cdi
chart: cozy-kubevirt-cdi
namespace: cozy-kubevirt-cdi
dependsOn: [cilium,kubeovn,multus,kubevirt-cdi-operator]
- name: gpu-operator
releaseName: gpu-operator
chart: cozy-gpu-operator
namespace: cozy-gpu-operator
privileged: true
optional: true
dependsOn: [cilium,kubeovn,multus]
valuesFiles:
- values.yaml
- values-talos.yaml
- name: metallb
releaseName: metallb
chart: cozy-metallb
namespace: cozy-metallb
privileged: true
dependsOn: [cilium,kubeovn,multus]
- name: etcd-operator
releaseName: etcd-operator
chart: cozy-etcd-operator
namespace: cozy-etcd-operator
dependsOn: [cilium,kubeovn,multus,cert-manager]
- name: grafana-operator
releaseName: grafana-operator
chart: cozy-grafana-operator
namespace: cozy-grafana-operator
dependsOn: [cilium,kubeovn,multus]
- name: mariadb-operator
releaseName: mariadb-operator
chart: cozy-mariadb-operator
namespace: cozy-mariadb-operator
dependsOn: [cilium,kubeovn,multus,cert-manager,victoria-metrics-operator]
values:
mariadb-operator:
clusterName: {{ $clusterDomain }}
- name: postgres-operator
releaseName: postgres-operator
chart: cozy-postgres-operator
namespace: cozy-postgres-operator
dependsOn: [cilium,kubeovn,multus,cert-manager]
- name: kafka-operator
releaseName: kafka-operator
chart: cozy-kafka-operator
namespace: cozy-kafka-operator
dependsOn: [cilium,kubeovn,multus,victoria-metrics-operator]
values:
strimzi-kafka-operator:
kubernetesServiceDnsDomain: {{ $clusterDomain }}
- name: clickhouse-operator
releaseName: clickhouse-operator
chart: cozy-clickhouse-operator
namespace: cozy-clickhouse-operator
dependsOn: [cilium,kubeovn,multus,victoria-metrics-operator]
- name: foundationdb-operator
releaseName: foundationdb-operator
chart: cozy-foundationdb-operator
namespace: cozy-foundationdb-operator
dependsOn: [cilium,kubeovn,multus,cert-manager]
- name: rabbitmq-operator
releaseName: rabbitmq-operator
chart: cozy-rabbitmq-operator
namespace: cozy-rabbitmq-operator
dependsOn: [cilium,kubeovn,multus]
- name: redis-operator
releaseName: redis-operator
chart: cozy-redis-operator
namespace: cozy-redis-operator
dependsOn: [cilium,kubeovn,multus]
- name: piraeus-operator
releaseName: piraeus-operator
chart: cozy-piraeus-operator
namespace: cozy-linstor
dependsOn: [cilium,kubeovn,multus,cert-manager,victoria-metrics-operator]
- name: linstor
releaseName: linstor
chart: cozy-linstor
namespace: cozy-linstor
privileged: true
dependsOn: [piraeus-operator,cilium,kubeovn,multus,cert-manager,snapshot-controller]
- name: linstor-scheduler
releaseName: linstor-scheduler
chart: cozy-linstor-scheduler
namespace: cozy-linstor
dependsOn: [linstor,cert-manager]
- name: nfs-driver
releaseName: nfs-driver
chart: cozy-nfs-driver
namespace: cozy-nfs-driver
privileged: true
dependsOn: [cilium,kubeovn,multus]
optional: true
- name: snapshot-controller
releaseName: snapshot-controller
chart: cozy-snapshot-controller
namespace: cozy-snapshot-controller
dependsOn: [cilium,kubeovn,multus,cert-manager-issuers]
- name: objectstorage-controller
releaseName: objectstorage-controller
chart: cozy-objectstorage-controller
namespace: cozy-objectstorage-controller
dependsOn: [cilium,kubeovn,multus]
- name: telepresence
releaseName: traffic-manager
chart: cozy-telepresence
namespace: cozy-telepresence
optional: true
dependsOn: [cilium,kubeovn,multus]
- name: dashboard
releaseName: dashboard
chart: cozy-dashboard
namespace: cozy-dashboard
values:
{{- $dashboardKCconfig := lookup "v1" "ConfigMap" "cozy-dashboard" "kubeapps-auth-config" }}
{{- $dashboardKCValues := dig "data" "values.yaml" "" $dashboardKCconfig | fromYaml }}
{{- toYaml (deepCopy $dashboardKCValues | mergeOverwrite (fromYaml (include "cozystack.defaultDashboardValues" .))) | nindent 4 }}
dependsOn:
- cilium
- kubeovn
- multus
{{- if eq $oidcEnabled "true" }}
- keycloak-configure
{{- end }}
- name: kamaji
releaseName: kamaji
chart: cozy-kamaji
namespace: cozy-kamaji
dependsOn: [cilium,kubeovn,multus,cert-manager]
- name: capi-operator
releaseName: capi-operator
chart: cozy-capi-operator
namespace: cozy-cluster-api
privileged: true
dependsOn: [cilium,kubeovn,multus,cert-manager]
- name: capi-providers-bootstrap
releaseName: capi-providers-bootstrap
chart: cozy-capi-providers-bootstrap
namespace: cozy-cluster-api
privileged: true
dependsOn: [cilium,kubeovn,multus,capi-operator]
- name: capi-providers-core
releaseName: capi-providers-core
chart: cozy-capi-providers-core
namespace: cozy-cluster-api
privileged: true
dependsOn: [cilium,kubeovn,multus,capi-operator]
- name: capi-providers-cpprovider
releaseName: capi-providers-cpprovider
chart: cozy-capi-providers-cpprovider
namespace: cozy-cluster-api
privileged: true
dependsOn: [cilium,kubeovn,multus,capi-operator]
- name: capi-providers-infraprovider
releaseName: capi-providers-infraprovider
chart: cozy-capi-providers-infraprovider
namespace: cozy-cluster-api
privileged: true
dependsOn: [cilium,kubeovn,multus,capi-operator]
- name: external-dns
releaseName: external-dns
chart: cozy-external-dns
namespace: cozy-external-dns
optional: true
dependsOn: [cilium,kubeovn,multus]
- name: external-secrets-operator
releaseName: external-secrets-operator
chart: cozy-external-secrets-operator
namespace: cozy-external-secrets-operator
optional: true
dependsOn: [cilium,kubeovn,multus]
- name: bootbox
releaseName: bootbox
chart: cozy-bootbox
namespace: cozy-bootbox
privileged: true
optional: true
dependsOn: [cilium,kubeovn,multus]
{{- if $oidcEnabled }}
- name: keycloak
releaseName: keycloak
chart: cozy-keycloak
namespace: cozy-keycloak
dependsOn: [postgres-operator]
- name: keycloak-operator
releaseName: keycloak-operator
chart: cozy-keycloak-operator
namespace: cozy-keycloak
dependsOn: [keycloak]
- name: keycloak-configure
releaseName: keycloak-configure
chart: cozy-keycloak-configure
namespace: cozy-keycloak
dependsOn: [keycloak-operator]
values:
cozystack:
configHash: {{ $cozyConfig | toJson | sha256sum }}
{{- end }}
- name: goldpinger
releaseName: goldpinger
chart: cozy-goldpinger
namespace: cozy-goldpinger
privileged: true
dependsOn: [monitoring-agents]
- name: vertical-pod-autoscaler
releaseName: vertical-pod-autoscaler
chart: cozy-vertical-pod-autoscaler
namespace: cozy-vertical-pod-autoscaler
privileged: true
dependsOn: [monitoring-agents]
values:
vertical-pod-autoscaler:
recommender:
extraArgs:
prometheus-address: http://vmselect-shortterm.tenant-root.svc.{{ $clusterDomain }}:8481/select/0/prometheus/
- name: vertical-pod-autoscaler-crds
releaseName: vertical-pod-autoscaler-crds
chart: cozy-vertical-pod-autoscaler-crds
namespace: cozy-vertical-pod-autoscaler
privileged: true
dependsOn: []
- name: reloader
releaseName: reloader
chart: cozy-reloader
namespace: cozy-reloader
- name: velero
releaseName: velero
chart: cozy-velero
namespace: cozy-velero
privileged: true
optional: true
dependsOn: [monitoring-agents]
- name: hetzner-robotlb
releaseName: robotlb
optional: true
chart: cozy-hetzner-robotlb
namespace: cozy-hetzner-robotlb
dependsOn: [cilium, kubeovn]

View file

@ -1,417 +0,0 @@
{{- $cozyConfig := lookup "v1" "ConfigMap" "cozy-system" "cozystack" }}
{{- $clusterDomain := (index $cozyConfig.data "cluster-domain") | default "cozy.local" }}
{{- $oidcEnabled := index $cozyConfig.data "oidc-enabled" }}
{{- $host := index $cozyConfig.data "root-host" }}
{{- if not $host }}
{{- fail "ERROR need root-host in cozystack ConfigMap" }}
{{- end }}
{{- $apiServerEndpoint := index $cozyConfig.data "api-server-endpoint" }}
{{- if not $apiServerEndpoint }}
{{- fail "ERROR need api-server-endpoint in cozystack ConfigMap" }}
{{- end }}
releases:
- name: cert-manager-crds
releaseName: cert-manager-crds
chart: cozy-cert-manager-crds
namespace: cozy-cert-manager
dependsOn: []
- name: cozystack-api
releaseName: cozystack-api
chart: cozy-cozystack-api
namespace: cozy-system
dependsOn: [cozystack-controller]
values:
cozystackAPI:
localK8sAPIEndpoint:
enabled: false
- name: cozystack-controller
releaseName: cozystack-controller
chart: cozy-cozystack-controller
namespace: cozy-system
dependsOn: []
{{- if eq (index $cozyConfig.data "telemetry-enabled") "false" }}
values:
cozystackController:
disableTelemetry: true
{{- end }}
- name: backup-controller
releaseName: backup-controller
chart: cozy-backup-controller
namespace: cozy-backup-controller
- name: lineage-controller-webhook
releaseName: lineage-controller-webhook
chart: cozy-lineage-controller-webhook
namespace: cozy-system
dependsOn: [cozystack-controller,cert-manager]
- name: cozystack-resource-definition-crd
releaseName: cozystack-resource-definition-crd
chart: cozystack-resource-definition-crd
namespace: cozy-system
dependsOn: [cozystack-api,cozystack-controller]
- name: bootbox-rd
releaseName: bootbox-rd
chart: bootbox-rd
namespace: cozy-system
dependsOn: [cozystack-resource-definition-crd]
- name: bucket-rd
releaseName: bucket-rd
chart: bucket-rd
namespace: cozy-system
dependsOn: [cozystack-resource-definition-crd]
- name: clickhouse-rd
releaseName: clickhouse-rd
chart: clickhouse-rd
namespace: cozy-system
dependsOn: [cozystack-resource-definition-crd]
- name: etcd-rd
releaseName: etcd-rd
chart: etcd-rd
namespace: cozy-system
dependsOn: [cozystack-resource-definition-crd]
- name: ferretdb-rd
releaseName: ferretdb-rd
chart: ferretdb-rd
namespace: cozy-system
dependsOn: [cozystack-resource-definition-crd]
- name: foundationdb-rd
releaseName: foundationdb-rd
chart: foundationdb-rd
namespace: cozy-system
dependsOn: [cozystack-resource-definition-crd]
- name: http-cache-rd
releaseName: http-cache-rd
chart: http-cache-rd
namespace: cozy-system
dependsOn: [cozystack-resource-definition-crd]
- name: info-rd
releaseName: info-rd
chart: info-rd
namespace: cozy-system
dependsOn: [cozystack-resource-definition-crd]
- name: ingress-rd
releaseName: ingress-rd
chart: ingress-rd
namespace: cozy-system
dependsOn: [cozystack-resource-definition-crd]
- name: kafka-rd
releaseName: kafka-rd
chart: kafka-rd
namespace: cozy-system
dependsOn: [cozystack-resource-definition-crd]
- name: kubernetes-rd
releaseName: kubernetes-rd
chart: kubernetes-rd
namespace: cozy-system
dependsOn: [cozystack-resource-definition-crd]
- name: monitoring-rd
releaseName: monitoring-rd
chart: monitoring-rd
namespace: cozy-system
dependsOn: [cozystack-resource-definition-crd]
- name: mysql-rd
releaseName: mysql-rd
chart: mysql-rd
namespace: cozy-system
dependsOn: [cozystack-resource-definition-crd]
- name: nats-rd
releaseName: nats-rd
chart: nats-rd
namespace: cozy-system
dependsOn: [cozystack-resource-definition-crd]
- name: postgres-rd
releaseName: postgres-rd
chart: postgres-rd
namespace: cozy-system
dependsOn: [cozystack-resource-definition-crd]
- name: rabbitmq-rd
releaseName: rabbitmq-rd
chart: rabbitmq-rd
namespace: cozy-system
dependsOn: [cozystack-resource-definition-crd]
- name: redis-rd
releaseName: redis-rd
chart: redis-rd
namespace: cozy-system
dependsOn: [cozystack-resource-definition-crd]
- name: seaweedfs-rd
releaseName: seaweedfs-rd
chart: seaweedfs-rd
namespace: cozy-system
dependsOn: [cozystack-resource-definition-crd]
- name: tcp-balancer-rd
releaseName: tcp-balancer-rd
chart: tcp-balancer-rd
namespace: cozy-system
dependsOn: [cozystack-resource-definition-crd]
- name: tenant-rd
releaseName: tenant-rd
chart: tenant-rd
namespace: cozy-system
dependsOn: [cozystack-resource-definition-crd]
- name: virtual-machine-rd
releaseName: virtual-machine-rd
chart: virtual-machine-rd
namespace: cozy-system
dependsOn: [cozystack-resource-definition-crd]
- name: virtualprivatecloud-rd
releaseName: virtualprivatecloud-rd
chart: virtualprivatecloud-rd
namespace: cozy-system
dependsOn: [cozystack-resource-definition-crd]
- name: vm-disk-rd
releaseName: vm-disk-rd
chart: vm-disk-rd
namespace: cozy-system
dependsOn: [cozystack-resource-definition-crd]
- name: vm-instance-rd
releaseName: vm-instance-rd
chart: vm-instance-rd
namespace: cozy-system
dependsOn: [cozystack-resource-definition-crd]
- name: vpn-rd
releaseName: vpn-rd
chart: vpn-rd
namespace: cozy-system
dependsOn: [cozystack-resource-definition-crd]
- name: cert-manager
releaseName: cert-manager
chart: cozy-cert-manager
namespace: cozy-cert-manager
dependsOn: [cert-manager-crds]
- name: cert-manager-issuers
releaseName: cert-manager-issuers
chart: cozy-cert-manager-issuers
namespace: cozy-cert-manager
dependsOn: [cert-manager]
- name: prometheus-operator-crds
releaseName: prometheus-operator-crds
chart: cozy-prometheus-operator-crds
namespace: cozy-victoria-metrics-operator
dependsOn: []
- name: metrics-server
releaseName: metrics-server
chart: cozy-metrics-server
namespace: cozy-monitoring
dependsOn: [prometheus-operator-crds]
- name: victoria-metrics-operator
releaseName: victoria-metrics-operator
chart: cozy-victoria-metrics-operator
namespace: cozy-victoria-metrics-operator
dependsOn: [cert-manager,prometheus-operator-crds]
- name: monitoring-agents
releaseName: monitoring-agents
chart: cozy-monitoring-agents
namespace: cozy-monitoring
privileged: true
dependsOn: [victoria-metrics-operator, vertical-pod-autoscaler-crds, metrics-server]
values:
scrapeRules:
etcd:
enabled: true
- name: etcd-operator
releaseName: etcd-operator
chart: cozy-etcd-operator
namespace: cozy-etcd-operator
dependsOn: [cert-manager]
- name: grafana-operator
releaseName: grafana-operator
chart: cozy-grafana-operator
namespace: cozy-grafana-operator
dependsOn: []
- name: mariadb-operator
releaseName: mariadb-operator
chart: cozy-mariadb-operator
namespace: cozy-mariadb-operator
dependsOn: [cert-manager,victoria-metrics-operator]
values:
mariadb-operator:
clusterName: {{ $clusterDomain }}
- name: postgres-operator
releaseName: postgres-operator
chart: cozy-postgres-operator
namespace: cozy-postgres-operator
dependsOn: [cert-manager,victoria-metrics-operator]
- name: kafka-operator
releaseName: kafka-operator
chart: cozy-kafka-operator
namespace: cozy-kafka-operator
dependsOn: [victoria-metrics-operator]
values:
strimzi-kafka-operator:
kubernetesServiceDnsDomain: {{ $clusterDomain }}
- name: clickhouse-operator
releaseName: clickhouse-operator
chart: cozy-clickhouse-operator
namespace: cozy-clickhouse-operator
dependsOn: [victoria-metrics-operator]
- name: foundationdb-operator
releaseName: foundationdb-operator
chart: cozy-foundationdb-operator
namespace: cozy-foundationdb-operator
dependsOn: [cert-manager]
- name: rabbitmq-operator
releaseName: rabbitmq-operator
chart: cozy-rabbitmq-operator
namespace: cozy-rabbitmq-operator
dependsOn: []
- name: redis-operator
releaseName: redis-operator
chart: cozy-redis-operator
namespace: cozy-redis-operator
dependsOn: []
- name: piraeus-operator
releaseName: piraeus-operator
chart: cozy-piraeus-operator
namespace: cozy-linstor
dependsOn: [cert-manager]
- name: objectstorage-controller
releaseName: objectstorage-controller
chart: cozy-objectstorage-controller
namespace: cozy-objectstorage-controller
dependsOn: []
- name: telepresence
releaseName: traffic-manager
chart: cozy-telepresence
namespace: cozy-telepresence
optional: true
dependsOn: []
- name: external-dns
releaseName: external-dns
chart: cozy-external-dns
namespace: cozy-external-dns
optional: true
dependsOn: []
- name: external-secrets-operator
releaseName: external-secrets-operator
chart: cozy-external-secrets-operator
namespace: cozy-external-secrets-operator
optional: true
dependsOn: []
- name: dashboard
releaseName: dashboard
chart: cozy-dashboard
namespace: cozy-dashboard
values:
{{- $dashboardKCconfig := lookup "v1" "ConfigMap" "cozy-dashboard" "kubeapps-auth-config" }}
{{- $dashboardKCValues := dig "data" "values.yaml" (dict) $dashboardKCconfig }}
{{- toYaml (deepCopy $dashboardKCValues | mergeOverwrite (fromYaml (include "cozystack.defaultDashboardValues" .))) | nindent 4 }}
{{- if eq $oidcEnabled "true" }}
dependsOn: [keycloak-configure,cozystack-api]
{{- else }}
dependsOn: []
{{- end }}
{{- if $oidcEnabled }}
- name: keycloak
releaseName: keycloak
chart: cozy-keycloak
namespace: cozy-keycloak
dependsOn: [postgres-operator]
- name: keycloak-operator
releaseName: keycloak-operator
chart: cozy-keycloak-operator
namespace: cozy-keycloak
dependsOn: [keycloak]
- name: keycloak-configure
releaseName: keycloak-configure
chart: cozy-keycloak-configure
namespace: cozy-keycloak
dependsOn: [keycloak-operator]
values:
cozystack:
configHash: {{ $cozyConfig | toJson | sha256sum }}
{{- end }}
- name: goldpinger
releaseName: goldpinger
chart: cozy-goldpinger
namespace: cozy-goldpinger
privileged: true
dependsOn: [monitoring-agents]
- name: vertical-pod-autoscaler
releaseName: vertical-pod-autoscaler
chart: cozy-vertical-pod-autoscaler
namespace: cozy-vertical-pod-autoscaler
privileged: true
dependsOn: [monitoring-agents]
values:
vertical-pod-autoscaler:
recommender:
extraArgs:
prometheus-address: http://vmselect-shortterm.tenant-root.svc.{{ $clusterDomain }}:8481/select/0/prometheus/
- name: vertical-pod-autoscaler-crds
releaseName: vertical-pod-autoscaler-crds
chart: cozy-vertical-pod-autoscaler-crds
namespace: cozy-vertical-pod-autoscaler
privileged: true
dependsOn: []
- name: velero
releaseName: velero
chart: cozy-velero
namespace: cozy-velero
privileged: true
optional: true
dependsOn: [monitoring-agents]
- name: hetzner-robotlb
releaseName: robotlb
optional: true
chart: cozy-hetzner-robotlb
namespace: cozy-hetzner-robotlb

View file

@ -0,0 +1,22 @@
---
apiVersion: cozystack.io/v1alpha1
kind: PackageSource
metadata:
name: cozystack.backupstrategy-controller
spec:
sourceRef:
kind: OCIRepository
name: cozystack-packages
namespace: cozy-system
path: /
variants:
- name: default
dependsOn:
- cozystack.networking
components:
- name: backupstrategy-controller
path: system/backupstrategy-controller
install:
privileged: true
namespace: cozy-backupstrategy-controller
releaseName: backupstrategy-controller

View file

@ -2,7 +2,7 @@
apiVersion: cozystack.io/v1alpha1
kind: PackageSource
metadata:
name: cozystack.capi-providers-bootstrap
name: cozystack.capi-provider-bootstrap-kubeadm
spec:
sourceRef:
kind: OCIRepository
@ -10,6 +10,17 @@ spec:
namespace: cozy-system
path: /
variants:
- name: default
dependsOn:
- cozystack.networking
- cozystack.capi-operator
components:
- name: capi-providers-bootstrap
path: system/capi-providers-bootstrap
install:
privileged: true
namespace: cozy-cluster-api
releaseName: capi-providers-bootstrap
- name: kubevirt
dependsOn:
- cozystack.networking

View file

@ -2,7 +2,7 @@
apiVersion: cozystack.io/v1alpha1
kind: PackageSource
metadata:
name: cozystack.capi-providers-core
name: cozystack.capi-provider-core
spec:
sourceRef:
kind: OCIRepository

View file

@ -2,7 +2,7 @@
apiVersion: cozystack.io/v1alpha1
kind: PackageSource
metadata:
name: cozystack.capi-providers-cpprovider
name: cozystack.capi-provider-cp-kamaji
spec:
sourceRef:
kind: OCIRepository
@ -10,6 +10,18 @@ spec:
namespace: cozy-system
path: /
variants:
- name: default
dependsOn:
- cozystack.networking
- cozystack.capi-operator
- cozystack.kamaji
components:
- name: capi-providers-cpprovider
path: system/capi-providers-cpprovider
install:
privileged: true
namespace: cozy-cluster-api
releaseName: capi-providers-cpprovider
- name: kamaji
dependsOn:
- cozystack.networking

View file

@ -2,7 +2,7 @@
apiVersion: cozystack.io/v1alpha1
kind: PackageSource
metadata:
name: cozystack.capi-providers-infraprovider
name: cozystack.capi-provider-infra-kubevirt
spec:
sourceRef:
kind: OCIRepository
@ -10,6 +10,18 @@ spec:
namespace: cozy-system
path: /
variants:
- name: default
dependsOn:
- cozystack.networking
- cozystack.capi-operator
- cozystack.kubevirt
components:
- name: capi-providers-infraprovider
path: system/capi-providers-infraprovider
install:
privileged: true
namespace: cozy-cluster-api
releaseName: capi-providers-infraprovider
- name: kubevirt
dependsOn:
- cozystack.networking

View file

@ -58,6 +58,7 @@ spec:
dependsOn:
- cozystack.networking
- cozystack.keycloak
- cozystack.keycloak-operator
libraries:
- name: cozy-lib
path: library/cozy-lib

View file

@ -0,0 +1,22 @@
---
apiVersion: cozystack.io/v1alpha1
kind: PackageSource
metadata:
name: cozystack.ingress-nginx
spec:
sourceRef:
kind: OCIRepository
name: cozystack-packages
namespace: cozy-system
path: /
variants:
- name: default
dependsOn:
- cozystack.networking
- cozystack.prometheus-operator-crds
components:
- name: ingress-nginx
path: system/ingress-nginx
install:
namespace: cozy-ingress-nginx
releaseName: ingress-nginx

View file

@ -14,9 +14,13 @@ spec:
dependsOn:
- cozystack.networking
- cozystack.postgres-operator
libraries:
- name: cozy-lib
path: library/cozy-lib
components:
- name: keycloak
path: system/keycloak
libraries: ["cozy-lib"]
install:
namespace: cozy-keycloak
releaseName: keycloak

View file

@ -14,10 +14,10 @@ spec:
dependsOn:
- cozystack.networking
- cozystack.capi-operator
- cozystack.capi-providers-bootstrap
- cozystack.capi-providers-core
- cozystack.capi-providers-cpprovider
- cozystack.capi-providers-infraprovider
- cozystack.capi-provider-bootstrap-kubeadm
- cozystack.capi-provider-core
- cozystack.capi-provider-cp-kamaji
- cozystack.capi-provider-infra-kubevirt
libraries:
- name: cozy-lib
path: library/cozy-lib

View file

@ -0,0 +1,22 @@
---
apiVersion: cozystack.io/v1alpha1
kind: PackageSource
metadata:
name: cozystack.metrics-server
spec:
sourceRef:
kind: OCIRepository
name: cozystack-packages
namespace: cozy-system
path: /
variants:
- name: default
dependsOn:
- cozystack.networking
- cozystack.prometheus-operator-crds
components:
- name: metrics-server
path: system/metrics-server
install:
namespace: cozy-metrics-server
releaseName: metrics-server

View file

@ -13,6 +13,7 @@ spec:
- name: default
dependsOn:
- cozystack.networking
- cozystack.postgres-operator
libraries:
- name: cozy-lib
path: library/cozy-lib

View file

@ -13,6 +13,7 @@ spec:
- name: default
dependsOn:
- cozystack.networking
- cozystack.postgres-operator
libraries:
- name: cozy-lib
path: library/cozy-lib

View file

@ -1,108 +1,52 @@
{{/*
Get IP-addresses of master nodes
*/}}
{{- define "cozystack.master-node-ips" -}}
{{- $nodes := lookup "v1" "Node" "" "" -}}
{{- $ips := list -}}
{{- range $node := $nodes.items -}}
{{- if eq (index $node.metadata.labels "node-role.kubernetes.io/control-plane") "" -}}
{{- range $address := $node.status.addresses -}}
{{- if eq $address.type "InternalIP" -}}
{{- $ips = append $ips $address.address -}}
{{- break -}}
{{- end -}}
{{- end -}}
{{- end -}}
{{- define "cozystack.platform.package" -}}
{{- $name := index . 0 -}}
{{- $variant := default "default" (index . 1) -}}
{{- $root := default $ (index . 2) -}}
{{- $components := dict -}}
{{- if gt (len .) 3 -}}
{{- $components = index . 3 -}}
{{- end -}}
{{- $disabled := default (list) $root.Values.bundles.disabledPackages -}}
{{- if not (has $name $disabled) -}}
---
apiVersion: cozystack.io/v1alpha1
kind: Package
metadata:
name: {{ $name }}
spec:
variant: {{ $variant }}
{{- if $components }}
components:
{{ toYaml $components | indent 4 }}
{{- end }}
{{- end -}}
{{ join "," $ips }}
{{- end -}}
{{/*
Get Kubernetes API Endpoint from cozystack deployment
Returns host:port format
*/}}
{{- define "cozystack.kubernetesAPIEndpoint" -}}
{{- $cozyDeployment := lookup "apps/v1" "Deployment" "cozy-system" "cozystack" }}
{{- $cozyContainers := dig "spec" "template" "spec" "containers" list $cozyDeployment }}
{{- $kubernetesServiceHost := "" }}
{{- $kubernetesServicePort := "" }}
{{- range $cozyContainers }}
{{- if eq .name "cozystack" }}
{{- range .env }}
{{- if eq .name "KUBERNETES_SERVICE_HOST" }}
{{- $kubernetesServiceHost = .value }}
{{- end }}
{{- if eq .name "KUBERNETES_SERVICE_PORT" }}
{{- $kubernetesServicePort = .value }}
{{- end }}
{{- end }}
{{- end }}
{{- end }}
{{- if eq $kubernetesServiceHost "" }}
{{- $kubernetesServiceHost = "kubernetes.default.svc" }}
{{- end }}
{{- if eq $kubernetesServicePort "" }}
{{- $kubernetesServicePort = "443" }}
{{- end }}
{{- printf "%s:%s" $kubernetesServiceHost $kubernetesServicePort }}
{{- define "cozystack.platform.package.default" -}}
{{- $name := index . 0 -}}
{{- $root := index . 1 -}}
{{- include "cozystack.platform.package" (list $name "default" $root) }}
{{- end -}}
{{- define "cozystack.defaultDashboardValues" -}}
kubeapps:
{{- if .Capabilities.APIVersions.Has "source.toolkit.fluxcd.io/v1" }}
{{- with (lookup "source.toolkit.fluxcd.io/v1" "HelmRepository" "cozy-public" "").items }}
redis:
master:
podAnnotations:
{{- range $index, $repo := . }}
{{- with (($repo.status).artifact).revision }}
repository.cozystack.io/{{ $repo.metadata.name }}: {{ quote . }}
{{- end }}
{{- end }}
{{- end }}
{{- end }}
frontend:
resourcesPreset: "none"
dashboard:
resourcesPreset: "none"
{{- $cozystackBranding:= lookup "v1" "ConfigMap" "cozy-system" "cozystack-branding" }}
{{- $branding := dig "data" "branding" "" $cozystackBranding }}
{{- if $branding }}
customLocale:
"Kubeapps": {{ $branding }}
{{- end }}
customStyle: |
{{- $logoImage := dig "data" "logo" "" $cozystackBranding }}
{{- if $logoImage }}
.kubeapps-logo {
background-image: {{ $logoImage }}
}
{{- end }}
#serviceaccount-selector {
display: none;
}
.login-moreinfo {
display: none;
}
a[href="#/docs"] {
display: none;
}
.login-group .clr-form-control .clr-control-label {
display: none;
}
.appview-separator div.appview-first-row div.center {
display: none;
}
.appview-separator div.appview-first-row section[aria-labelledby="app-secrets"] {
display: none;
}
.appview-first-row section[aria-labelledby="access-urls-title"] {
width: 100%;
}
.header-version {
display: none;
}
.label.label-info-secondary {
display: none;
}
{{- end }}
{{- define "cozystack.platform.package.optional" -}}
{{- $name := index . 0 -}}
{{- $variant := default "default" (index . 1) -}}
{{- $root := default $ (index . 2) -}}
{{- $disabled := default (list) $root.Values.bundles.disabledPackages -}}
{{- $enabled := default (list) $root.Values.bundles.enabledPackages -}}
{{- if and (has $name $enabled) (not (has $name $disabled)) -}}
---
apiVersion: cozystack.io/v1alpha1
kind: Package
metadata:
name: {{ $name }}
spec:
variant: {{ $variant }}
{{- end -}}
{{- end -}}
{{- define "cozystack.platform.package.optional.default" -}}
{{- $name := index . 0 -}}
{{- $root := index . 1 -}}
{{- include "cozystack.platform.package.optional" (list $name "default" $root) }}
{{- end -}}

View file

@ -1,118 +1,35 @@
{{- $cozyConfig := lookup "v1" "ConfigMap" "cozy-system" "cozystack" }}
{{- $cozystackBranding := lookup "v1" "ConfigMap" "cozy-system" "cozystack-branding" }}
{{- $cozystackScheduling := lookup "v1" "ConfigMap" "cozy-system" "cozystack-scheduling" }}
{{- $kubeRootCa := lookup "v1" "ConfigMap" "kube-system" "kube-root-ca.crt" }}
{{- $bundleName := index $cozyConfig.data "bundle-name" }}
{{- $bundleName := .Values.bundles.system.variant }}
{{- $bundle := tpl (.Files.Get (printf "bundles/%s.yaml" $bundleName)) . | fromYaml }}
{{/* Default values for _cluster config to ensure all required keys exist */}}
{{- $clusterDefaults := dict
"root-host" ""
"bundle-name" ""
"clusterissuer" "http01"
"oidc-enabled" "false"
"expose-services" ""
"expose-ingress" "tenant-root"
"expose-external-ips" ""
"cluster-domain" "cozy.local"
"api-server-endpoint" ""
}}
{{- $clusterConfig := mergeOverwrite $clusterDefaults ($cozyConfig.data | default dict) }}
{{- $host := "example.org" }}
{{- $host := "example.org" }}
{{- if $cozyConfig.data }}
{{- if hasKey $cozyConfig.data "root-host" }}
{{- $host = index $cozyConfig.data "root-host" }}
{{- end }}
{{- end }}
{{- $tenantRoot := dict }}
{{- if .Capabilities.APIVersions.Has "helm.toolkit.fluxcd.io/v2" }}
{{- $tenantRoot = lookup "helm.toolkit.fluxcd.io/v2" "HelmRelease" "tenant-root" "tenant-root" }}
{{- end }}
{{- if and $tenantRoot $tenantRoot.spec $tenantRoot.spec.values $tenantRoot.spec.values.host }}
{{- $host = $tenantRoot.spec.values.host }}
{{- else }}
{{- end }}
---
apiVersion: v1
kind: Namespace
metadata:
annotations:
helm.sh/resource-policy: keep
labels:
tenant.cozystack.io/tenant-root: ""
namespace.cozystack.io/etcd: tenant-root
namespace.cozystack.io/monitoring: tenant-root
namespace.cozystack.io/ingress: tenant-root
namespace.cozystack.io/seaweedfs: tenant-root
namespace.cozystack.io/host: "{{ $host }}"
name: tenant-root
---
apiVersion: v1
kind: Secret
metadata:
name: cozystack-values
namespace: tenant-root
namespace: cozy-system
labels:
reconcile.fluxcd.io/watch: Enabled
type: Opaque
stringData:
values.yaml: |
_cluster:
{{- $clusterConfig | toYaml | nindent 6 }}
{{- with $cozystackBranding.data }}
root-host: {{ .Values.publishing.host | quote }}
bundle-name: {{ .Values.bundles.system.variant | quote }}
clusterissuer: {{ .Values.publishing.certificates.issuerType | quote }}
oidc-enabled: {{ .Values.authentication.oidc.enabled | quote }}
expose-services: {{ .Values.publishing.exposedServices | join "," | quote }}
expose-ingress: {{ .Values.publishing.ingressName | quote }}
expose-external-ips: {{ .Values.publishing.externalIPs | join "," | quote }}
cluster-domain: {{ .Values.networking.clusterDomain | quote }}
api-server-endpoint: {{ .Values.publishing.apiServerEndpoint | quote }}
{{- with .Values.branding }}
branding:
{{- . | toYaml | nindent 8 }}
{{- end }}
{{- with $cozystackScheduling.data }}
{{- with .Values.scheduling }}
scheduling:
{{- . | toYaml | nindent 8 }}
{{- end }}
{{- with $kubeRootCa.data }}
kube-root-ca: {{ index . "ca.crt" | b64enc | quote }}
{{- end }}
_namespace:
etcd: tenant-root
monitoring: tenant-root
ingress: tenant-root
seaweedfs: tenant-root
host: {{ $host | quote }}
---
apiVersion: helm.toolkit.fluxcd.io/v2
kind: HelmRelease
metadata:
name: tenant-root
namespace: tenant-root
labels:
cozystack.io/ui: "true"
apps.cozystack.io/application.kind: Tenant
apps.cozystack.io/application.group: apps.cozystack.io
apps.cozystack.io/application.name: tenant-root
spec:
interval: 0s
releaseName: tenant-root
install:
remediation:
retries: -1
upgrade:
remediation:
retries: -1
chart:
spec:
chart: tenant
version: '>= 0.0.0-0'
sourceRef:
kind: HelmRepository
name: cozystack-apps
namespace: cozy-public
valuesFrom:
- kind: Secret
name: cozystack-values
values:
host: "{{ $host }}"
dependsOn:
{{- range $x := $bundle.releases }}
{{- if has $x.name (list "cilium" "kubeovn") }}
- name: {{ $x.name }}
namespace: {{ $x.namespace }}
{{- end }}
{{- end }}

View file

@ -0,0 +1,20 @@
{{- if and .Values.bundles.iaas.enabled (ne .Values.bundles.system.variant "isp-full") }}
{{- fail "bundles.iaas.enabled can only be true when bundles.system.variant is 'isp-full'" }}
{{- end }}
{{- if and .Values.bundles.iaas.enabled (eq .Values.bundles.system.variant "isp-full") }}
{{include "cozystack.platform.package.default" (list "cozystack.kubevirt" $) }}
{{include "cozystack.platform.package.default" (list "cozystack.kubevirt-cdi" $) }}
{{include "cozystack.platform.package.optional.default" (list "cozystack.gpu-operator" $) }}
{{include "cozystack.platform.package.default" (list "cozystack.kamaji" $) }}
{{include "cozystack.platform.package.default" (list "cozystack.capi-operator" $) }}
{{include "cozystack.platform.package.default" (list "cozystack.capi-provider-bootstrap-kubeadm" $) }}
{{include "cozystack.platform.package.default" (list "cozystack.capi-provider-core" $) }}
{{include "cozystack.platform.package.default" (list "cozystack.capi-provider-cp-kamaji" $) }}
{{include "cozystack.platform.package.default" (list "cozystack.capi-provider-infra-kubevirt" $) }}
{{include "cozystack.platform.package.default" (list "cozystack.bucket-application" $) }}
{{include "cozystack.platform.package" (list "cozystack.kubernetes-application" "kubevirt" $) }}
{{include "cozystack.platform.package" (list "cozystack.virtual-machine-application" "kubevirt" $) }}
{{include "cozystack.platform.package" (list "cozystack.virtualprivatecloud-application" "kubevirt" $) }}
{{include "cozystack.platform.package" (list "cozystack.vm-disk-application" "kubevirt" $) }}
{{include "cozystack.platform.package" (list "cozystack.vm-instance-application" "kubevirt" $) }}
{{- end }}

View file

@ -0,0 +1,8 @@
{{- if and .Values.bundles.naas.enabled (not (or (eq .Values.bundles.system.variant "isp-full") (eq .Values.bundles.system.variant "isp-hosted"))) }}
{{- fail "bundles.naas.enabled can only be true when bundles.system.variant is 'isp-full' or 'isp-hosted'" }}
{{- end }}
{{- if and .Values.bundles.naas.enabled (or (eq .Values.bundles.system.variant "isp-full") (eq .Values.bundles.system.variant "isp-hosted")) }}
{{include "cozystack.platform.package.default" (list "cozystack.http-cache-application" $) }}
{{include "cozystack.platform.package.default" (list "cozystack.tcp-balancer-application" $) }}
{{include "cozystack.platform.package.default" (list "cozystack.vpn-application" $) }}
{{- end }}

View file

@ -0,0 +1,20 @@
{{- if and .Values.bundles.paas.enabled (not (or (eq .Values.bundles.system.variant "isp-full") (eq .Values.bundles.system.variant "isp-hosted"))) }}
{{- fail "bundles.paas.enabled can only be true when bundles.system.variant is 'isp-full' or 'isp-hosted'" }}
{{- end }}
{{- if and .Values.bundles.paas.enabled (or (eq .Values.bundles.system.variant "isp-full") (eq .Values.bundles.system.variant "isp-hosted")) }}
{{include "cozystack.platform.package.default" (list "cozystack.mariadb-operator" $) }}
{{include "cozystack.platform.package.default" (list "cozystack.kafka-operator" $) }}
{{include "cozystack.platform.package.default" (list "cozystack.clickhouse-operator" $) }}
{{include "cozystack.platform.package.default" (list "cozystack.foundationdb-operator" $) }}
{{include "cozystack.platform.package.default" (list "cozystack.rabbitmq-operator" $) }}
{{include "cozystack.platform.package.default" (list "cozystack.redis-operator" $) }}
{{include "cozystack.platform.package.default" (list "cozystack.clickhouse-application" $) }}
{{include "cozystack.platform.package.default" (list "cozystack.ferretdb-application" $) }}
{{include "cozystack.platform.package.default" (list "cozystack.foundationdb-application" $) }}
{{include "cozystack.platform.package.default" (list "cozystack.kafka-application" $) }}
{{include "cozystack.platform.package.default" (list "cozystack.mysql-application" $) }}
{{include "cozystack.platform.package.default" (list "cozystack.nats-application" $) }}
{{include "cozystack.platform.package.default" (list "cozystack.postgres-application" $) }}
{{include "cozystack.platform.package.default" (list "cozystack.rabbitmq-application" $) }}
{{include "cozystack.platform.package.default" (list "cozystack.redis-application" $) }}
{{- end }}

View file

@ -0,0 +1,72 @@
{{- if .Values.bundles.system.enabled }}
# Networking
{{- if eq .Values.bundles.system.variant "isp-full" }}
{{- $networkingComponents := dict -}}
{{- if .Values.networking -}}
{{- $kubeovnValues := dict "kube-ovn" (dict
"ipv4" (dict
"POD_CIDR" .Values.networking.podCIDR
"POD_GATEWAY" .Values.networking.podGateway
"SVC_CIDR" .Values.networking.serviceCIDR
"JOIN_CIDR" .Values.networking.joinCIDR)) -}}
{{- $_ := set $networkingComponents "kubeovn" (dict "values" $kubeovnValues) -}}
{{- end -}}
{{include "cozystack.platform.package" (list "cozystack.networking" "kubeovn-cilium" $ $networkingComponents) }}
{{include "cozystack.platform.package.default" (list "cozystack.kubeovn-webhook" $) }}
{{include "cozystack.platform.package.default" (list "cozystack.kubeovn-plunger" $) }}
{{include "cozystack.platform.package.default" (list "cozystack.cozy-proxy" $) }}
{{include "cozystack.platform.package.default" (list "cozystack.multus" $) }}
{{include "cozystack.platform.package.default" (list "cozystack.metallb" $) }}
{{include "cozystack.platform.package.default" (list "cozystack.reloader" $) }}
{{include "cozystack.platform.package.default" (list "cozystack.linstor" $) }}
{{include "cozystack.platform.package.default" (list "cozystack.snapshot-controller" $) }}
{{- end }}
{{- if eq .Values.bundles.system.variant "isp-hosted" }}
{{include "cozystack.platform.package" (list "cozystack.networking" "noop" $) }}
{{- end }}
# Cozystack Engine
{{- if .Values.authentication.oidc.enabled }}
{{include "cozystack.platform.package" (list "cozystack.cozystack-engine" "oidc" $) }}
{{include "cozystack.platform.package.default" (list "cozystack.keycloak" $) }}
{{include "cozystack.platform.package.default" (list "cozystack.keycloak-operator" $) }}
{{- else }}
{{include "cozystack.platform.package" (list "cozystack.cozystack-engine" "default" $) }}
{{- end }}
# Common Packages
{{include "cozystack.platform.package.default" (list "cozystack.cert-manager" $) }}
{{include "cozystack.platform.package.default" (list "cozystack.victoria-metrics-operator" $) }}
{{- $tenantComponents := dict -}}
{{- $tenantClusterValues := dict "_cluster" (dict "oidc-enabled" (ternary "true" "false" .Values.authentication.oidc.enabled)) -}}
{{- $_ := set $tenantComponents "tenant" (dict "values" $tenantClusterValues) }}
{{include "cozystack.platform.package" (list "cozystack.tenant-application" "default" $ $tenantComponents) }}
{{include "cozystack.platform.package.default" (list "cozystack.ingress-application" $) }}
{{include "cozystack.platform.package.default" (list "cozystack.seaweedfs-application" $) }}
{{include "cozystack.platform.package.default" (list "cozystack.info-application" $) }}
{{include "cozystack.platform.package.default" (list "cozystack.monitoring-application" $) }}
{{include "cozystack.platform.package.default" (list "cozystack.etcd-application" $) }}
{{include "cozystack.platform.package.default" (list "cozystack.cozystack-basics" $) }}
{{include "cozystack.platform.package.optional.default" (list "cozystack.backupstrategy-controller" $) }}
{{include "cozystack.platform.package.default" (list "cozystack.backup-controller" $) }}
{{include "cozystack.platform.package.optional.default" (list "cozystack.velero" $) }}
{{include "cozystack.platform.package.default" (list "cozystack.vertical-pod-autoscaler" $) }}
{{include "cozystack.platform.package.default" (list "cozystack.monitoring-agents" $) }}
{{include "cozystack.platform.package.default" (list "cozystack.goldpinger" $) }}
{{include "cozystack.platform.package.default" (list "cozystack.prometheus-operator-crds" $) }}
{{include "cozystack.platform.package.default" (list "cozystack.grafana-operator" $) }}
{{include "cozystack.platform.package.default" (list "cozystack.etcd-operator" $) }}
{{include "cozystack.platform.package.default" (list "cozystack.postgres-operator" $) }}
{{include "cozystack.platform.package.default" (list "cozystack.objectstorage-controller" $) }}
# Optional System Packages (controlled via bundles.enabledPackages)
{{include "cozystack.platform.package.optional.default" (list "cozystack.nfs-driver" $) }}
{{include "cozystack.platform.package.optional.default" (list "cozystack.telepresence" $) }}
{{include "cozystack.platform.package.optional.default" (list "cozystack.external-dns" $) }}
{{include "cozystack.platform.package.optional.default" (list "cozystack.external-secrets-operator" $) }}
{{include "cozystack.platform.package.optional.default" (list "cozystack.bootbox" $) }}
{{include "cozystack.platform.package.optional.default" (list "cozystack.hetzner-robotlb" $) }}
{{- end }}

View file

@ -0,0 +1,35 @@
{{- if .Values.registries.mirrors }}
apiVersion: v1
kind: Secret
metadata:
name: patch-containerd
namespace: cozy-system
type: Opaque
stringData:
{{- range $registry, $mirror := .Values.registries.mirrors }}
{{- if $mirror.endpoints }}
{{ $registry }}.toml: |
server = "https://{{ $registry }}"
{{- range $endpoint := $mirror.endpoints }}
[host."{{ $endpoint }}"]
capabilities = ["pull", "resolve"]
{{- $endpointConfig := index $.Values.registries.config $endpoint }}
{{- if $endpointConfig }}
{{- if $endpointConfig.tls }}
{{- if $endpointConfig.tls.insecureSkipVerify }}
skip_verify = true
{{- end }}
{{- end }}
{{- if $endpointConfig.auth }}
[host."{{ $endpoint }}".auth]
username = "{{ $endpointConfig.auth.username }}"
password = "{{ $endpointConfig.auth.password }}"
{{- end }}
{{- else }}
skip_verify = true
{{- end }}
{{- end }}
{{- end }}
{{- end }}
{{- end }}

View file

@ -1,73 +0,0 @@
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: cozystack-assets
namespace: cozy-system
labels:
app: cozystack-assets
spec:
serviceName: cozystack-assets
replicas: 1
selector:
matchLabels:
app: cozystack-assets
template:
metadata:
labels:
app: cozystack-assets
spec:
hostNetwork: true
containers:
- name: assets-server
image: "{{ .Values.assets.image }}"
args:
- "-dir=/cozystack/assets"
- "-address=:8123"
ports:
- name: http
containerPort: 8123
hostPort: 8123
tolerations:
- operator: Exists
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: cozystack-assets-reader
namespace: cozy-system
rules:
- apiGroups: [""]
resources:
- pods/proxy
resourceNames:
- cozystack-assets-0
verbs:
- get
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: cozystack-assets-reader
namespace: cozy-system
subjects:
- kind: User
name: cozystack-assets-reader
apiGroup: rbac.authorization.k8s.io
roleRef:
kind: Role
name: cozystack-assets-reader
apiGroup: rbac.authorization.k8s.io
---
apiVersion: v1
kind: Service
metadata:
name: cozystack-assets
namespace: cozy-system
spec:
ports:
- name: http
port: 80
targetPort: 8123
selector:
app: cozystack-assets
type: ClusterIP

View file

@ -0,0 +1,11 @@
{{- $configMap := lookup "v1" "ConfigMap" .Release.Namespace "cozystack-version" }}
{{- if not $configMap }}
---
apiVersion: v1
kind: ConfigMap
metadata:
name: cozystack-version
namespace: {{ .Release.Namespace }}
data:
version: {{ .Values.migrations.targetVersion | quote }}
{{- end }}

View file

@ -1,100 +0,0 @@
{{- $cozyConfig := lookup "v1" "ConfigMap" "cozy-system" "cozystack" }}
{{- $bundleName := index $cozyConfig.data "bundle-name" }}
{{- $bundle := tpl (.Files.Get (printf "bundles/%s.yaml" $bundleName)) . | fromYaml }}
{{- $dependencyNamespaces := dict }}
{{- $disabledComponents := splitList "," ((index $cozyConfig.data "bundle-disable") | default "") }}
{{- $enabledComponents := splitList "," ((index $cozyConfig.data "bundle-enable") | default "") }}
{{- $oidcEnabled := (index (default dict $cozyConfig.data) "oidc-enabled") | default "false" | eq "true" }}
{{/* collect dependency namespaces from releases */}}
{{- range $x := $bundle.releases }}
{{- $_ := set $dependencyNamespaces $x.name $x.namespace }}
{{- end }}
{{- range $x := $bundle.releases }}
{{- $shouldInstall := true }}
{{- $shouldDelete := false }}
{{- $notEnabledOptionalComponent := and ($x.optional) (not (has $x.name $enabledComponents)) }}
{{- $disabledComponent := has $x.name $disabledComponents }}
{{- $isKeycloakComponent := or (eq $x.name "keycloak") (eq $x.name "keycloak-operator") (eq $x.name "keycloak-configure") }}
{{- if and $isKeycloakComponent (not $oidcEnabled) }}
{{- $shouldInstall = false }}
{{- if $.Capabilities.APIVersions.Has "helm.toolkit.fluxcd.io/v2" }}
{{- if lookup "helm.toolkit.fluxcd.io/v2" "HelmRelease" $x.namespace $x.name }}
{{- $shouldDelete = true }}
{{- end }}
{{- end }}
{{- else if or $disabledComponent $notEnabledOptionalComponent }}
{{- $shouldInstall = false }}
{{- if $.Capabilities.APIVersions.Has "helm.toolkit.fluxcd.io/v2" }}
{{- if lookup "helm.toolkit.fluxcd.io/v2" "HelmRelease" $x.namespace $x.name }}
{{- $shouldDelete = true }}
{{- end }}
{{- end }}
{{- end }}
{{- if or $shouldInstall $shouldDelete }}
---
apiVersion: helm.toolkit.fluxcd.io/v2
kind: HelmRelease
metadata:
name: {{ $x.name }}
namespace: {{ $x.namespace }}
labels:
cozystack.io/repository: system
cozystack.io/system-app: "true"
{{- if $shouldDelete }}
cozystack.io/marked-for-deletion: "true"
{{- end }}
spec:
interval: 5m
releaseName: {{ $x.releaseName | default $x.name }}
install:
crds: CreateReplace
remediation:
retries: -1
upgrade:
crds: CreateReplace
remediation:
retries: -1
chart:
spec:
chart: {{ $x.chart }}
reconcileStrategy: Revision
sourceRef:
kind: HelmRepository
name: cozystack-system
namespace: cozy-system
version: '>= 0.0.0-0'
{{- with $x.valuesFiles }}
valuesFiles:
{{- toYaml $x.valuesFiles | nindent 6 }}
{{- end }}
{{- $values := dict }}
{{- with $x.values }}
{{- $values = merge . $values }}
{{- end }}
{{- with index $cozyConfig.data (printf "values-%s" $x.name) }}
{{- $values = mergeOverwrite $values (fromYaml .) }}
{{- end }}
{{- with $values }}
values:
{{- toYaml . | nindent 4}}
{{- end }}
valuesFrom:
- kind: Secret
name: cozystack-values
{{- with $x.dependsOn }}
dependsOn:
{{- range $dep := . }}
{{- if not (has $dep $disabledComponents) }}
- name: {{ $dep }}
namespace: {{ index $dependencyNamespaces $dep }}
{{- end }}
{{- end }}
{{- end }}
{{- end }}
{{- end }}

View file

@ -1,40 +0,0 @@
---
apiVersion: source.toolkit.fluxcd.io/v1
kind: HelmRepository
metadata:
name: cozystack-system
namespace: cozy-system
labels:
cozystack.io/repository: system
spec:
interval: 5m0s
url: https://{{ include "cozystack.kubernetesAPIEndpoint" . }}/api/v1/namespaces/cozy-system/pods/cozystack-assets-0/proxy/repos/system
certSecretRef:
name: cozystack-assets-tls
---
apiVersion: source.toolkit.fluxcd.io/v1
kind: HelmRepository
metadata:
name: cozystack-apps
namespace: cozy-public
labels:
cozystack.io/ui: "true"
cozystack.io/repository: apps
spec:
interval: 5m0s
url: https://{{ include "cozystack.kubernetesAPIEndpoint" . }}/api/v1/namespaces/cozy-system/pods/cozystack-assets-0/proxy/repos/apps
certSecretRef:
name: cozystack-assets-tls
---
apiVersion: source.toolkit.fluxcd.io/v1
kind: HelmRepository
metadata:
name: cozystack-extra
namespace: cozy-public
labels:
cozystack.io/repository: extra
spec:
interval: 5m0s
url: https://{{ include "cozystack.kubernetesAPIEndpoint" . }}/api/v1/namespaces/cozy-system/pods/cozystack-assets-0/proxy/repos/extra
certSecretRef:
name: cozystack-assets-tls

View file

@ -0,0 +1,69 @@
{{- if .Values.migrations.enabled }}
{{- $shouldRunMigrationHook := false }}
{{- $currentVersion := 0 }}
{{- $targetVersion := .Values.migrations.targetVersion | int }}
{{- $configMap := lookup "v1" "ConfigMap" .Release.Namespace "cozystack-version" }}
{{- if $configMap }}
{{- $currentVersion = dig "data" "version" "0" $configMap | int }}
{{- if lt $currentVersion $targetVersion }}
{{- $shouldRunMigrationHook = true }}
{{- end }}
{{- end }}
{{- if $shouldRunMigrationHook }}
---
apiVersion: batch/v1
kind: Job
metadata:
name: cozystack-migration-hook
annotations:
helm.sh/hook: pre-upgrade,pre-install
helm.sh/hook-weight: "1"
helm.sh/hook-delete-policy: before-hook-creation
spec:
backoffLimit: 3
template:
metadata:
labels:
policy.cozystack.io/allow-to-apiserver: "true"
spec:
serviceAccountName: cozystack-migration-hook
containers:
- name: migration
image: {{ .Values.migrations.image }}
env:
- name: NAMESPACE
value: {{ .Release.Namespace | quote }}
- name: CURRENT_VERSION
value: {{ $currentVersion | quote }}
- name: TARGET_VERSION
value: {{ $targetVersion | quote }}
restartPolicy: Never
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
annotations:
helm.sh/hook: pre-upgrade,pre-install
helm.sh/hook-weight: "1"
helm.sh/hook-delete-policy: hook-succeeded,before-hook-creation
name: cozystack-migration-hook
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: cozystack-migration-hook
namespace: {{ .Release.Namespace | quote }}
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: cozystack-migration-hook
annotations:
helm.sh/hook: pre-upgrade,pre-install
helm.sh/hook-weight: "1"
helm.sh/hook-delete-policy: hook-succeeded,before-hook-creation
{{- end }}
{{- end }}

View file

@ -1,76 +0,0 @@
{{- $cozyConfig := lookup "v1" "ConfigMap" "cozy-system" "cozystack" }}
{{- $cozystackBranding := lookup "v1" "ConfigMap" "cozy-system" "cozystack-branding" }}
{{- $cozystackScheduling := lookup "v1" "ConfigMap" "cozy-system" "cozystack-scheduling" }}
{{- $bundleName := index $cozyConfig.data "bundle-name" }}
{{/* Default values for _cluster config to ensure all required keys exist */}}
{{- $clusterDefaults := dict
"root-host" ""
"bundle-name" ""
"clusterissuer" "http01"
"oidc-enabled" "false"
"expose-services" ""
"expose-ingress" "tenant-root"
"expose-external-ips" ""
"cluster-domain" "cozy.local"
"api-server-endpoint" ""
}}
{{- $clusterConfig := mergeOverwrite $clusterDefaults ($cozyConfig.data | default dict) }}
{{- $bundle := tpl (.Files.Get (printf "bundles/%s.yaml" $bundleName)) . | fromYaml }}
{{- $disabledComponents := splitList "," ((index $cozyConfig.data "bundle-disable") | default "") }}
{{- $enabledComponents := splitList "," ((index $cozyConfig.data "bundle-enable") | default "") }}
{{- $namespaces := dict }}
{{/* collect namespaces from releases */}}
{{- range $x := $bundle.releases }}
{{- if not (hasKey $namespaces $x.namespace) }}
{{- if not (has $x.name $disabledComponents) }}
{{- if or (not $x.optional) (and ($x.optional) (has $x.name $enabledComponents)) }}
{{- $_ := set $namespaces $x.namespace false }}
{{- end }}
{{- end }}
{{- end }}
{{/* if at least one release requires a privileged namespace, then it should be privileged */}}
{{- if or $x.privileged (index $namespaces $x.namespace) }}
{{- $_ := set $namespaces $x.namespace true }}
{{- end }}
{{- end }}
{{/* Add extra namespaces */}}
{{- $_ := set $namespaces "cozy-system" true }}
{{- $_ := set $namespaces "cozy-public" false }}
{{- range $namespace, $privileged := $namespaces }}
---
apiVersion: v1
kind: Namespace
metadata:
annotations:
"helm.sh/resource-policy": keep
labels:
cozystack.io/system: "true"
{{- if $privileged }}
pod-security.kubernetes.io/enforce: privileged
{{- end }}
name: {{ $namespace }}
---
apiVersion: v1
kind: Secret
metadata:
name: cozystack-values
namespace: {{ $namespace }}
labels:
reconcile.fluxcd.io/watch: Enabled
type: Opaque
stringData:
values.yaml: |
_cluster:
{{- $clusterConfig | toYaml | nindent 6 }}
{{- with $cozystackBranding.data }}
branding:
{{- . | toYaml | nindent 8 }}
{{- end }}
{{- with $cozystackScheduling.data }}
scheduling:
{{- . | toYaml | nindent 8 }}
{{- end }}
{{- end }}

View file

@ -0,0 +1,17 @@
{{- $sourceRef := .Values.sourceRef }}
{{- $apiVersion := "source.toolkit.fluxcd.io/v1" }}
{{- $kind := $sourceRef.kind }}
{{- $name := $sourceRef.name }}
{{- $namespace := $sourceRef.namespace }}
{{- $sourceRepo := lookup $apiVersion $kind $namespace $name }}
{{- if not $sourceRepo }}
{{- fail (printf "Source repository %s/%s of kind %s not found in namespace %s" $namespace $name $kind $namespace) }}
{{- end }}
---
apiVersion: {{ $apiVersion }}
kind: {{ $kind }}
metadata:
name: cozystack-packages
namespace: cozy-system
spec:
{{- $sourceRepo.spec | toYaml | nindent 2 }}

View file

@ -0,0 +1,11 @@
{{- if .Values.scheduling.globalAppTopologySpreadConstraints }}
---
apiVersion: v1
kind: ConfigMap
metadata:
name: cozystack-scheduling
namespace: cozy-system
data:
globalAppTopologySpreadConstraints: |
{{- toYaml .Values.scheduling.globalAppTopologySpreadConstraints | nindent 4 }}
{{- end }}

View file

@ -1,6 +1,4 @@
{{/*
{{- range $path, $_ := .Files.Glob "sources/*.yaml" }}
---
{{ $.Files.Get $path }}
{{- end }}
*/}}

View file

@ -0,0 +1,12 @@
migrations:
enabled: true
bundles:
system:
enabled: true
variant: "isp-full"
iaas:
enabled: true
paas:
enabled: true
naas:
enabled: true

View file

@ -0,0 +1,12 @@
migrations:
enabled: true
bundles:
system:
enabled: false
variant: "isp-hosted"
iaas:
enabled: false
paas:
enabled: true
naas:
enabled: true

View file

@ -1,2 +1,91 @@
assets:
image: ghcr.io/cozystack/cozystack/cozystack-assets:v0.40.2@sha256:02730e6a434a8367a970c00a1feaa31f19a856641f6c1d085afed88e9c0b8b2b
sourceRef:
kind: OCIRepository
name: cozystack-platform
namespace: cozy-system
path: /
migrations:
enabled: false
image: ghcr.io/cozystack/cozystack/platform-migrations:latest
targetVersion: 23
# Bundle deployment configuration
bundles:
system:
enabled: false
variant: "isp-full" # Options: "isp-full", "isp-hosted", "distro-full"
iaas:
enabled: false
paas:
enabled: false
naas:
enabled: false
disabledPackages: []
enabledPackages: []
# Network configuration
networking:
clusterDomain: "cozy.local"
podCIDR: "10.244.0.0/16"
podGateway: "10.244.0.1"
serviceCIDR: "10.96.0.0/16"
joinCIDR: "100.64.0.0/16"
# Service publishing and ingress configuration
publishing:
host: "example.org"
ingressName: tenant-root
exposedServices:
- api
- dashboard
- vm-exportproxy
- cdi-uploadproxy
apiServerEndpoint: "" # example: "https://api.example.org"
externalIPs: []
certificates:
issuerType: http01 # "http01" or "cloudflare"
# Authentication configuration
authentication:
oidc:
enabled: false
dashboard:
extraRedirectUris: []
# Pod scheduling configuration
scheduling:
topologySpreadConstraints: []
# UI branding configuration
branding:
dashboard: {}
keycloak: {}
# Container registry mirrors configuration
#
# Example:
# registries:
# mirrors:
# docker.io:
# endpoints:
# - http://10.0.0.1:8082
# ghcr.io:
# endpoints:
# - http://10.0.0.1:8083
# gcr.io:
# endpoints:
# - http://10.0.0.1:8084
# registry.k8s.io:
# endpoints:
# - http://10.0.0.1:8085
# quay.io:
# endpoints:
# - http://10.0.0.1:8086
# cr.fluentbit.io:
# endpoints:
# - http://10.0.0.1:8087
# docker-registry3.mariadb.com:
# endpoints:
# - http://10.0.0.1:8088
# config:
# "10.0.0.1:8082":
# tls:
# insecureSkipVerify: true
registries: {}
# Resource allocation ratios
resources:
cpuAllocationRatio: 10
memoryAllocationRatio: 1
ephemeralStorageAllocationRatio: 40