try kustomize overlays
All checks were successful
Helm Charts / Detect changed charts (push) Successful in 2m56s
Helm Charts / Library charts tool (push) Has been skipped
Helm Charts / Application charts pgcat (push) Has been skipped

This commit is contained in:
2025-12-06 16:24:22 +01:00
parent 3be78a836a
commit b324ea5714
8 changed files with 199 additions and 248 deletions

View File

@@ -13,16 +13,6 @@ spec:
repoURL: https://gitea.arcodange.duckdns.org/arcodange-org/tools repoURL: https://gitea.arcodange.duckdns.org/arcodange-org/tools
targetRevision: HEAD targetRevision: HEAD
path: {{ $app_name }} 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: destination:
server: https://kubernetes.default.svc server: https://kubernetes.default.svc
namespace: tools namespace: tools

View File

@@ -5,17 +5,5 @@ tools:
hashicorp-vault: {} hashicorp-vault: {}
crowdsec: {} crowdsec: {}
redis: {} redis: {}
clickhouse: 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
grafana: {} grafana: {}

View File

@@ -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"

View File

@@ -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: |
<clickhouse>
<users>
<default>
<networks>
<ip>::1</ip>
<ip>127.0.0.1</ip>
</networks>
</default>
<admin>
<password>monmotdepasse</password>
<networks>
<ip>::/0</ip>
<ip>0.0.0.0/0</ip>
</networks>
<profile>default</profile>
<quota>default</quota>
<access_management>1</access_management>
</admin>
</users>
</clickhouse>
# 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

View File

@@ -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

View File

@@ -1,3 +0,0 @@
{{- if eq .Values.tool.kind "HelmChart" -}}
{{- include "tool.helm-chart-config.tpl" . -}}
{{- end -}}

View File

@@ -1,3 +0,0 @@
{{- if eq .Values.tool.kind "HelmChart" -}}
{{- include "tool.helm-chart.tpl" . -}}
{{- end -}}

View File

@@ -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: |
<clickhouse>
<users>
<default>
<networks>
<ip>::1</ip>
<ip>127.0.0.1</ip>
</networks>
</default>
<admin>
<password>monmotdepasse</password>
<networks>
<ip>::/0</ip>
<ip>0.0.0.0/0</ip>
</networks>
<profile>default</profile>
<quota>default</quota>
<access_management>1</access_management>
</admin>
</users>
</clickhouse>
# 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