From 269f09b7a8a3a6642a3291d964021876a282c9a1 Mon Sep 17 00:00:00 2001 From: Gabriel Radureau Date: Sat, 6 Dec 2025 16:24:22 +0100 Subject: [PATCH] try kustomize overlays --- chart/templates/apps.yaml | 10 -- chart/values.yaml | 14 +- clickhouse/Chart.yaml | 34 ---- clickhouse/clickhouseValues.yaml | 176 +++++++++++++++++++ clickhouse/kustomization.yaml | 22 +++ clickhouse/templates/helm-chart-config.yaml | 3 - clickhouse/templates/helm-chart.yaml | 3 - clickhouse/values.yaml | 185 -------------------- 8 files changed, 199 insertions(+), 248 deletions(-) delete mode 100644 clickhouse/Chart.yaml create mode 100644 clickhouse/clickhouseValues.yaml create mode 100644 clickhouse/kustomization.yaml delete mode 100644 clickhouse/templates/helm-chart-config.yaml delete mode 100644 clickhouse/templates/helm-chart.yaml delete mode 100644 clickhouse/values.yaml diff --git a/chart/templates/apps.yaml b/chart/templates/apps.yaml index 5398fd0..697c972 100644 --- a/chart/templates/apps.yaml +++ b/chart/templates/apps.yaml @@ -13,16 +13,6 @@ spec: repoURL: https://gitea.arcodange.duckdns.org/arcodange-org/tools targetRevision: HEAD path: {{ $app_name }} - {{- if $app.patches }} - helm: - patches: - {{- range $patch := $app.patches }} - - target: - {{- toYaml $patch.target | nindent 12 }} - patch: |- - {{ $patch.patch | nindent 12 }} - {{- end }} - {{- end }} destination: server: https://kubernetes.default.svc namespace: tools diff --git a/chart/values.yaml b/chart/values.yaml index 3a105ef..27f40fa 100644 --- a/chart/values.yaml +++ b/chart/values.yaml @@ -5,17 +5,5 @@ tools: hashicorp-vault: {} crowdsec: {} redis: {} - clickhouse: - patches: - - target: - kind: StatefulSet - name: clickhouse - patch: |- - - op: add - path: /spec/template/spec/containers/0/volumeMounts/- - value: - name: config-volume - mountPath: /etc/clickhouse-server/users.d/custom-users.xml - subPath: custom-users.xml - readOnly: true + clickhouse: {} grafana: {} \ No newline at end of file diff --git a/clickhouse/Chart.yaml b/clickhouse/Chart.yaml deleted file mode 100644 index 5d130b4..0000000 --- a/clickhouse/Chart.yaml +++ /dev/null @@ -1,34 +0,0 @@ -# Chart: keydb-custom -# Helm chart tailored for KeyDB (EqAlpha) on 2 Raspberry Pi 5 nodes -# - Mode: master (statefulset index 0) + replica (index 1) -# - Replica runs as replicaof master at startup -# - server-threads = 4 -# - Config mounted via ConfigMap -# - Liveness / readiness probes included -# - Persistence via PersistentVolumeClaim (storageClass configurable) -# ----------------------------------------------------------------------------- -# Chart.yaml -# ----------------------------------------------------------------------------- -apiVersion: v2 -name: clickhouse -description: A Helm chart for Kubernetes - -dependencies: -- name: tool - version: 0.1.0 - repository: https://gitea.arcodange.duckdns.org/api/packages/arcodange-org/helm -- name: clickhouse - version: 0.4.0 - repository: https://charts.pascaliske.dev - -# A chart can be either an 'application' or a 'library' chart. -# -# Application charts are a collection of templates that can be packaged into versioned archives -# to be deployed. -# -# Library charts provide useful utilities or functions for the chart developer. They're included as -# a dependency of application charts to inject those utilities and functions into the rendering -# pipeline. Library charts do not define any templates and therefore cannot be deployed. -type: application -version: 0.1.0 -appVersion: "latest" \ No newline at end of file diff --git a/clickhouse/clickhouseValues.yaml b/clickhouse/clickhouseValues.yaml new file mode 100644 index 0000000..b7024ea --- /dev/null +++ b/clickhouse/clickhouseValues.yaml @@ -0,0 +1,176 @@ +global: {} +image: + # -- The registry to pull the image from. + registry: docker.io + # -- The repository to pull the image from. + repository: clickhouse/clickhouse-server + # -- The docker tag, if left empty chart's appVersion will be used. + # @default -- `.Chart.AppVersion` + tag: '' + # -- The pull policy for the controller. + pullPolicy: IfNotPresent + +nameOverride: '' +fullnameOverride: '' + +controller: + # -- Create a workload for this chart. + enabled: true + # -- Type of the workload object. + kind: StatefulSet + # -- The number of replicas. + replicas: 1 + # -- The controller update strategy. Currently only applies to controllers of kind `Deployment`. + updateStrategy: {} + # -- Additional annotations for the controller object. + annotations: {} + # -- Additional labels for the controller object. + labels: {} + +service: + # -- Create a service for exposing this chart. + enabled: true + # -- The service type used. + type: ClusterIP + # -- ClusterIP used if service type is `ClusterIP`. + clusterIP: '' + # -- LoadBalancerIP if service type is `LoadBalancer`. + loadBalancerIP: '' + # -- Allowed addresses when service type is `LoadBalancer`. + loadBalancerSourceRanges: [] + # -- Additional annotations for the service object. + annotations: {} + # -- Additional labels for the service object. + labels: {} + +env: + # -- Timezone for the container. + - name: TZ + value: Europe/Paris + +# -- List of extra arguments for the container. +extraArgs: [] + # - --loglevel warning + +ports: + rest: + # -- Enable the port inside the `Controller` and `Service` objects. + enabled: true + # -- The port used as internal port and cluster-wide port if `.service.type` == `ClusterIP`. + port: 8123 + # -- The external port used if `.service.type` == `NodePort`. + nodePort: null + # -- The protocol used for the service. + protocol: TCP + rpc: + # -- Enable the port inside the `Controller` and `Service` objects. + enabled: true + # -- The port used as internal port and cluster-wide port if `.service.type` == `ClusterIP`. + port: 9000 + # -- The external port used if `.service.type` == `NodePort`. + nodePort: null + # -- The protocol used for the service. + protocol: TCP + +configMap: + # -- Create a new config map object. + create: true + # -- Mount path of the config map object. + mountPath: /etc/config + # -- Use an existing config map object. + existingConfigMap: '' + # -- Map of configuration files as strings. + files: + custom-users.xml: | + + + + + ::1 + 127.0.0.1 + + + + clickhousearcodange + + ::/0 + 0.0.0.0/0 + + default + default + 1 + + + + # file1.yml: | + # # contents + # file2.yml: | + # # contents + # -- Additional annotations for the config map object. + annotations: {} + # -- Additional labels for the config map object. + labels: {} + +persistentVolumeClaim: + # -- Create a new persistent volume claim object. + create: true + # -- Mount path of the persistent volume claim object. + mountPath: /var/lib/clickhouse + # -- Access mode of the persistent volume claim object. + accessMode: ReadWriteOnce + # -- Volume mode of the persistent volume claim object. + volumeMode: Filesystem + # -- Storage request size for the persistent volume claim object. + size: 16Gi + # -- Storage class name for the persistent volume claim object. + storageClassName: '' + # -- Use an existing persistent volume claim object. + existingPersistentVolumeClaim: '' + # -- Additional annotations for the persistent volume claim object. + annotations: {} + # -- Additional labels for the persistent volume claim object. + labels: {} + +serviceAccount: + # -- Create a `ServiceAccount` object. + create: true + # -- Specify the service account used for the controller. + name: '' + # -- Additional annotations for the role and role binding objects. + annotations: {} + # -- Additional labels for the role and role binding objects. + labels: {} + +# -- Pod-level security attributes. More info [here](https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/#security-context). +securityContext: + fsGroup: 101 + runAsNonRoot: true + runAsGroup: 101 + runAsUser: 101 + +# -- Compute resources used by the container. More info [here](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/). +resources: {} + # limits: + # cpu: 100m + # memory: 128Mi + # requests: + # cpu: 100m + # memory: 128Mi + +# -- Pod-level affinity. More info [here](https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/#scheduling). +affinity: {} + # nodeAffinity: + # requiredDuringSchedulingIgnoredDuringExecution: + # nodeSelectorTerms: + # - matchExpressions: + # - key: kubernetes.io/hostname + # operator: In + # values: + # - my-node-xyz + +# -- Pod-level tolerations. More info [here](https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/#scheduling). +tolerations: [] + # - key: node-role.kubernetes.io/control-plane + # operator: Exists + # effect: NoSchedule + diff --git a/clickhouse/kustomization.yaml b/clickhouse/kustomization.yaml new file mode 100644 index 0000000..8aa7938 --- /dev/null +++ b/clickhouse/kustomization.yaml @@ -0,0 +1,22 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization + +helmCharts: +- name: clickhouse + repo: https://charts.pascaliske.dev + version: 0.4.0 + releaseName: clickhouse + valuesFile: clickhouseValues.yaml + +patches: + - target: + kind: StatefulSet + name: clickhouse + patch: |- + - op: add + path: /spec/template/spec/containers/0/volumeMounts/- + value: + name: config-volume + mountPath: /etc/clickhouse-server/users.d/custom-users.xml + subPath: custom-users.xml + readOnly: true \ No newline at end of file diff --git a/clickhouse/templates/helm-chart-config.yaml b/clickhouse/templates/helm-chart-config.yaml deleted file mode 100644 index 31cb271..0000000 --- a/clickhouse/templates/helm-chart-config.yaml +++ /dev/null @@ -1,3 +0,0 @@ -{{- if eq .Values.tool.kind "HelmChart" -}} -{{- include "tool.helm-chart-config.tpl" . -}} -{{- end -}} \ No newline at end of file diff --git a/clickhouse/templates/helm-chart.yaml b/clickhouse/templates/helm-chart.yaml deleted file mode 100644 index c6b793d..0000000 --- a/clickhouse/templates/helm-chart.yaml +++ /dev/null @@ -1,3 +0,0 @@ -{{- if eq .Values.tool.kind "HelmChart" -}} -{{- include "tool.helm-chart.tpl" . -}} -{{- end -}} \ No newline at end of file diff --git a/clickhouse/values.yaml b/clickhouse/values.yaml deleted file mode 100644 index ae65ba7..0000000 --- a/clickhouse/values.yaml +++ /dev/null @@ -1,185 +0,0 @@ -clickhouse: &clickhouse_config - global: {} - image: - # -- The registry to pull the image from. - registry: docker.io - # -- The repository to pull the image from. - repository: clickhouse/clickhouse-server - # -- The docker tag, if left empty chart's appVersion will be used. - # @default -- `.Chart.AppVersion` - tag: '' - # -- The pull policy for the controller. - pullPolicy: IfNotPresent - - nameOverride: '' - fullnameOverride: '' - - controller: - # -- Create a workload for this chart. - enabled: true - # -- Type of the workload object. - kind: StatefulSet - # -- The number of replicas. - replicas: 1 - # -- The controller update strategy. Currently only applies to controllers of kind `Deployment`. - updateStrategy: {} - # -- Additional annotations for the controller object. - annotations: {} - # -- Additional labels for the controller object. - labels: {} - - service: - # -- Create a service for exposing this chart. - enabled: true - # -- The service type used. - type: ClusterIP - # -- ClusterIP used if service type is `ClusterIP`. - clusterIP: '' - # -- LoadBalancerIP if service type is `LoadBalancer`. - loadBalancerIP: '' - # -- Allowed addresses when service type is `LoadBalancer`. - loadBalancerSourceRanges: [] - # -- Additional annotations for the service object. - annotations: {} - # -- Additional labels for the service object. - labels: {} - - env: - # -- Timezone for the container. - - name: TZ - value: Europe/Paris - - # -- List of extra arguments for the container. - extraArgs: [] - # - --loglevel warning - - ports: - rest: - # -- Enable the port inside the `Controller` and `Service` objects. - enabled: true - # -- The port used as internal port and cluster-wide port if `.service.type` == `ClusterIP`. - port: 8123 - # -- The external port used if `.service.type` == `NodePort`. - nodePort: null - # -- The protocol used for the service. - protocol: TCP - rpc: - # -- Enable the port inside the `Controller` and `Service` objects. - enabled: true - # -- The port used as internal port and cluster-wide port if `.service.type` == `ClusterIP`. - port: 9000 - # -- The external port used if `.service.type` == `NodePort`. - nodePort: null - # -- The protocol used for the service. - protocol: TCP - - configMap: - # -- Create a new config map object. - create: true - # -- Mount path of the config map object. - mountPath: /etc/config - # -- Use an existing config map object. - existingConfigMap: '' - # -- Map of configuration files as strings. - files: - custom-users.xml: | - - - - - ::1 - 127.0.0.1 - - - - monmotdepasse - - ::/0 - 0.0.0.0/0 - - default - default - 1 - - - - # file1.yml: | - # # contents - # file2.yml: | - # # contents - # -- Additional annotations for the config map object. - annotations: {} - # -- Additional labels for the config map object. - labels: {} - - persistentVolumeClaim: - # -- Create a new persistent volume claim object. - create: true - # -- Mount path of the persistent volume claim object. - mountPath: /var/lib/clickhouse - # -- Access mode of the persistent volume claim object. - accessMode: ReadWriteOnce - # -- Volume mode of the persistent volume claim object. - volumeMode: Filesystem - # -- Storage request size for the persistent volume claim object. - size: 1Gi - # -- Storage class name for the persistent volume claim object. - storageClassName: '' - # -- Use an existing persistent volume claim object. - existingPersistentVolumeClaim: '' - # -- Additional annotations for the persistent volume claim object. - annotations: {} - # -- Additional labels for the persistent volume claim object. - labels: {} - - serviceAccount: - # -- Create a `ServiceAccount` object. - create: true - # -- Specify the service account used for the controller. - name: '' - # -- Additional annotations for the role and role binding objects. - annotations: {} - # -- Additional labels for the role and role binding objects. - labels: {} - - # -- Pod-level security attributes. More info [here](https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/#security-context). - securityContext: - fsGroup: 101 - runAsNonRoot: true - runAsGroup: 101 - runAsUser: 101 - - # -- Compute resources used by the container. More info [here](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/). - resources: {} - # limits: - # cpu: 100m - # memory: 128Mi - # requests: - # cpu: 100m - # memory: 128Mi - - # -- Pod-level affinity. More info [here](https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/#scheduling). - affinity: {} - # nodeAffinity: - # requiredDuringSchedulingIgnoredDuringExecution: - # nodeSelectorTerms: - # - matchExpressions: - # - key: kubernetes.io/hostname - # operator: In - # values: - # - my-node-xyz - - # -- Pod-level tolerations. More info [here](https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/#scheduling). - tolerations: [] - # - key: node-role.kubernetes.io/control-plane - # operator: Exists - # effect: NoSchedule - - -tool: - # kind: 'SubChart' or 'HelmChart', if subchart then uncomment Chart.yaml dependency, else comment and use tool library with helm chart template - kind: 'SubChart' - repo: https://charts.pascaliske.dev - chart: clickhouse - version: 0.4.0 - values: *clickhouse_config