From 9f5230a3424f6328d6bce4dce639f77b2b421173 Mon Sep 17 00:00:00 2001 From: Andrei Kvapil Date: Wed, 23 Apr 2025 16:55:04 +0200 Subject: [PATCH] [kubernetes] Refactor controlPlane settings Signed-off-by: Andrei Kvapil --- packages/apps/kubernetes/Makefile | 4 + packages/apps/kubernetes/README.md | 22 +- .../apps/kubernetes/templates/cluster.yaml | 32 +- .../templates/helmreleases/cert-manager.yaml | 18 +- .../templates/helmreleases/fluxcd.yaml | 19 +- .../templates/helmreleases/gpu-operator.yaml | 18 +- .../templates/helmreleases/ingress-nginx.yaml | 39 +- .../helmreleases/vertical-pod-autoscaler.yaml | 50 ++- packages/apps/kubernetes/values.schema.json | 406 ++++++++++-------- packages/apps/kubernetes/values.yaml | 84 ++-- 10 files changed, 326 insertions(+), 366 deletions(-) diff --git a/packages/apps/kubernetes/Makefile b/packages/apps/kubernetes/Makefile index 03799c2b..1eb92226 100644 --- a/packages/apps/kubernetes/Makefile +++ b/packages/apps/kubernetes/Makefile @@ -6,6 +6,10 @@ include ../../../scripts/package.mk generate: readme-generator -v values.yaml -s values.schema.json -r README.md + yq -o json -i '.properties.controlPlane.properties.apiServer.properties.resourcesPreset.enum = ["none","nano","micro","small","medium","large","xlarge","2xlarge"]' values.schema.json + yq -o json -i '.properties.controlPlane.properties.controllerManager.properties.resourcesPreset.enum = ["none","nano","micro","small","medium","large","xlarge","2xlarge"]' values.schema.json + yq -o json -i '.properties.controlPlane.properties.scheduler.properties.resourcesPreset.enum = ["none","nano","micro","small","medium","large","xlarge","2xlarge"]' values.schema.json + yq -o json -i '.properties.controlPlane.properties.konnectivity.properties.server.properties.resourcesPreset.enum = ["none","nano","micro","small","medium","large","xlarge","2xlarge"]' values.schema.json image: image-ubuntu-container-disk image-kubevirt-cloud-provider image-kubevirt-csi-driver image-cluster-autoscaler diff --git a/packages/apps/kubernetes/README.md b/packages/apps/kubernetes/README.md index 3067a323..94a4ff6e 100644 --- a/packages/apps/kubernetes/README.md +++ b/packages/apps/kubernetes/README.md @@ -55,18 +55,18 @@ kubectl get secret -n kubernetes--admin-kubeconfig -o g | `addons.monitoringAgents.valuesOverride` | Custom values to override | `{}` | | `addons.verticalPodAutoscaler.valuesOverride` | Custom values to override | `{}` | -### Kamaji control plane +### Kubernetes control plane configuration -| Name | Description | Value | -| --------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- | -| `kamajiControlPlane.apiServer.resources` | Resources | `{}` | -| `kamajiControlPlane.apiServer.resourcesPreset` | Set container resources according to one common preset (allowed values: none, nano, micro, small, medium, large, xlarge, 2xlarge). This is ignored if resources is set (resources is recommended for production). | `small` | -| `kamajiControlPlane.controllerManager.resources` | Resources | `{}` | -| `kamajiControlPlane.controllerManager.resourcesPreset` | Set container resources according to one common preset (allowed values: none, nano, micro, small, medium, large, xlarge, 2xlarge). This is ignored if resources is set (resources is recommended for production). | `micro` | -| `kamajiControlPlane.scheduler.resources` | Resources | `{}` | -| `kamajiControlPlane.scheduler.resourcesPreset` | Set container resources according to one common preset (allowed values: none, nano, micro, small, medium, large, xlarge, 2xlarge). This is ignored if resources is set (resources is recommended for production). | `micro` | -| `kamajiControlPlane.addons.konnectivity.server.resources` | Resources | `{}` | -| `kamajiControlPlane.addons.konnectivity.server.resourcesPreset` | Set container resources according to one common preset (allowed values: none, nano, micro, small, medium, large, xlarge, 2xlarge). This is ignored if resources is set (resources is recommended for production). | `micro` | +| Name | Description | Value | +| -------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- | +| `controlPlane.apiServer.resourcesPreset` | Set container resources according to one common preset (allowed values: none, nano, micro, small, medium, large, xlarge, 2xlarge). This is ignored if resources is set (resources is recommended for production). | `small` | +| `controlPlane.apiServer.resources` | Resources | `{}` | +| `controlPlane.controllerManager.resources` | Resources | `{}` | +| `controlPlane.controllerManager.resourcesPreset` | Set container resources according to one common preset (allowed values: none, nano, micro, small, medium, large, xlarge, 2xlarge). This is ignored if resources is set (resources is recommended for production). | `micro` | +| `controlPlane.scheduler.resourcesPreset` | Set container resources according to one common preset (allowed values: none, nano, micro, small, medium, large, xlarge, 2xlarge). This is ignored if resources is set (resources is recommended for production). | `micro` | +| `controlPlane.scheduler.resources` | Resources | `{}` | +| `controlPlane.konnectivity.server.resourcesPreset` | Set container resources according to one common preset (allowed values: none, nano, micro, small, medium, large, xlarge, 2xlarge). This is ignored if resources is set (resources is recommended for production). | `micro` | +| `controlPlane.konnectivity.server.resources` | Resources | `{}` | ## U Series diff --git a/packages/apps/kubernetes/templates/cluster.yaml b/packages/apps/kubernetes/templates/cluster.yaml index 385adacc..f6cbb7a0 100644 --- a/packages/apps/kubernetes/templates/cluster.yaml +++ b/packages/apps/kubernetes/templates/cluster.yaml @@ -110,22 +110,22 @@ metadata: kamaji.clastix.io/kubeconfig-secret-key: "super-admin.svc" spec: apiServer: - {{- if .Values.kamajiControlPlane.apiServer.resources }} - resources: {{- toYaml .Values.kamajiControlPlane.apiServer.resources | nindent 6 }} - {{- else if ne .Values.kamajiControlPlane.apiServer.resourcesPreset "none" }} - resources: {{- include "resources.preset" (dict "type" .Values.kamajiControlPlane.apiServer.resourcesPreset "Release" .Release) | nindent 6 }} + {{- if .Values.controlPlane.apiServer.resources }} + resources: {{- toYaml .Values.controlPlane.apiServer.resources | nindent 6 }} + {{- else if ne .Values.controlPlane.apiServer.resourcesPreset "none" }} + resources: {{- include "resources.preset" (dict "type" .Values.controlPlane.apiServer.resourcesPreset "Release" .Release) | nindent 6 }} {{- end }} controllerManager: - {{- if .Values.kamajiControlPlane.controllerManager.resources }} - resources: {{- toYaml .Values.kamajiControlPlane.controllerManager.resources | nindent 6 }} - {{- else if ne .Values.kamajiControlPlane.controllerManager.resourcesPreset "none" }} - resources: {{- include "resources.preset" (dict "type" .Values.kamajiControlPlane.controllerManager.resourcesPreset "Release" .Release) | nindent 6 }} + {{- if .Values.controlPlane.controllerManager.resources }} + resources: {{- toYaml .Values.controlPlane.controllerManager.resources | nindent 6 }} + {{- else if ne .Values.controlPlane.controllerManager.resourcesPreset "none" }} + resources: {{- include "resources.preset" (dict "type" .Values.controlPlane.controllerManager.resourcesPreset "Release" .Release) | nindent 6 }} {{- end }} scheduler: - {{- if .Values.kamajiControlPlane.scheduler.resources }} - resources: {{- toYaml .Values.kamajiControlPlane.scheduler.resources | nindent 6 }} - {{- else if ne .Values.kamajiControlPlane.scheduler.resourcesPreset "none" }} - resources: {{- include "resources.preset" (dict "type" .Values.kamajiControlPlane.scheduler.resourcesPreset "Release" .Release) | nindent 6 }} + {{- if .Values.controlPlane.scheduler.resources }} + resources: {{- toYaml .Values.controlPlane.scheduler.resources | nindent 6 }} + {{- else if ne .Values.controlPlane.scheduler.resourcesPreset "none" }} + resources: {{- include "resources.preset" (dict "type" .Values.controlPlane.scheduler.resourcesPreset "Release" .Release) | nindent 6 }} {{- end }} dataStoreName: "{{ $etcd }}" addons: @@ -135,10 +135,10 @@ spec: konnectivity: server: port: 8132 - {{- if .Values.kamajiControlPlane.addons.konnectivity.server.resources }} - resources: {{- toYaml .Values.kamajiControlPlane.addons.konnectivity.server.resources | nindent 10 }} - {{- else if ne .Values.kamajiControlPlane.addons.konnectivity.server.resourcesPreset "none" }} - resources: {{- include "resources.preset" (dict "type" .Values.kamajiControlPlane.addons.konnectivity.server.resourcesPreset "Release" .Release) | nindent 10 }} + {{- if .Values.controlPlane.konnectivity.server.resources }} + resources: {{- toYaml .Values.controlPlane.konnectivity.server.resources | nindent 10 }} + {{- else if ne .Values.controlPlane.konnectivity.server.resourcesPreset "none" }} + resources: {{- include "resources.preset" (dict "type" .Values.controlPlane.konnectivity.server.resourcesPreset "Release" .Release) | nindent 10 }} {{- end }} kubelet: cgroupfs: systemd diff --git a/packages/apps/kubernetes/templates/helmreleases/cert-manager.yaml b/packages/apps/kubernetes/templates/helmreleases/cert-manager.yaml index 3d8bbaa0..3eda96b3 100644 --- a/packages/apps/kubernetes/templates/helmreleases/cert-manager.yaml +++ b/packages/apps/kubernetes/templates/helmreleases/cert-manager.yaml @@ -30,11 +30,9 @@ spec: upgrade: remediation: retries: -1 - {{- if .Values.addons.certManager.valuesOverride }} - valuesFrom: - - kind: Secret - name: {{ .Release.Name }}-cert-manager-values-override - valuesKey: values + {{- with .Values.addons.certManager.valuesOverride }} + values: + {{- toYaml . | nindent 4 }} {{- end }} dependsOn: @@ -47,13 +45,3 @@ spec: - name: {{ .Release.Name }}-cert-manager-crds namespace: {{ .Release.Namespace }} {{- end }} -{{- if .Values.addons.certManager.valuesOverride }} ---- -apiVersion: v1 -kind: Secret -metadata: - name: {{ .Release.Name }}-cert-manager-values-override -stringData: - values: | - {{- toYaml .Values.addons.certManager.valuesOverride | nindent 4 }} -{{- end }} diff --git a/packages/apps/kubernetes/templates/helmreleases/fluxcd.yaml b/packages/apps/kubernetes/templates/helmreleases/fluxcd.yaml index 1a4f982a..c6d514de 100644 --- a/packages/apps/kubernetes/templates/helmreleases/fluxcd.yaml +++ b/packages/apps/kubernetes/templates/helmreleases/fluxcd.yaml @@ -73,11 +73,9 @@ spec: upgrade: remediation: retries: -1 - {{- if .Values.addons.fluxcd.valuesOverride }} - valuesFrom: - - kind: Secret - name: {{ .Release.Name }}-fluxcd-values-override - valuesKey: values + {{- with .Values.addons.fluxcd.valuesOverride }} + values: + {{- toYaml . | nindent 4 }} {{- end }} dependsOn: {{- if lookup "helm.toolkit.fluxcd.io/v2" "HelmRelease" .Release.Namespace .Release.Name }} @@ -89,14 +87,3 @@ spec: - name: {{ .Release.Name }}-fluxcd-operator namespace: {{ .Release.Namespace }} {{- end }} - -{{- if .Values.addons.fluxcd.valuesOverride }} ---- -apiVersion: v1 -kind: Secret -metadata: - name: {{ .Release.Name }}-fluxcd-values-override -stringData: - values: | - {{- toYaml .Values.addons.fluxcd.valuesOverride | nindent 4 }} -{{- end }} diff --git a/packages/apps/kubernetes/templates/helmreleases/gpu-operator.yaml b/packages/apps/kubernetes/templates/helmreleases/gpu-operator.yaml index 9a003e12..a013b866 100644 --- a/packages/apps/kubernetes/templates/helmreleases/gpu-operator.yaml +++ b/packages/apps/kubernetes/templates/helmreleases/gpu-operator.yaml @@ -30,11 +30,9 @@ spec: upgrade: remediation: retries: -1 - {{- if .Values.addons.gpuOperator.valuesOverride }} - valuesFrom: - - kind: Secret - name: {{ .Release.Name }}-gpu-operator-values-override - valuesKey: values + {{- with .Values.addons.gpuOperator.valuesOverride }} + values: + {{- toYaml . | nindent 4 }} {{- end }} dependsOn: @@ -45,13 +43,3 @@ spec: - name: {{ .Release.Name }}-cilium namespace: {{ .Release.Namespace }} {{- end }} -{{- if .Values.addons.gpuOperator.valuesOverride }} ---- -apiVersion: v1 -kind: Secret -metadata: - name: {{ .Release.Name }}-gpu-operator-values-override -stringData: - values: | - {{- toYaml .Values.addons.gpuOperator.valuesOverride | nindent 4 }} -{{- end }} diff --git a/packages/apps/kubernetes/templates/helmreleases/ingress-nginx.yaml b/packages/apps/kubernetes/templates/helmreleases/ingress-nginx.yaml index bedb876a..c312c217 100644 --- a/packages/apps/kubernetes/templates/helmreleases/ingress-nginx.yaml +++ b/packages/apps/kubernetes/templates/helmreleases/ingress-nginx.yaml @@ -1,3 +1,15 @@ +{{- define "cozystack.defaultIngressValues" -}} +ingress-nginx: + fullnameOverride: ingress-nginx + controller: + kind: DaemonSet + hostNetwork: true + service: + enabled: false + nodeSelector: + node-role.kubernetes.io/ingress-nginx: "" +{{- end }} + {{- if .Values.addons.ingressNginx.enabled }} apiVersion: helm.toolkit.fluxcd.io/v2 kind: HelmRelease @@ -31,21 +43,7 @@ spec: remediation: retries: -1 values: - ingress-nginx: - fullnameOverride: ingress-nginx - controller: - kind: DaemonSet - hostNetwork: true - service: - enabled: false - nodeSelector: - node-role.kubernetes.io/ingress-nginx: "" - {{- if .Values.addons.ingressNginx.valuesOverride }} - valuesFrom: - - kind: Secret - name: {{ .Release.Name }}-ingress-nginx-values-override - valuesKey: values - {{- end }} + {{- toYaml (merge (fromYaml (include "cozystack.defaultIngressValues" .)) .Values.addons.ingressNginx.valuesOverride) | nindent 4 }} dependsOn: {{- if lookup "helm.toolkit.fluxcd.io/v2" "HelmRelease" .Release.Namespace .Release.Name }} - name: {{ .Release.Name }} @@ -54,14 +52,3 @@ spec: - name: {{ .Release.Name }}-cilium namespace: {{ .Release.Namespace }} {{- end }} - -{{- if .Values.addons.ingressNginx.valuesOverride }} ---- -apiVersion: v1 -kind: Secret -metadata: - name: {{ .Release.Name }}-ingress-nginx-values-override -stringData: - values: | - {{- toYaml .Values.addons.ingressNginx.valuesOverride | nindent 4 }} -{{- end }} diff --git a/packages/apps/kubernetes/templates/helmreleases/vertical-pod-autoscaler.yaml b/packages/apps/kubernetes/templates/helmreleases/vertical-pod-autoscaler.yaml index fff634e3..988cc7f2 100644 --- a/packages/apps/kubernetes/templates/helmreleases/vertical-pod-autoscaler.yaml +++ b/packages/apps/kubernetes/templates/helmreleases/vertical-pod-autoscaler.yaml @@ -1,5 +1,28 @@ +{{- define "cozystack.defaultVPAValues" -}} {{- $myNS := lookup "v1" "Namespace" "" .Release.Namespace }} {{- $targetTenant := index $myNS.metadata.annotations "namespace.cozystack.io/monitoring" }} +vertical-pod-autoscaler: + recommender: + extraArgs: + container-name-label: container + container-namespace-label: namespace + container-pod-name-label: pod + storage: prometheus + memory-saver: true + pod-label-prefix: label_ + metric-for-pod-labels: kube_pod_labels{job="kube-state-metrics", tenant="{{ .Release.Namespace }}", cluster="{{ .Release.Name }}"}[8d] + pod-name-label: pod + pod-namespace-label: namespace + prometheus-address: http://vmselect-shortterm.{{ $targetTenant }}.svc.cozy.local:8481/select/0/prometheus/ + prometheus-cadvisor-job-name: cadvisor + resources: + limits: + memory: 1600Mi + requests: + cpu: 100m + memory: 1600Mi +{{- end }} + {{- if .Values.addons.monitoringAgents.enabled }} apiVersion: helm.toolkit.fluxcd.io/v2 kind: HelmRelease @@ -33,32 +56,7 @@ spec: remediation: retries: -1 values: - vertical-pod-autoscaler: - recommender: - extraArgs: - container-name-label: container - container-namespace-label: namespace - container-pod-name-label: pod - storage: prometheus - memory-saver: true - pod-label-prefix: label_ - metric-for-pod-labels: kube_pod_labels{job="kube-state-metrics", tenant="{{ .Release.Namespace }}", cluster="{{ .Release.Name }}"}[8d] - pod-name-label: pod - pod-namespace-label: namespace - prometheus-address: http://vmselect-shortterm.{{ $targetTenant }}.svc.cozy.local:8481/select/0/prometheus/ - prometheus-cadvisor-job-name: cadvisor - resources: - limits: - memory: 1600Mi - requests: - cpu: 100m - memory: 1600Mi - {{- if .Values.addons.verticalPodAutoscaler.valuesOverride }} - valuesFrom: - - kind: Secret - name: {{ .Release.Name }}-vertical-pod-autoscaler-values-override - valuesKey: values - {{- end }} + {{- toYaml (merge (fromYaml (include "cozystack.defaultVPAValues" .)) .Values.addons.verticalPodAutoscaler.valuesOverride) | nindent 4 }} dependsOn: {{- if lookup "helm.toolkit.fluxcd.io/v2" "HelmRelease" .Release.Namespace .Release.Name }} - name: {{ .Release.Name }} diff --git a/packages/apps/kubernetes/values.schema.json b/packages/apps/kubernetes/values.schema.json index 58e63f1e..c69a30aa 100644 --- a/packages/apps/kubernetes/values.schema.json +++ b/packages/apps/kubernetes/values.schema.json @@ -1,197 +1,227 @@ { - "title": "Chart Values", - "type": "object", - "properties": { - "host": { - "type": "string", - "description": "The hostname used to access the Kubernetes cluster externally (defaults to using the cluster name as a subdomain for the tenant host).", - "default": "" + "title": "Chart Values", + "type": "object", + "properties": { + "host": { + "type": "string", + "description": "The hostname used to access the Kubernetes cluster externally (defaults to using the cluster name as a subdomain for the tenant host).", + "default": "" + }, + "controlPlane": { + "type": "object", + "properties": { + "replicas": { + "type": "number", + "description": "Number of replicas for Kubernetes control-plane components", + "default": 2 }, - "controlPlane": { - "type": "object", - "properties": { - "replicas": { - "type": "number", - "description": "Number of replicas for Kubernetes control-plane components", - "default": 2 - } + "apiServer": { + "type": "object", + "properties": { + "resourcesPreset": { + "type": "string", + "description": "Set container resources according to one common preset (allowed values: none, nano, micro, small, medium, large, xlarge, 2xlarge). This is ignored if resources is set (resources is recommended for production).", + "default": "small", + "enum": [ + "none", + "nano", + "micro", + "small", + "medium", + "large", + "xlarge", + "2xlarge" + ] + }, + "resources": { + "type": "object", + "description": "Resources", + "default": {} } + } }, - "storageClass": { - "type": "string", - "description": "StorageClass used to store user data", - "default": "replicated" - }, - "addons": { - "type": "object", - "properties": { - "certManager": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "description": "Enables the cert-manager", - "default": false - }, - "valuesOverride": { - "type": "object", - "description": "Custom values to override", - "default": {} - } - } - }, - "ingressNginx": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "description": "Enable Ingress-NGINX controller (expect nodes with 'ingress-nginx' role)", - "default": false - }, - "valuesOverride": { - "type": "object", - "description": "Custom values to override", - "default": {} - }, - "hosts": { - "type": "array", - "description": "List of domain names that should be passed through to the cluster by upper cluster", - "default": [], - "items": {} - } - } - }, - "gpuOperator": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "description": "Enables the gpu-operator", - "default": false - }, - "valuesOverride": { - "type": "object", - "description": "Custom values to override", - "default": {} - } - } - }, - "fluxcd": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "description": "Enables Flux CD", - "default": false - }, - "valuesOverride": { - "type": "object", - "description": "Custom values to override", - "default": {} - } - } - }, - "monitoringAgents": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "description": "Enables MonitoringAgents (fluentbit, vmagents for sending logs and metrics to storage) if tenant monitoring enabled, send to tenant storage, else to root storage", - "default": false - }, - "valuesOverride": { - "type": "object", - "description": "Custom values to override", - "default": {} - } - } - }, - "verticalPodAutoscaler": { - "type": "object", - "properties": { - "valuesOverride": { - "type": "object", - "description": "Custom values to override", - "default": {} - } - } - } + "controllerManager": { + "type": "object", + "properties": { + "resources": { + "type": "object", + "description": "Resources", + "default": {} + }, + "resourcesPreset": { + "type": "string", + "description": "Set container resources according to one common preset (allowed values: none, nano, micro, small, medium, large, xlarge, 2xlarge). This is ignored if resources is set (resources is recommended for production).", + "default": "micro", + "enum": [ + "none", + "nano", + "micro", + "small", + "medium", + "large", + "xlarge", + "2xlarge" + ] } + } }, - "kamajiControlPlane": { - "type": "object", - "properties": { - "apiServer": { - "type": "object", - "properties": { - "resources": { - "type": "object", - "description": "Resources", - "default": {} - }, - "resourcesPreset": { - "type": "string", - "description": "Set container resources according to one common preset (allowed values: none, nano, micro, small, medium, large, xlarge, 2xlarge). This is ignored if resources is set (resources is recommended for production).", - "default": "small" - } - } - }, - "controllerManager": { - "type": "object", - "properties": { - "resources": { - "type": "object", - "description": "Resources", - "default": {} - }, - "resourcesPreset": { - "type": "string", - "description": "Set container resources according to one common preset (allowed values: none, nano, micro, small, medium, large, xlarge, 2xlarge). This is ignored if resources is set (resources is recommended for production).", - "default": "micro" - } - } - }, - "scheduler": { - "type": "object", - "properties": { - "resources": { - "type": "object", - "description": "Resources", - "default": {} - }, - "resourcesPreset": { - "type": "string", - "description": "Set container resources according to one common preset (allowed values: none, nano, micro, small, medium, large, xlarge, 2xlarge). This is ignored if resources is set (resources is recommended for production).", - "default": "micro" - } - } - }, - "addons": { - "type": "object", - "properties": { - "konnectivity": { - "type": "object", - "properties": { - "server": { - "type": "object", - "properties": { - "resources": { - "type": "object", - "description": "Resources", - "default": {} - }, - "resourcesPreset": { - "type": "string", - "description": "Set container resources according to one common preset (allowed values: none, nano, micro, small, medium, large, xlarge, 2xlarge). This is ignored if resources is set (resources is recommended for production).", - "default": "micro" - } - } - } - } - } - } - } + "scheduler": { + "type": "object", + "properties": { + "resourcesPreset": { + "type": "string", + "description": "Set container resources according to one common preset (allowed values: none, nano, micro, small, medium, large, xlarge, 2xlarge). This is ignored if resources is set (resources is recommended for production).", + "default": "micro", + "enum": [ + "none", + "nano", + "micro", + "small", + "medium", + "large", + "xlarge", + "2xlarge" + ] + }, + "resources": { + "type": "object", + "description": "Resources", + "default": {} } + } + }, + "konnectivity": { + "type": "object", + "properties": { + "server": { + "type": "object", + "properties": { + "resourcesPreset": { + "type": "string", + "description": "Set container resources according to one common preset (allowed values: none, nano, micro, small, medium, large, xlarge, 2xlarge). This is ignored if resources is set (resources is recommended for production).", + "default": "micro", + "enum": [ + "none", + "nano", + "micro", + "small", + "medium", + "large", + "xlarge", + "2xlarge" + ] + }, + "resources": { + "type": "object", + "description": "Resources", + "default": {} + } + } + } + } } + } + }, + "storageClass": { + "type": "string", + "description": "StorageClass used to store user data", + "default": "replicated" + }, + "addons": { + "type": "object", + "properties": { + "certManager": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "description": "Enables the cert-manager", + "default": false + }, + "valuesOverride": { + "type": "object", + "description": "Custom values to override", + "default": {} + } + } + }, + "ingressNginx": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "description": "Enable Ingress-NGINX controller (expect nodes with 'ingress-nginx' role)", + "default": false + }, + "valuesOverride": { + "type": "object", + "description": "Custom values to override", + "default": {} + }, + "hosts": { + "type": "array", + "description": "List of domain names that should be passed through to the cluster by upper cluster", + "default": [], + "items": {} + } + } + }, + "gpuOperator": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "description": "Enables the gpu-operator", + "default": false + }, + "valuesOverride": { + "type": "object", + "description": "Custom values to override", + "default": {} + } + } + }, + "fluxcd": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "description": "Enables Flux CD", + "default": false + }, + "valuesOverride": { + "type": "object", + "description": "Custom values to override", + "default": {} + } + } + }, + "monitoringAgents": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "description": "Enables MonitoringAgents (fluentbit, vmagents for sending logs and metrics to storage) if tenant monitoring enabled, send to tenant storage, else to root storage", + "default": false + }, + "valuesOverride": { + "type": "object", + "description": "Custom values to override", + "default": {} + } + } + }, + "verticalPodAutoscaler": { + "type": "object", + "properties": { + "valuesOverride": { + "type": "object", + "description": "Custom values to override", + "default": {} + } + } + } + } } -} \ No newline at end of file + } +} diff --git a/packages/apps/kubernetes/values.yaml b/packages/apps/kubernetes/values.yaml index f18e43d2..388c465b 100644 --- a/packages/apps/kubernetes/values.yaml +++ b/packages/apps/kubernetes/values.yaml @@ -5,8 +5,6 @@ ## @param storageClass StorageClass used to store user data ## host: "" -controlPlane: - replicas: 2 storageClass: replicated ## @param nodeGroups [object] nodeGroups configuration @@ -93,62 +91,42 @@ addons: ## valuesOverride: {} -## @section Kamaji control plane +## @section Kubernetes control plane configuration ## -kamajiControlPlane: + +controlPlane: + replicas: 2 + apiServer: - ## @param kamajiControlPlane.apiServer.resources Resources - resources: {} - # resources: - # limits: - # cpu: 4000m - # memory: 4Gi - # requests: - # cpu: 100m - # memory: 512Mi - - ## @param kamajiControlPlane.apiServer.resourcesPreset Set container resources according to one common preset (allowed values: none, nano, micro, small, medium, large, xlarge, 2xlarge). This is ignored if resources is set (resources is recommended for production). + ## @param controlPlane.apiServer.resourcesPreset Set container resources according to one common preset (allowed values: none, nano, micro, small, medium, large, xlarge, 2xlarge). This is ignored if resources is set (resources is recommended for production). + ## @param controlPlane.apiServer.resources Resources + ## e.g: + ## resources: + ## limits: + ## cpu: 4000m + ## memory: 4Gi + ## requests: + ## cpu: 100m + ## memory: 512Mi + ## resourcesPreset: "small" + resources: {} controllerManager: - ## @param kamajiControlPlane.controllerManager.resources Resources - resources: {} - # resources: - # limits: - # cpu: 4000m - # memory: 4Gi - # requests: - # cpu: 100m - # memory: 512Mi - - ## @param kamajiControlPlane.controllerManager.resourcesPreset Set container resources according to one common preset (allowed values: none, nano, micro, small, medium, large, xlarge, 2xlarge). This is ignored if resources is set (resources is recommended for production). + ## @param controlPlane.controllerManager.resources Resources + ## @param controlPlane.controllerManager.resourcesPreset Set container resources according to one common preset (allowed values: none, nano, micro, small, medium, large, xlarge, 2xlarge). This is ignored if resources is set (resources is recommended for production). resourcesPreset: "micro" + resources: {} + scheduler: - ## @param kamajiControlPlane.scheduler.resources Resources - resources: {} - # resources: - # limits: - # cpu: 4000m - # memory: 4Gi - # requests: - # cpu: 100m - # memory: 512Mi - - ## @param kamajiControlPlane.scheduler.resourcesPreset Set container resources according to one common preset (allowed values: none, nano, micro, small, medium, large, xlarge, 2xlarge). This is ignored if resources is set (resources is recommended for production). + ## @param controlPlane.scheduler.resourcesPreset Set container resources according to one common preset (allowed values: none, nano, micro, small, medium, large, xlarge, 2xlarge). This is ignored if resources is set (resources is recommended for production). + ## @param controlPlane.scheduler.resources Resources resourcesPreset: "micro" - addons: - konnectivity: - server: - ## @param kamajiControlPlane.addons.konnectivity.server.resources Resources - resources: {} - # resources: - # limits: - # cpu: 4000m - # memory: 4Gi - # requests: - # cpu: 100m - # memory: 512Mi - - ## @param kamajiControlPlane.addons.konnectivity.server.resourcesPreset Set container resources according to one common preset (allowed values: none, nano, micro, small, medium, large, xlarge, 2xlarge). This is ignored if resources is set (resources is recommended for production). - resourcesPreset: "micro" - + resources: {} + + konnectivity: + server: + ## @param controlPlane.konnectivity.server.resourcesPreset Set container resources according to one common preset (allowed values: none, nano, micro, small, medium, large, xlarge, 2xlarge). This is ignored if resources is set (resources is recommended for production). + ## @param controlPlane.konnectivity.server.resources Resources + resourcesPreset: "micro" + resources: {}