├── .github └── workflows │ └── release.yaml ├── .gitignore ├── CNAME ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── charts ├── cassandra │ ├── Chart.yaml │ ├── README.md │ ├── templates │ │ ├── database-pod.yaml │ │ ├── init-script-config-map.yaml │ │ ├── secret.yaml │ │ ├── service.yaml │ │ └── statefulset.yaml │ ├── values.schema.json │ └── values.yaml ├── chromadb │ ├── Chart.yaml │ ├── Readme.md │ ├── templates │ │ ├── _helpers.tpl │ │ ├── configmap.yaml │ │ ├── service.yaml │ │ └── statefulset.yaml │ ├── values.schema.json │ └── values.yaml ├── cockroachdb │ ├── Chart.yaml │ ├── README.md │ ├── templates │ │ ├── _helpers.tpl │ │ ├── database-configmap.yaml │ │ ├── database-pod.yaml │ │ ├── ingress.yaml │ │ ├── init-script-config-map.yaml │ │ ├── job.init.yaml │ │ ├── poddisruptionbudget.yaml │ │ ├── service.discovery.yaml │ │ ├── service.public.yaml │ │ └── statefulset.yaml │ ├── values.schema.json │ └── values.yaml ├── cron-job │ ├── Chart.yaml │ ├── README.md │ ├── templates │ │ ├── alerts.yaml │ │ └── cronJob.yaml │ └── values.yaml ├── dgraph │ ├── Chart.yaml │ ├── Readme.md │ ├── templates │ │ ├── _helpers.tpl │ │ ├── alpha │ │ │ ├── statefulset.yaml │ │ │ ├── svc-headless.yaml │ │ │ └── svc.yaml │ │ ├── config-map.yaml │ │ ├── serviceaccount.yaml │ │ └── zero │ │ │ ├── statefulset.yaml │ │ │ ├── svc-headless.yaml │ │ │ └── svc.yaml │ ├── values.schema.json │ └── values.yaml ├── jupyterhub │ ├── Chart.yaml │ ├── README.md │ ├── files │ │ └── hub │ │ │ ├── jupyterhub_config.py │ │ │ └── z2jh.py │ ├── templates │ │ ├── _helpers-names.tpl │ │ ├── _helpers-netpol.tpl │ │ ├── _helpers.tpl │ │ ├── hub │ │ │ ├── _helpers-passwords.tpl │ │ │ ├── configmap.yaml │ │ │ ├── deployment.yaml │ │ │ ├── netpol.yaml │ │ │ ├── pvc.yaml │ │ │ ├── rbac.yaml │ │ │ ├── secret.yaml │ │ │ ├── service.yaml │ │ │ └── serviceaccount.yaml │ │ ├── image-puller │ │ │ ├── _helpers-daemonset.tpl │ │ │ ├── daemonset-continuous.yaml │ │ │ ├── daemonset-hook.yaml │ │ │ ├── job.yaml │ │ │ ├── rbac.yaml │ │ │ ├── serviceaccount-continuous.yaml │ │ │ ├── serviceaccount-hook.yaml │ │ │ └── serviceaccount.yaml │ │ ├── ingress.yaml │ │ ├── proxy │ │ │ ├── autohttps │ │ │ │ ├── _configmap-dynamic.yaml │ │ │ │ ├── _configmap-traefik.yaml │ │ │ │ ├── configmap.yaml │ │ │ │ ├── deployment.yaml │ │ │ │ ├── netpol.yaml │ │ │ │ ├── rbac.yaml │ │ │ │ ├── service.yaml │ │ │ │ └── serviceaccount.yaml │ │ │ ├── deployment.yaml │ │ │ ├── netpol.yaml │ │ │ └── service.yaml │ │ ├── scheduling │ │ │ ├── _scheduling-helpers.tpl │ │ │ ├── user-placeholder │ │ │ │ ├── pdb.yaml │ │ │ │ └── statefulset.yaml │ │ │ └── user-scheduler │ │ │ │ ├── configmap.yaml │ │ │ │ ├── deployment.yaml │ │ │ │ ├── pdb.yaml │ │ │ │ ├── rbac.yaml │ │ │ │ └── serviceaccount.yaml │ │ └── singleuser │ │ │ └── netpol.yaml │ ├── values.schema.json │ └── values.yaml ├── kafka │ ├── Chart.lock │ ├── Chart.yaml │ ├── README.md │ ├── templates │ │ ├── _helpers.tpl │ │ ├── alerts.yaml │ │ ├── configmap.yaml │ │ ├── headless-service.yaml │ │ ├── poddisruptionbudget.yaml │ │ ├── serviceMonitor.yaml │ │ └── statefulset.yaml │ ├── values.schema.json │ └── values.yaml ├── mariadb │ ├── Chart.yaml │ ├── Readme.md │ ├── templates │ │ ├── _helpers.tpl │ │ ├── alerts.yaml │ │ ├── database-pod.yaml │ │ ├── init-script-config-map.yaml │ │ ├── master-configmap.yaml │ │ ├── master-serviceMonitor.yaml │ │ ├── master-statefulset.yaml │ │ ├── master-svc.yaml │ │ ├── secrets.yaml │ │ ├── slave-configmap.yaml │ │ ├── slave-serviceMonitor.yaml │ │ ├── slave-statefulset.yaml │ │ └── slave-svc.yaml │ ├── values.schema.json │ └── values.yaml ├── mysql │ ├── Chart.yaml │ ├── Readme.md │ ├── templates │ │ ├── _helpers.tpl │ │ ├── alerts.yaml │ │ ├── custom-mycnf-configmap.yaml │ │ ├── database-pod.yaml │ │ ├── init-script-config-map.yaml │ │ ├── secret.yaml │ │ ├── service.yaml │ │ ├── serviceMonitor.yaml │ │ └── statefulset.yaml │ ├── values.schema.json │ └── values.yaml ├── opentsdb │ ├── Chart.yaml │ ├── Readme.md │ ├── templates │ │ ├── configmap.yaml │ │ ├── service.yaml │ │ └── statefulset.yaml │ ├── values.schema.json │ └── values.yaml ├── outline │ ├── Chart.lock │ ├── Chart.yaml │ ├── README.md │ ├── values.schema.json │ ├── values.yaml │ └── zop-values.yaml ├── postgres │ ├── Chart.yaml │ ├── Readme.md │ ├── templates │ │ ├── _helpers.tpl │ │ ├── alerts.yaml │ │ ├── init-script-config-map.yaml │ │ ├── secret.yaml │ │ ├── service-headless.yaml │ │ ├── service-read.yaml │ │ ├── service.yaml │ │ ├── serviceMonitor.yaml │ │ ├── statefulset-slaves.yaml │ │ └── statefulset.yaml │ ├── values.schema.json │ └── values.yaml ├── redis │ ├── Chart.yaml │ ├── Readme.md │ ├── templates │ │ ├── alerts.yaml │ │ ├── configmap.yaml │ │ ├── headless-svc.yaml │ │ ├── service-config-map.yaml │ │ ├── serviceMonitor.yaml │ │ └── statefulset.yaml │ ├── values.schema.json │ └── values.yaml ├── redisdistributed │ ├── Chart.yaml │ ├── README.md │ ├── templates │ │ ├── alerts.yaml │ │ ├── configmap.yaml │ │ ├── headless-svc.yaml │ │ ├── service-config-map.yaml │ │ ├── serviceMonitor.yaml │ │ ├── statefulset-master.yaml │ │ └── statefulset-slave.yaml │ ├── values.schema.json │ └── values.yaml ├── scylladb │ ├── Chart.yaml │ ├── README.md │ ├── templates │ │ ├── configmap.yaml │ │ ├── database-pod.yaml │ │ ├── database-secret.yaml │ │ ├── init-script-config-map.yaml │ │ ├── secret.yaml │ │ ├── service.yaml │ │ ├── statefulset.yaml │ │ └── user-job.yaml │ └── values.yaml ├── service │ ├── Chart.yaml │ ├── README.md │ ├── templates │ │ ├── alerts.yaml │ │ ├── deployment.yaml │ │ ├── env-configmap.yaml │ │ ├── grafana-dashboard-configmap.yaml │ │ ├── hpa.yaml │ │ ├── ingress.yaml │ │ ├── pod-disruption-budget.yaml │ │ ├── pvc.yaml │ │ ├── service.yaml │ │ └── serviceMonitor.yaml │ └── values.yaml ├── solr-operator │ ├── Chart.lock │ ├── Chart.yaml │ ├── README.md │ ├── crds │ │ └── crds.yaml │ ├── templates │ │ ├── _helpers.tpl │ │ ├── deployment.yaml │ │ ├── leader-election-role-binding.yaml │ │ ├── leader-election-role.yaml │ │ ├── role-binding.yaml │ │ ├── role.yaml │ │ └── serviceaccount.yaml │ └── values.yaml ├── solr │ ├── Chart.yaml │ ├── Readme.md │ ├── templates │ │ ├── _helpers.tpl │ │ ├── alerts.yaml │ │ ├── configmap.yaml │ │ ├── ingress.yaml │ │ ├── init-solr-security.yaml │ │ ├── secret.yaml │ │ ├── service.yaml │ │ ├── serviceMonitor.yaml │ │ └── statefulset.yaml │ ├── values.schema.json │ └── values.yaml ├── solrcloud │ ├── Chart.lock │ ├── Chart.yaml │ ├── README.md │ ├── templates │ │ ├── _custom_option_helpers.tpl │ │ ├── _helpers.tpl │ │ ├── alerts.yaml │ │ ├── configmap.yaml │ │ ├── get-password-admin.yaml │ │ ├── metricsService.yaml │ │ ├── pre-delete-zk-cleanup.yaml │ │ ├── serviceMonitor.yaml │ │ ├── solr-metrics.yaml │ │ └── solrcloud.yaml │ ├── values.schema.json │ └── values.yaml ├── superset │ ├── Chart.lock │ ├── Chart.yaml │ ├── README.md │ ├── templates │ │ ├── _helpers.tpl │ │ ├── beat │ │ │ └── deployment.yaml │ │ ├── env-secrets.yaml │ │ ├── flower │ │ │ ├── deployment.yaml │ │ │ └── service.yaml │ │ ├── init-job.yaml │ │ ├── node │ │ │ ├── deployment.yaml │ │ │ ├── hpa.yaml │ │ │ ├── ingress.yaml │ │ │ └── service.yaml │ │ ├── superset-configs.yaml │ │ └── worker │ │ │ └── deployment.yaml │ ├── values.schema.json │ └── values.yaml ├── surrealdb │ ├── Chart.yaml │ ├── Readme.md │ ├── templates │ │ ├── configmap.yaml │ │ ├── service.yaml │ │ └── statefulset.yaml │ ├── values.schema.json │ └── values.yaml ├── wordpress │ ├── Chart.lock │ ├── Chart.yaml │ ├── README.md │ ├── values.schema.json │ └── values.yaml ├── zookeeper-operator │ ├── Chart.yaml │ ├── README.md │ ├── templates │ │ ├── _helpers.tpl │ │ ├── clusterrole.yaml │ │ ├── clusterrolebinding.yaml │ │ ├── operator.yaml │ │ ├── post-install-upgrade-hooks.yaml │ │ ├── pre-delete-hooks.yaml │ │ ├── role.yaml │ │ ├── rolebinding.yaml │ │ ├── serviceaccount.yaml │ │ └── zookeeperclusters-crd.yaml │ └── values.yaml └── zookeeper │ ├── Chart.yaml │ ├── README.md │ ├── templates │ ├── _helpers.tpl │ ├── headless-service.yaml │ ├── poddisruptionbudget.yaml │ └── statefulset.yaml │ └── values.yaml ├── docs ├── CNAME ├── Chromadb-v0.0.1.tgz ├── cassandra-v0.0.1.tgz ├── cassandra-v0.0.2.tgz ├── cassandra-v0.0.3.tgz ├── cassandra-v0.0.4.tgz ├── cassandra-v0.0.5.tgz ├── chromadb-v0.0.2.tgz ├── chromadb-v0.0.3.tgz ├── chromadb-v0.0.4.tgz ├── cockroachdb-v0.0.1.tgz ├── cockroachdb-v0.0.2.tgz ├── cockroachdb-v0.0.3.tgz ├── cockroachdb-v0.0.4.tgz ├── cron-job-v0.0.1.tgz ├── cron-job-v0.0.10.tgz ├── cron-job-v0.0.11.tgz ├── cron-job-v0.0.12.tgz ├── cron-job-v0.0.13.tgz ├── cron-job-v0.0.14.tgz ├── cron-job-v0.0.15.tgz ├── cron-job-v0.0.16.tgz ├── cron-job-v0.0.17.tgz ├── cron-job-v0.0.2.tgz ├── cron-job-v0.0.3.tgz ├── cron-job-v0.0.4.tgz ├── cron-job-v0.0.5.tgz ├── cron-job-v0.0.6.tgz ├── cron-job-v0.0.7.tgz ├── cron-job-v0.0.8.tgz ├── cron-job-v0.0.9.tgz ├── dgraph-v0.0.1.tgz ├── dgraph-v0.0.2.tgz ├── dgraph-v0.0.3.tgz ├── index.yaml ├── jupyterhub-v0.0.1.tgz ├── jupyterhub-v0.0.2.tgz ├── jupyterhub-v0.0.3.tgz ├── kafka-v0.0.1.tgz ├── kafka-v0.0.2.tgz ├── kafka-v0.0.3.tgz ├── kafka-v0.0.4.tgz ├── mariadb-v0.0.1.tgz ├── mariadb-v0.0.2.tgz ├── mariadb-v0.0.3.tgz ├── mariadb-v0.0.4.tgz ├── mysql-v0.0.1.tgz ├── mysql-v0.0.10.tgz ├── mysql-v0.0.11.tgz ├── mysql-v0.0.12.tgz ├── mysql-v0.0.13.tgz ├── mysql-v0.0.14.tgz ├── mysql-v0.0.15.tgz ├── mysql-v0.0.16.tgz ├── mysql-v0.0.2.tgz ├── mysql-v0.0.3.tgz ├── mysql-v0.0.4.tgz ├── mysql-v0.0.5.tgz ├── mysql-v0.0.6.tgz ├── mysql-v0.0.7.tgz ├── mysql-v0.0.8.tgz ├── mysql-v0.0.9.tgz ├── opentsdb-v0.0.1.tgz ├── opentsdb-v0.0.2.tgz ├── opentsdb-v0.0.3.tgz ├── outline-v0.0.1.tgz ├── outline-v0.0.2.tgz ├── outline-v0.0.3.tgz ├── outline-v0.0.4.tgz ├── outline-v0.0.5.tgz ├── postgres-v0.0.1.tgz ├── postgres-v0.0.10.tgz ├── postgres-v0.0.2.tgz ├── postgres-v0.0.3.tgz ├── postgres-v0.0.4.tgz ├── postgres-v0.0.5.tgz ├── postgres-v0.0.6.tgz ├── postgres-v0.0.7.tgz ├── postgres-v0.0.8.tgz ├── postgres-v0.0.9.tgz ├── redis-v0.0.1.tgz ├── redis-v0.0.2.tgz ├── redis-v0.0.3.tgz ├── redis-v0.0.4.tgz ├── redisdistributed-v0.0.6.tgz ├── redisdistributed-v0.0.7.tgz ├── redisdistributed-v0.0.8.tgz ├── scylladb-v0.0.1.tgz ├── service-v0.0.1.tgz ├── service-v0.0.10.tgz ├── service-v0.0.11.tgz ├── service-v0.0.12.tgz ├── service-v0.0.13.tgz ├── service-v0.0.14.tgz ├── service-v0.0.15.tgz ├── service-v0.0.16.tgz ├── service-v0.0.17.tgz ├── service-v0.0.18.tgz ├── service-v0.0.19.tgz ├── service-v0.0.2.tgz ├── service-v0.0.20.tgz ├── service-v0.0.21.tgz ├── service-v0.0.22.tgz ├── service-v0.0.23.tgz ├── service-v0.0.3.tgz ├── service-v0.0.4.tgz ├── service-v0.0.5.tgz ├── service-v0.0.6.tgz ├── service-v0.0.7.tgz ├── service-v0.0.8.tgz ├── service-v0.0.9.tgz ├── solr-operator-v0.0.1.tgz ├── solr-v0.0.1.tgz ├── solr-v0.0.2.tgz ├── solr-v0.0.3.tgz ├── solr-v0.0.4.tgz ├── solr-v0.0.5.tgz ├── solrcloud-v0.0.1.tgz ├── solrcloud-v0.0.2.tgz ├── solrcloud-v0.0.3.tgz ├── superset-v0.0.1.tgz ├── superset-v0.0.2.tgz ├── superset-v0.0.3.tgz ├── superset-v0.0.4.tgz ├── superset-v0.0.5.tgz ├── superset-v0.0.6.tgz ├── surrealdb-v0.0.1.tgz ├── surrealdb-v0.0.2.tgz ├── surrealdb-v0.0.3.tgz ├── wordpress-v0.0.1.tgz ├── wordpress-v0.0.2.tgz ├── wordpress-v0.0.3.tgz ├── wordpress-v0.0.4.tgz ├── wordpress-v0.0.5.tgz ├── zookeeper-operator-v0.0.1.tgz └── zookeeper-v0.0.1.tgz └── promql ├── kafka.yaml ├── mariadb.yaml ├── mysql.yaml ├── postgres.yaml ├── redis.yaml ├── redisdistributed.yaml ├── service.yaml ├── solr-cloud.yaml └── solr.yaml /.github/workflows/release.yaml: -------------------------------------------------------------------------------- 1 | name: Release Charts 2 | 3 | on: 4 | push: 5 | branches: 6 | - main 7 | paths: 8 | - 'charts/**' 9 | 10 | jobs: 11 | release: 12 | runs-on: ubuntu-latest 13 | steps: 14 | - name: Checkout Code 15 | uses: actions/checkout@v4 16 | 17 | - name: Configure Git 18 | run: | 19 | git config user.name "$GITHUB_ACTOR" 20 | git config user.email "$GITHUB_ACTOR@users.noreply.github.com" 21 | 22 | - name: Install Helm 23 | uses: azure/setup-helm@v4 24 | env: 25 | GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}" 26 | - name: Helm Lint 27 | run: | 28 | cd charts/service 29 | helm lint 30 | cd ../.. 31 | cd charts/cron-job 32 | helm lint 33 | cd ../.. 34 | 35 | - name: Run chart-releaser 36 | uses: helm/chart-releaser-action@v1.6.0 37 | env: 38 | CR_TOKEN: "${{ secrets.GITHUB_TOKEN }}" 39 | CR_GENERATE_RELEASE_NOTES: true 40 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Chart dependencies 2 | /charts/*/charts 3 | .idea 4 | .vscode 5 | .DS_Store -------------------------------------------------------------------------------- /CNAME: -------------------------------------------------------------------------------- 1 | helm.zop.dev -------------------------------------------------------------------------------- /charts/cassandra/Chart.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | appVersion: "1.0" 3 | description: Helm chart for deploying cassandra 4 | name: cassandra 5 | version: 0.0.5 6 | icon: "https://storage.googleapis.com/zopdev-test-bucket/zop/files/originals/20241223/d7c22b49-c87b-4d41-a109-334a83b44f8d-cassandra.png" 7 | maintainers: 8 | - name: ZopDev 9 | url: zop.dev 10 | annotations: 11 | type: datasource -------------------------------------------------------------------------------- /charts/cassandra/templates/database-pod.yaml: -------------------------------------------------------------------------------- 1 | {{- range $index, $service := .Values.services }} 2 | apiVersion: v1 3 | kind: Pod 4 | metadata: 5 | name: {{ $.Release.Name }}-{{ $service.name }}-cassandra-init 6 | namespace: {{ $.Release.Namespace }} 7 | spec: 8 | containers: 9 | - name: cassandra-init 10 | image: "bitnami/cassandra:5.0.2-debian-12-r3" 11 | command: 12 | - sh 13 | - -c 14 | - | 15 | echo "Initializing Cassandra Pod..."; 16 | cqlsh {{ $.Release.Name }}-cassandra -u superuser -p $POD_PASSWORD -e "SOURCE '/etc/config/init-schema.cql';" 17 | env: 18 | - name: POD_PASSWORD 19 | valueFrom: 20 | secretKeyRef: 21 | name: {{ $.Release.Name }}-cassandra-database-secret 22 | key: root-password 23 | volumeMounts: 24 | - name: script-volume 25 | mountPath: /etc/config 26 | volumes: 27 | - name: script-volume 28 | configMap: 29 | name: {{ $.Release.Name }}-{{ $service.name }}-init-script 30 | restartPolicy: OnFailure 31 | --- 32 | {{- end}} -------------------------------------------------------------------------------- /charts/cassandra/templates/secret.yaml: -------------------------------------------------------------------------------- 1 | {{- $secretName := printf "%s-cassandra-database-secret" .Release.Name }} 2 | 3 | {{/* Generate a strong root password only if not already set */}} 4 | {{- $generatedRootPassword := printf "%s%s%s" (randAlpha 4) (randNumeric 4) (randAlpha 4 | upper) }} 5 | 6 | {{- $rootPassword := $generatedRootPassword }} 7 | 8 | --- 9 | apiVersion: v1 10 | kind: Secret 11 | metadata: 12 | name: {{ $secretName }} 13 | namespace: {{ .Release.Namespace }} 14 | type: Opaque 15 | data: 16 | {{- if .Release.IsInstall }} 17 | root-password: {{ $rootPassword | b64enc }} 18 | {{ else }} 19 | root-password: {{ index (lookup "v1" "Secret" .Release.Namespace $secretName ).data "root-password" }} 20 | {{ end }} -------------------------------------------------------------------------------- /charts/cassandra/templates/service.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: {{ .Release.Name }}-cassandra 5 | labels: 6 | app: {{ .Release.Name }}-cassandra 7 | spec: 8 | type: ClusterIP 9 | clusterIP: None 10 | ports: 11 | - port: 9042 12 | targetPort: 9042 13 | selector: 14 | app: {{ .Release.Name }}-cassandra -------------------------------------------------------------------------------- /charts/cassandra/values.schema.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://json-schema.org/draft-07/schema#", 3 | "type": "object", 4 | "properties": { 5 | "resources": { 6 | "type": "object", 7 | "properties": { 8 | "requests": { 9 | "type": "object", 10 | "properties": { 11 | "memory": { 12 | "type": "string", 13 | "default": "2000Mi", "mutable": true 14 | }, 15 | "cpu": { 16 | "type": "string", 17 | "default": "500m", "mutable": true 18 | } 19 | } 20 | }, 21 | "limits": { 22 | "type": "object", 23 | "properties": { 24 | "memory": { 25 | "type": "string", 26 | "default": "4000Mi", "mutable": true 27 | }, 28 | "cpu": { 29 | "type": "string", 30 | "default": "1000m", "mutable": true 31 | } 32 | } 33 | } 34 | } 35 | }, 36 | "diskSize": { 37 | "type": "string", 38 | "default": "10Gi", "mutable": true, 39 | "editDisabled": true 40 | }, 41 | "services": { 42 | "type": "array", 43 | "items": { 44 | "type": "object", 45 | "properties": { 46 | "name": { 47 | "type": "string" 48 | }, 49 | "database": { 50 | "type": "string" 51 | } 52 | }, 53 | "required": ["name", "database"] 54 | } 55 | } 56 | } 57 | } -------------------------------------------------------------------------------- /charts/cassandra/values.yaml: -------------------------------------------------------------------------------- 1 | resources: 2 | requests: 3 | memory: "2000Mi" 4 | cpu: "500m" 5 | limits: 6 | memory: "4000Mi" 7 | cpu: "1000m" 8 | 9 | diskSize: 10Gi -------------------------------------------------------------------------------- /charts/chromadb/Chart.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v2 2 | appVersion: "1.0" 3 | description: Helm chart for deploying chromadb datastore 4 | name: chromadb 5 | version: 0.0.4 6 | icon: "https://storage.googleapis.com/zopdev-test-bucket/zop/files/originals/20241205/f21ef909-e0ea-4969-8963-0848602a5e4b-ImageEditor.jpg" 7 | maintainers: 8 | - name: ZopDev 9 | url: zop.dev 10 | annotations: 11 | type: datasource -------------------------------------------------------------------------------- /charts/chromadb/templates/_helpers.tpl: -------------------------------------------------------------------------------- 1 | {{/* 2 | Expand the name of the chart. 3 | */}} 4 | {{- define "chromadb.name" -}} 5 | {{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} 6 | {{- end }} 7 | 8 | {{/* 9 | Create a default fully qualified app name. 10 | We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). 11 | If release name contains chart name it will be used as a full name. 12 | */}} 13 | {{- define "chromadb.fullname" -}} 14 | {{- if .Values.fullnameOverride }} 15 | {{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }} 16 | {{- else }} 17 | {{- printf "%s-chromadb" .Release.Name | trunc 63 | trimSuffix "-" }} 18 | {{- end }} 19 | {{- end }} 20 | 21 | 22 | {{/* 23 | Create chart name and version as used by the chart label. 24 | */}} 25 | {{- define "chromadb.chart" -}} 26 | {{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} 27 | {{- end }} 28 | 29 | {{/* 30 | Common labels 31 | */}} 32 | {{- define "chromadb.labels" -}} 33 | helm.sh/chart: {{ include "chromadb.chart" . }} 34 | {{ include "chromadb.selectorLabels" . }} 35 | {{- if .Chart.AppVersion }} 36 | app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} 37 | {{- end }} 38 | app.kubernetes.io/managed-by: {{ .Release.Service }} 39 | {{- end }} 40 | 41 | {{/* 42 | Selector labels 43 | */}} 44 | {{- define "chromadb.selectorLabels" -}} 45 | app.kubernetes.io/name: {{ include "chromadb.name" . }} 46 | app.kubernetes.io/instance: {{ .Release.Name }} 47 | {{- end }} 48 | 49 | {{/* 50 | Create the name of the service account to use 51 | */}} 52 | {{- define "chromadb.serviceAccountName" -}} 53 | {{- if .Values.serviceAccount.create }} 54 | {{- default (include "chromadb.fullname" .) .Values.serviceAccount.name }} 55 | {{- else }} 56 | {{- default "default" .Values.serviceAccount.name }} 57 | {{- end }} 58 | {{- end }} 59 | -------------------------------------------------------------------------------- /charts/chromadb/templates/configmap.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: ConfigMap 3 | metadata: 4 | name: {{ .Release.Name}}-chromadb-configmap 5 | labels: 6 | {{- include "chromadb.labels" . | nindent 4 }} 7 | data: 8 | CHROMA_SERVER_HOST: {{ .Release.Name}}-chromadb 9 | CHROMA_SERVER_HTTP_PORT: "8000" 10 | ANONYMIZED_TELEMETRY: "False" 11 | ALLOW_RESET: "True" 12 | IS_PERSISTENT: "True" 13 | CHROMA_LOG_LEVEL: "DEBUG" 14 | CHROMA_DATA_DIR: "/chroma/chroma" 15 | CHROMA_IMPORT_SETTING: "True" -------------------------------------------------------------------------------- /charts/chromadb/templates/service.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: {{ .Release.Name}}-chromadb 5 | labels: 6 | {{- include "chromadb.labels" . | nindent 4 }} 7 | spec: 8 | type: ClusterIP 9 | ports: 10 | - port: 8000 11 | targetPort: http 12 | protocol: TCP 13 | name: http 14 | selector: 15 | {{- include "chromadb.selectorLabels" . | nindent 4 }} 16 | -------------------------------------------------------------------------------- /charts/chromadb/templates/statefulset.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: apps/v1 2 | kind: StatefulSet 3 | metadata: 4 | name: {{ .Release.Name}}-chromadb 5 | labels: 6 | {{- include "chromadb.labels" . | nindent 4 }} 7 | spec: 8 | replicas: 1 9 | serviceName: {{ include "chromadb.fullname" . }} 10 | selector: 11 | matchLabels: 12 | {{- include "chromadb.selectorLabels" . | nindent 6 }} 13 | template: 14 | metadata: 15 | labels: 16 | {{- include "chromadb.selectorLabels" . | nindent 8 }} 17 | spec: 18 | containers: 19 | - name: chromadb 20 | image: "ghcr.io/chroma-core/chroma:{{.Values.version}}" 21 | imagePullPolicy: IfNotPresent 22 | envFrom: 23 | - configMapRef: 24 | name: {{ include "chromadb.fullname" . }}-configmap 25 | ports: 26 | - name: http 27 | containerPort: 8000 28 | protocol: TCP 29 | volumeMounts: 30 | - name: db-data 31 | mountPath: /chroma/chroma 32 | readOnly: false 33 | resources: 34 | requests: 35 | memory: {{ .Values.resources.requests.memory }} 36 | cpu: {{ .Values.resources.requests.cpu }} 37 | limits: 38 | memory: {{ .Values.resources.limits.memory }} 39 | cpu: {{ .Values.resources.limits.cpu }} 40 | startupProbe: 41 | httpGet: 42 | path: /api/v1/version 43 | port: 8000 44 | failureThreshold: 30 45 | periodSeconds: 10 46 | volumeClaimTemplates: 47 | - metadata: 48 | name: db-data 49 | spec: 50 | accessModes: 51 | - ReadWriteOnce 52 | resources: 53 | requests: 54 | storage: {{.Values.diskSize}} -------------------------------------------------------------------------------- /charts/chromadb/values.schema.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://json-schema.org/draft-07/schema#", 3 | "type": "object", 4 | "properties": { 5 | "image": { 6 | "type": "string", 7 | "default": "ghcr.io/chroma-core/chroma:latest" 8 | }, 9 | "resources": { 10 | "type": "object", 11 | "properties": { 12 | "requests": { 13 | "type": "object", 14 | "properties": { 15 | "cpu": { 16 | "type": "string", 17 | "pattern": "^[0-9]+m$", 18 | "default": "100m", 19 | "mutable": true 20 | }, 21 | "memory": { 22 | "type": "string", 23 | "pattern": "^[0-9]+Gi$", 24 | "default": "1Gi", 25 | "mutable": true 26 | } 27 | } 28 | }, 29 | "limits": { 30 | "type": "object", 31 | "properties": { 32 | "cpu": { 33 | "type": "string", 34 | "pattern": "^[0-9]+m$", 35 | "default": "1000m", 36 | "mutable": true 37 | }, 38 | "memory": { 39 | "type": "string", 40 | "pattern": "^[0-9]+Gi$", 41 | "default": "2Gi", 42 | "mutable": true 43 | } 44 | } 45 | } 46 | } 47 | }, 48 | "diskSize": { 49 | "type": "string", 50 | "pattern": "^[0-9]+Gi$", 51 | "default": "10Gi", 52 | "mutable": true, 53 | "editDisabled": true 54 | }, 55 | "services": { 56 | "type": "array", 57 | "items": { 58 | "type": "object", 59 | "properties": { 60 | "name": { 61 | "type": "string" 62 | } 63 | }, 64 | "required": ["name"] 65 | } 66 | } 67 | } 68 | } -------------------------------------------------------------------------------- /charts/chromadb/values.yaml: -------------------------------------------------------------------------------- 1 | version: 0.6.3 2 | 3 | resources: 4 | requests: 5 | memory: "1Gi" 6 | cpu: "100m" 7 | limits: 8 | memory: "2Gi" 9 | cpu: "1000m" 10 | 11 | diskSize: "10Gi" -------------------------------------------------------------------------------- /charts/cockroachdb/Chart.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v2 2 | appVersion: "1.0" 3 | description: Helm chart for deploying cockroachdb datastore 4 | name: cockroachdb 5 | version: 0.0.4 6 | icon: "https://storage.googleapis.com/zopdev-test-bucket/zop/files/originals/20250402/331014cf-f38d-484f-9246-1c9a045cb9a0-cockroachicon.png" 7 | maintainers: 8 | - name: ZopDev 9 | url: zop.dev 10 | annotations: 11 | type: datasource -------------------------------------------------------------------------------- /charts/cockroachdb/templates/_helpers.tpl: -------------------------------------------------------------------------------- 1 | {{/* 2 | Expand the name of the chart. 3 | */}} 4 | {{- define "cockroachdb.name" -}} 5 | {{- default .Chart.Name .Values.nameOverride | trunc 56 | trimSuffix "-" -}} 6 | {{- end -}} 7 | 8 | {{/* 9 | Create a default fully qualified app name. 10 | We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). 11 | */}} 12 | {{- define "cockroachdb.fullname" -}} 13 | {{- printf "%s-cockroachdb" .Release.Name | trunc 56 | trimSuffix "-" -}} 14 | {{- end -}} 15 | 16 | {{/* 17 | Create chart name and version as used by the chart label. 18 | */}} 19 | {{- define "cockroachdb.chart" -}} 20 | {{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 56 | trimSuffix "-" -}} 21 | {{- end -}} 22 | 23 | {{/* 24 | Create the name of the ServiceAccount to use. 25 | */}} 26 | {{- define "cockroachdb.tls.serviceAccount.name" -}} 27 | {{- if .Values.tls.serviceAccount.create -}} 28 | {{- default (include "cockroachdb.fullname" .) .Values.tls.serviceAccount.name -}} 29 | {{- else -}} 30 | {{- default "default" .Values.tls.serviceAccount.name -}} 31 | {{- end -}} 32 | {{- end -}} 33 | 34 | {{/* 35 | Return the appropriate apiVersion for NetworkPolicy. 36 | */}} 37 | {{- define "cockroachdb.networkPolicy.apiVersion" -}} 38 | {{- if semverCompare ">=1.4-0, <=1.7-0" .Capabilities.KubeVersion.GitVersion -}} 39 | {{- print "extensions/v1beta1" -}} 40 | {{- else if semverCompare "^1.7-0" .Capabilities.KubeVersion.GitVersion -}} 41 | {{- print "networking.k8s.io/v1" -}} 42 | {{- end -}} 43 | {{- end -}} 44 | -------------------------------------------------------------------------------- /charts/cockroachdb/templates/database-configmap.yaml: -------------------------------------------------------------------------------- 1 | {{- range $index, $service := .Values.services }} 2 | apiVersion: v1 3 | kind: ConfigMap 4 | metadata: 5 | name: {{ $.Release.Name }}-{{ $service.database }}-{{ $service.name }}-cockroachdb-configmap 6 | namespace: {{ $.Release.Namespace }} 7 | data: 8 | DB_DIALECT: "cockroachdb" 9 | DB_USER: "{{ $service.name }}-user" 10 | DB_PORT: "26257" 11 | DB_NAME: "{{ $service.database }}" 12 | DB_HOST: "{{ $.Release.Name }}-cockroachdb-public" 13 | --- 14 | {{- end }} 15 | -------------------------------------------------------------------------------- /charts/cockroachdb/templates/database-pod.yaml: -------------------------------------------------------------------------------- 1 | {{- range $index, $service := .Values.services }} 2 | apiVersion: v1 3 | kind: Pod 4 | metadata: 5 | name: cockroachdb-init-{{ $.Release.Name }}-{{ $service.name }} 6 | namespace: {{ $.Release.Namespace }} 7 | spec: 8 | containers: 9 | - name: cockroach-init-role 10 | image: cockroachdb/cockroach 11 | command: ["/bin/sh"] 12 | args: 13 | [ 14 | "-c", 15 | "sleep 40 && ./cockroach sql --insecure --host={{ $.Release.Name }}-cockroachdb -e \"$(cat /etc/config/db-init.sql)\"" 16 | ] 17 | volumeMounts: 18 | - name: secret-volume 19 | mountPath: /etc/config 20 | volumes: 21 | - name: secret-volume 22 | configMap: 23 | name: {{ $.Release.Name }}-{{ $service.name }}-init-script 24 | restartPolicy: OnFailure 25 | --- 26 | {{- end }} 27 | -------------------------------------------------------------------------------- /charts/cockroachdb/templates/ingress.yaml: -------------------------------------------------------------------------------- 1 | {{- if .Values.host }} 2 | apiVersion: networking.k8s.io/v1 3 | kind: Ingress 4 | metadata: 5 | name: {{ .Release.Name }}-cockroachdb 6 | namespace: {{ .Release.Namespace }} 7 | labels: 8 | app: cockroachdb 9 | annotations: 10 | kubernetes.io/ingress.class: "nginx" 11 | nginx.ingress.kubernetes.io/auth-realm: "" 12 | nginx.ingress.kubernetes.io/auth-secret: "" 13 | nginx.ingress.kubernetes.io/auth-type: "" 14 | spec: 15 | rules: 16 | - host: {{ .Values.host }} 17 | http: 18 | paths: 19 | - path: / 20 | pathType: ImplementationSpecific 21 | backend: 22 | service: 23 | name: {{ template "cockroachdb.fullname" . }}-public 24 | port: 25 | number: 8080 26 | tls: 27 | - hosts: 28 | - '{{ .Values.tlsHost | default .Values.host }}' 29 | secretName: {{ .Values.tlsSecretName | default "tls-secret-replica" }} 30 | {{- end }} 31 | -------------------------------------------------------------------------------- /charts/cockroachdb/templates/init-script-config-map.yaml: -------------------------------------------------------------------------------- 1 | {{- range $index, $service := .Values.services }} 2 | apiVersion: v1 3 | kind: ConfigMap 4 | metadata: 5 | name: {{ $.Release.Name }}-{{ $service.name }}-init-script 6 | namespace: {{ $.Release.Namespace }} 7 | data: 8 | db-init.sql: | 9 | CREATE DATABASE IF NOT EXISTS "{{ $service.database }}"; 10 | USE "{{ $service.database }}"; 11 | CREATE USER IF NOT EXISTS "{{ $service.name }}-user"; 12 | GRANT ALL ON DATABASE "{{ $service.database }}" TO "{{ $service.name }}-user"; 13 | --- 14 | {{- end }} 15 | -------------------------------------------------------------------------------- /charts/cockroachdb/templates/job.init.yaml: -------------------------------------------------------------------------------- 1 | kind: Job 2 | apiVersion: batch/v1 3 | metadata: 4 | name: {{ template "cockroachdb.fullname" . }}-init 5 | namespace: {{ .Release.Namespace | quote }} 6 | labels: 7 | helm.sh/chart: {{ template "cockroachdb.chart" . }} 8 | app.kubernetes.io/name: {{ template "cockroachdb.name" . }} 9 | app.kubernetes.io/instance: {{ .Release.Name | quote }} 10 | app.kubernetes.io/managed-by: {{ .Release.Service | quote }} 11 | app.kubernetes.io/component: init 12 | spec: 13 | template: 14 | metadata: 15 | labels: 16 | app.kubernetes.io/name: {{ template "cockroachdb.name" . }} 17 | app.kubernetes.io/instance: {{ .Release.Name | quote }} 18 | app.kubernetes.io/component: init 19 | spec: 20 | restartPolicy: OnFailure 21 | terminationGracePeriodSeconds: 0 22 | containers: 23 | - name: cluster-init 24 | image: "cockroachdb/cockroach:latest" 25 | imagePullPolicy: IfNotPresent 26 | command: 27 | - /bin/bash 28 | - -c 29 | - >- 30 | while true; do 31 | initOUT=$(set -x; 32 | /cockroach/cockroach init 33 | --insecure 34 | --host={{ template "cockroachdb.fullname" . }}-0.{{ template "cockroachdb.fullname" . -}} 35 | :26257 36 | 2>&1); 37 | initRC="$?"; 38 | echo $initOUT; 39 | [[ "$initRC" == "0" ]] && exit 0; 40 | [[ "$initOUT" == *"cluster has already been initialized"* ]] && exit 0; 41 | sleep 5; 42 | done 43 | -------------------------------------------------------------------------------- /charts/cockroachdb/templates/poddisruptionbudget.yaml: -------------------------------------------------------------------------------- 1 | kind: PodDisruptionBudget 2 | apiVersion: policy/v1 3 | metadata: 4 | name: {{ template "cockroachdb.fullname" . }}-budget 5 | namespace: {{ .Release.Namespace | quote }} 6 | labels: 7 | helm.sh/chart: {{ template "cockroachdb.chart" . }} 8 | app.kubernetes.io/name: {{ template "cockroachdb.name" . }} 9 | app.kubernetes.io/instance: {{ .Release.Name | quote }} 10 | app.kubernetes.io/managed-by: {{ .Release.Service | quote }} 11 | {{- with .Values.labels }} 12 | {{- toYaml . | nindent 4 }} 13 | {{- end }} 14 | spec: 15 | selector: 16 | matchLabels: 17 | app.kubernetes.io/name: {{ template "cockroachdb.name" . }} 18 | app.kubernetes.io/instance: {{ .Release.Name | quote }} 19 | app.kubernetes.io/component: cockroachdb 20 | maxUnavailable: 1 21 | -------------------------------------------------------------------------------- /charts/cockroachdb/templates/service.discovery.yaml: -------------------------------------------------------------------------------- 1 | kind: Service 2 | apiVersion: v1 3 | metadata: 4 | name: {{ template "cockroachdb.fullname" . }} 5 | namespace: {{ .Release.Namespace | quote }} 6 | labels: 7 | helm.sh/chart: {{ template "cockroachdb.chart" . }} 8 | app.kubernetes.io/name: {{ template "cockroachdb.name" . }} 9 | app.kubernetes.io/instance: {{ .Release.Name | quote }} 10 | app.kubernetes.io/managed-by: {{ .Release.Service | quote }} 11 | app.kubernetes.io/component: cockroachdb 12 | annotations: 13 | service.alpha.kubernetes.io/tolerate-unready-endpoints: "true" 14 | prometheus.io/scrape: "true" 15 | prometheus.io/path: _status/vars 16 | prometheus.io/port: "8080" 17 | spec: 18 | clusterIP: None 19 | publishNotReadyAddresses: true 20 | ports: 21 | - name: grpc 22 | port: 26257 23 | targetPort: grpc 24 | - name: http 25 | port: 8080 26 | targetPort: http 27 | selector: 28 | app.kubernetes.io/name: {{ template "cockroachdb.name" . }} 29 | app.kubernetes.io/instance: {{ .Release.Name | quote }} 30 | app.kubernetes.io/component: cockroachdb 31 | 32 | -------------------------------------------------------------------------------- /charts/cockroachdb/templates/service.public.yaml: -------------------------------------------------------------------------------- 1 | kind: Service 2 | apiVersion: v1 3 | metadata: 4 | name: {{ template "cockroachdb.fullname" . }}-public 5 | namespace: {{ .Release.Namespace | quote }} 6 | labels: 7 | helm.sh/chart: {{ template "cockroachdb.chart" . }} 8 | app.kubernetes.io/name: {{ template "cockroachdb.name" . }} 9 | app.kubernetes.io/instance: {{ .Release.Name | quote }} 10 | app.kubernetes.io/managed-by: {{ .Release.Service | quote }} 11 | app.kubernetes.io/component: cockroachdb 12 | spec: 13 | type: ClusterIP 14 | ports: 15 | - name: grpc 16 | port: 26257 17 | targetPort: grpc 18 | - name: http 19 | port: 8080 20 | targetPort: http 21 | selector: 22 | app.kubernetes.io/name: {{ template "cockroachdb.name" . }} 23 | app.kubernetes.io/instance: {{ .Release.Name | quote }} 24 | app.kubernetes.io/component: cockroachdb 25 | 26 | -------------------------------------------------------------------------------- /charts/cockroachdb/values.schema.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://json-schema.org/draft-07/schema#", 3 | "type": "object", 4 | "properties": { 5 | "resources": { 6 | "type": "object", 7 | "properties": { 8 | "requests": { 9 | "type": "object", 10 | "properties": { 11 | "memory": { 12 | "type": "string", 13 | "default": "512Mi", "mutable": true 14 | }, 15 | "cpu": { 16 | "type": "string", 17 | "default": "100m", "mutable": true 18 | } 19 | } 20 | }, 21 | "limits": { 22 | "type": "object", 23 | "properties": { 24 | "memory": { 25 | "type": "string", 26 | "default": "512Mi", "mutable": true 27 | }, 28 | "cpu": { 29 | "type": "string", 30 | "default": "100m", "mutable": true 31 | } 32 | } 33 | } 34 | } 35 | }, 36 | "diskSize": { 37 | "type": "string", 38 | "default": "10Gi", "mutable": true, 39 | "editDisabled": true 40 | }, 41 | "version": { 42 | "default": "v25.1.2", 43 | "mutable": true 44 | }, 45 | "services": { 46 | "type": "array", 47 | "items": { 48 | "type": "object", 49 | "properties": { 50 | "name": { 51 | "type": "string" 52 | }, 53 | "database": { 54 | "type": "string" 55 | } 56 | }, 57 | "required": ["name", "database"] 58 | } 59 | } 60 | } 61 | } -------------------------------------------------------------------------------- /charts/cockroachdb/values.yaml: -------------------------------------------------------------------------------- 1 | resources: 2 | limits: 3 | cpu: 100m 4 | memory: 512Mi 5 | requests: 6 | cpu: 100m 7 | memory: 512Mi 8 | 9 | diskSize : 10Gi 10 | 11 | version: v25.1.2 -------------------------------------------------------------------------------- /charts/cron-job/Chart.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | appVersion: "1.0" 3 | description: Helm chart creates a cron-job, service, alerts along with serviceMonitor etc 4 | name: cron-job 5 | version: 0.0.17 6 | icon: "https://zop.dev/logo.png" 7 | maintainers: 8 | - name: ZopDev 9 | url: zop.dev -------------------------------------------------------------------------------- /charts/cron-job/templates/alerts.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: monitoring.coreos.com/v1 2 | kind: PrometheusRule 3 | metadata: 4 | generation: 1 5 | labels: 6 | app: kube-prometheus-stack 7 | heritage: Helm 8 | release: prometheus 9 | name: {{ .Values.name }} 10 | spec: 11 | groups: 12 | - name: {{ .Release.Namespace }}.{{ .Values.name }}.rules 13 | rules: 14 | # Alert if the cron job failed. 15 | - alert: {{ snakecase .Values.name }}_cron_job_failed 16 | annotations: 17 | description: "CronJob {{ .Values.name }} failed to complete in {{.Release.Name}} namespace." 18 | expr: kube_job_status_failed{namespace="{{ .Release.Namespace }}",job_name=~"{{ .Values.name }}-.*"} > {{.Values.alerts.standard.infra.cronjobFailedThreshold}} 19 | labels: 20 | severity: critical 21 | servicealert: "true" 22 | service: {{ .Values.name }} 23 | namespace: {{ .Release.Namespace }} -------------------------------------------------------------------------------- /charts/cron-job/values.yaml: -------------------------------------------------------------------------------- 1 | # Name of the cron 2 | name: hello-api 3 | 4 | # Docker container image with tag 5 | image: "zopdev/sample-go-api:latest" 6 | 7 | imagePullSecrets: 8 | # - gcr-secrets 9 | # - acr-secrets 10 | # - ecr-secrets 11 | 12 | #cron JOB 13 | schedule: "0 */1 * * *" 14 | suspend: false 15 | concurrencyPolicy: "Replace" 16 | command: "" 17 | 18 | # Port on which container runs its service 19 | httpPort: 8000 20 | metricsPort: 2121 21 | 22 | # Resource allocations 23 | minCPU: "100m" 24 | minMemory: "128M" 25 | maxCPU: "500m" 26 | maxMemory: "512M" 27 | 28 | envFrom: 29 | secrets: [] #List of secrets 30 | configmaps: [] #List of Configmaps 31 | 32 | # All environment variables can be passed as a map 33 | env: 34 | APP_NAME: hello-api 35 | 36 | # Environment variables as a list (new format) 37 | envList: 38 | # - name: APP_NAME 39 | # value: hello-api 40 | # - name: DB_HOST 41 | # value: localhost 42 | 43 | 44 | appSecrets: false 45 | 46 | volumeMounts: 47 | configmaps: 48 | # - name: zopdev-configmap 49 | # mountPath: /etc/env 50 | secrets: 51 | # - name: zopdev-secret 52 | # mountPath: /etc/secret 53 | pvc: 54 | # - name: zopdev-volume 55 | # mountPath: /etc/data 56 | 57 | alerts: 58 | standard: 59 | infra: 60 | cronjobFailedThreshold: 0 61 | datastores: 62 | mysql: 63 | postgres: 64 | redis: 65 | surrealdb: 66 | solr: 67 | chromadb: 68 | mariadb: 69 | cockroachdb: 70 | cassandra: 71 | redisdistributed: 72 | scylladb: 73 | kafka: -------------------------------------------------------------------------------- /charts/dgraph/Chart.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v2 2 | appVersion: "1.0" 3 | description: Helm chart for deploying dgraph datastore 4 | name: dgraph 5 | version: 0.0.3 6 | icon: "https://storage.googleapis.com/zopdev-test-bucket/zop/files/originals/20250402/b62a941f-db26-4b89-a1c0-6758a616c028-dgraph.png" 7 | maintainers: 8 | - name: ZopDev 9 | url: zop.dev 10 | annotations: 11 | type: datasource -------------------------------------------------------------------------------- /charts/dgraph/templates/alpha/svc-headless.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: {{ template "dgraph.alpha.fullname" . }}-headless 5 | namespace: {{ include "dgraph.namespace" . }} 6 | labels: 7 | app: {{ template "dgraph.name" . }} 8 | chart: {{ template "dgraph.chart" . }} 9 | component: "alpha" 10 | release: {{ .Release.Name }} 11 | heritage: {{ .Release.Service }} 12 | spec: 13 | type: ClusterIP 14 | clusterIP: None 15 | ports: 16 | - name: grpc-alpha-int 17 | port: 7080 18 | targetPort: 7080 19 | selector: 20 | app: {{ template "dgraph.name" . }} 21 | chart: {{ template "dgraph.chart" . }} 22 | component: "alpha" 23 | release: {{ .Release.Name }} 24 | publishNotReadyAddresses: true 25 | -------------------------------------------------------------------------------- /charts/dgraph/templates/alpha/svc.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: {{ template "dgraph.alpha.fullname" . }} 5 | namespace: {{ include "dgraph.namespace" . }} 6 | labels: 7 | app: {{ template "dgraph.name" . }} 8 | chart: {{ template "dgraph.chart" . }} 9 | component: "alpha" 10 | release: {{ .Release.Name }} 11 | heritage: {{ .Release.Service }} 12 | monitor: "alpha-dgraph-io" 13 | spec: 14 | type: ClusterIP 15 | ports: 16 | - port: 8080 17 | targetPort: 8080 18 | name: http-alpha 19 | - port: 9080 20 | name: grpc-alpha 21 | selector: 22 | app: {{ template "dgraph.name" . }} 23 | chart: {{ template "dgraph.chart" . }} 24 | component: "alpha" 25 | release: {{ .Release.Name }} 26 | -------------------------------------------------------------------------------- /charts/dgraph/templates/config-map.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: ConfigMap 3 | metadata: 4 | name: "{{ .Release.Name }}-dgraph-configmap" 5 | namespace: {{ .Release.Namespace | quote }} 6 | labels: 7 | app.kubernetes.io/component: master 8 | data: 9 | DGRAPH_HOST: {{ .Release.Name}}-dgraph-alpha 10 | DGRAPH_RPC_PORT: "9080" 11 | DGRAPH_HTTP_PORT: "8080" -------------------------------------------------------------------------------- /charts/dgraph/templates/serviceaccount.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: ServiceAccount 3 | automountServiceAccountToken: true 4 | metadata: 5 | name: {{ template "dgraph.serviceAccountName" . }} 6 | namespace: {{ include "dgraph.namespace" . }} 7 | labels: 8 | app: {{ template "dgraph.name" . }} 9 | chart: {{ template "dgraph.chart" . }} 10 | component: "alpha" 11 | release: {{ .Release.Name }} 12 | heritage: {{ .Release.Service }} -------------------------------------------------------------------------------- /charts/dgraph/templates/zero/svc-headless.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: {{ template "dgraph.zero.fullname" . }}-headless 5 | namespace: {{ include "dgraph.namespace" . }} 6 | labels: 7 | app: {{ template "dgraph.name" . }} 8 | chart: {{ template "dgraph.chart" . }} 9 | component: "zero" 10 | release: {{ .Release.Name }} 11 | heritage: {{ .Release.Service }} 12 | spec: 13 | type: ClusterIP 14 | clusterIP: None 15 | ports: 16 | - name: grpc-zero 17 | port: 5080 18 | targetPort: 5080 19 | selector: 20 | app: {{ template "dgraph.name" . }} 21 | chart: {{ template "dgraph.chart" . }} 22 | release: {{ .Release.Name }} 23 | component: "zero" 24 | publishNotReadyAddresses: true 25 | -------------------------------------------------------------------------------- /charts/dgraph/templates/zero/svc.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: {{ template "dgraph.zero.fullname" . }} 5 | namespace: {{ include "dgraph.namespace" . }} 6 | labels: 7 | app: {{ template "dgraph.name" . }} 8 | chart: {{ template "dgraph.chart" . }} 9 | component: "zero" 10 | release: {{ .Release.Name }} 11 | heritage: {{ .Release.Service }} 12 | monitor: "zero-dgraph-io" 13 | spec: 14 | type: ClusterIP 15 | {{- if .Values.zero.externalTrafficPolicy }} 16 | externalTrafficPolicy: {{ .Values.zero.externalTrafficPolicy }} 17 | {{- end }} 18 | ports: 19 | - port: 5080 20 | targetPort: 5080 21 | name: grpc-zero 22 | - port: 6080 23 | targetPort: 6080 24 | name: http-zero 25 | selector: 26 | app: {{ template "dgraph.name" . }} 27 | chart: {{ template "dgraph.chart" . }} 28 | release: {{ .Release.Name }} 29 | component: "zero" 30 | -------------------------------------------------------------------------------- /charts/dgraph/values.yaml: -------------------------------------------------------------------------------- 1 | zero: 2 | resources: 3 | requests: 4 | cpu: "100m" 5 | memory: "100M" 6 | limits: 7 | cpu: "1000m" 8 | memory: "1Gi" 9 | 10 | diskSize: "10Gi" 11 | 12 | alpha: 13 | resources: 14 | requests: 15 | cpu: "100m" 16 | memory: "100M" 17 | limits: 18 | cpu: "1000m" 19 | memory: "1Gi" 20 | 21 | diskSize: "10Gi" 22 | -------------------------------------------------------------------------------- /charts/jupyterhub/Chart.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v2 2 | appVersion: "1.0" 3 | description: Helm chart for Deploying JupyterHub 4 | name: jupyterhub 5 | version: 0.0.3 6 | type: application 7 | icon: "https://storage.googleapis.com/zopdev-test-bucket/zop/files/originals/20250313/e2540703-3750-4d46-ba32-32445e506332-jupyter.png" 8 | maintainers: 9 | - name: ZopDev 10 | url: zop.dev 11 | annotations: 12 | type: application -------------------------------------------------------------------------------- /charts/jupyterhub/templates/hub/configmap.yaml: -------------------------------------------------------------------------------- 1 | kind: ConfigMap 2 | apiVersion: v1 3 | metadata: 4 | name: jupyterhub-configs 5 | labels: 6 | {{- include "jupyterhub.labels" . | nindent 4 }} 7 | data: 8 | {{- /* 9 | Resource names exposed to reliably reference them. 10 | 11 | user-scheduler: "my-helm-release-user-scheduler" 12 | ... 13 | */}} 14 | {{- include "jupyterhub.name-templates" . | nindent 2 }} 15 | 16 | {{- /* 17 | Glob files to allow them to be mounted by the hub pod 18 | 19 | jupyterhub_config: | 20 | multi line string content... 21 | z2jh.py: | 22 | multi line string content... 23 | */}} 24 | {{- (.Files.Glob "files/hub/*").AsConfig | nindent 2 }} 25 | 26 | {{- /* 27 | Store away a checksum of the hook-image-puller daemonset so future upgrades 28 | can compare and decide if it should run or not using the `lookup` function. 29 | */}} 30 | checksum_hook-image-puller: {{ include "jupyterhub.imagePuller.daemonset.hook.checksum" . | quote }} 31 | -------------------------------------------------------------------------------- /charts/jupyterhub/templates/hub/netpol.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: networking.k8s.io/v1 2 | kind: NetworkPolicy 3 | metadata: 4 | name: {{ include "jupyterhub.hub.fullname" . }} 5 | labels: 6 | {{- include "jupyterhub.labels" . | nindent 4 }} 7 | spec: 8 | podSelector: 9 | matchLabels: 10 | {{- include "jupyterhub.matchLabels" . | nindent 6 }} 11 | policyTypes: 12 | - Ingress 13 | - Egress 14 | ingress: 15 | - ports: 16 | - port: http 17 | from: 18 | - podSelector: 19 | matchLabels: 20 | hub.jupyter.org/network-access-hub: "true" 21 | egress: 22 | - to: 23 | - podSelector: 24 | matchLabels: 25 | {{- $_ := merge (dict "componentLabel" "proxy") . }} 26 | {{- include "jupyterhub.matchLabels" $_ | nindent 14 }} 27 | ports: 28 | - port: 8001 29 | 30 | - to: 31 | - podSelector: 32 | matchLabels: 33 | {{- $_ := merge (dict "componentLabel" "singleuser-server") . }} 34 | {{- include "jupyterhub.matchLabels" $_ | nindent 14 }} 35 | ports: 36 | - port: 8888 37 | -------------------------------------------------------------------------------- /charts/jupyterhub/templates/hub/pvc.yaml: -------------------------------------------------------------------------------- 1 | kind: PersistentVolumeClaim 2 | apiVersion: v1 3 | metadata: 4 | name: {{ include "jupyterhub.hub-pvc.fullname" . }} 5 | labels: 6 | {{- include "jupyterhub.labels" . | nindent 4 }} 7 | spec: 8 | accessModes: 9 | - ReadWriteOnce 10 | resources: 11 | requests: 12 | storage: 1Gi 13 | -------------------------------------------------------------------------------- /charts/jupyterhub/templates/hub/rbac.yaml: -------------------------------------------------------------------------------- 1 | kind: Role 2 | apiVersion: rbac.authorization.k8s.io/v1 3 | metadata: 4 | name: {{ include "jupyterhub.hub.fullname" . }} 5 | labels: 6 | {{- include "jupyterhub.labels" . | nindent 4 }} 7 | rules: 8 | - apiGroups: [""] 9 | resources: ["pods", "persistentvolumeclaims", "secrets", "services"] 10 | verbs: ["get", "watch", "list", "create", "delete"] 11 | - apiGroups: [""] 12 | resources: ["events"] 13 | verbs: ["get", "watch", "list"] 14 | --- 15 | kind: RoleBinding 16 | apiVersion: rbac.authorization.k8s.io/v1 17 | metadata: 18 | name: {{ include "jupyterhub.hub.fullname" . }} 19 | labels: 20 | {{- include "jupyterhub.labels" . | nindent 4 }} 21 | subjects: 22 | - kind: ServiceAccount 23 | name: {{ include "jupyterhub.hub-serviceaccount.fullname" . }} 24 | namespace: "{{ .Release.Namespace }}" 25 | roleRef: 26 | kind: Role 27 | name: {{ include "jupyterhub.hub.fullname" . }} 28 | apiGroup: rbac.authorization.k8s.io -------------------------------------------------------------------------------- /charts/jupyterhub/templates/hub/secret.yaml: -------------------------------------------------------------------------------- 1 | kind: Secret 2 | apiVersion: v1 3 | metadata: 4 | name: "jupyterhub-secrets" 5 | labels: 6 | {{- include "jupyterhub.labels" . | nindent 4 }} 7 | type: Opaque 8 | data: 9 | {{- $values := merge dict .Values }} 10 | {{- /* also passthrough subset of Chart / Release */}} 11 | {{- $_ := set $values "Chart" (dict "Name" .Chart.Name "Version" .Chart.Version "AppVersion" .Chart.AppVersion) }} 12 | {{- $_ := set $values "Release" (pick .Release "Name" "Namespace" "Service") }} 13 | values.yaml: {{ $values | toYaml | b64enc | quote }} 14 | hub.config.ConfigurableHTTPProxy.auth_token: {{ include "jupyterhub.hub.config.ConfigurableHTTPProxy.auth_token" . | required "This should not happen: blank output from 'jupyterhub.hub.config.ConfigurableHTTPProxy.auth_token' template" | b64enc | quote }} 15 | hub.config.JupyterHub.cookie_secret: {{ include "jupyterhub.hub.config.JupyterHub.cookie_secret" . | required "This should not happen: blank output from 'jupyterhub.hub.config.JupyterHub.cookie_secret' template" | b64enc | quote }} 16 | hub.config.CryptKeeper.keys: {{ include "jupyterhub.hub.config.CryptKeeper.keys" . | required "This should not happen: blank output from 'jupyterhub.hub.config.CryptKeeper.keys' template" | b64enc | quote }} -------------------------------------------------------------------------------- /charts/jupyterhub/templates/hub/service.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: {{ include "jupyterhub.hub.fullname" . }} 5 | labels: 6 | {{- include "jupyterhub.labels" . | nindent 4 }} 7 | annotations: 8 | prometheus.io/scrape: "true" 9 | prometheus.io/path: {{ .Values.hub.baseUrl | trimSuffix "/" }}/hub/metrics 10 | prometheus.io/port: "8081" 11 | spec: 12 | type: ClusterIP 13 | selector: 14 | {{- include "jupyterhub.matchLabels" . | nindent 4 }} 15 | ports: 16 | - name: hub 17 | port: 8081 18 | targetPort: http 19 | -------------------------------------------------------------------------------- /charts/jupyterhub/templates/hub/serviceaccount.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: ServiceAccount 3 | metadata: 4 | name: {{ include "jupyterhub.hub-serviceaccount.fullname" . }} 5 | labels: 6 | {{- include "jupyterhub.labels" . | nindent 4 }} 7 | -------------------------------------------------------------------------------- /charts/jupyterhub/templates/image-puller/daemonset-continuous.yaml: -------------------------------------------------------------------------------- 1 | {{- /* 2 | The continuous-image-puller daemonset task is to pull required images to nodes 3 | that are added in between helm upgrades, for example by manually adding a node 4 | or by the cluster autoscaler. 5 | */}} 6 | {{- if .Values.prePuller.continuous.enabled }} 7 | {{- include "jupyterhub.imagePuller.daemonset.continuous" . }} 8 | {{- end }} 9 | -------------------------------------------------------------------------------- /charts/jupyterhub/templates/image-puller/daemonset-hook.yaml: -------------------------------------------------------------------------------- 1 | {{- /* 2 | The hook-image-puller daemonset will be created with the highest priority during 3 | helm upgrades. It's task is to pull the required images on all nodes. When the 4 | image-awaiter job confirms the required images to be pulled, the daemonset is 5 | deleted. Only then will the actual helm upgrade start. 6 | */}} 7 | {{- if (include "jupyterhub.imagePuller.daemonset.hook.install" .) -}} 8 | {{- include "jupyterhub.imagePuller.daemonset.hook" . }} 9 | {{- end }} 10 | -------------------------------------------------------------------------------- /charts/jupyterhub/templates/image-puller/rbac.yaml: -------------------------------------------------------------------------------- 1 | {{- if (include "jupyterhub.imagePuller.daemonset.hook.install" .) -}} 2 | kind: Role 3 | apiVersion: rbac.authorization.k8s.io/v1 4 | metadata: 5 | name: {{ include "jupyterhub.hook-image-awaiter.fullname" . }} 6 | labels: 7 | {{- include "jupyterhub.labels" . | nindent 4 }} 8 | hub.jupyter.org/deletable: "true" 9 | annotations: 10 | "helm.sh/hook": pre-install,pre-upgrade 11 | "helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded 12 | "helm.sh/hook-weight": "0" 13 | rules: 14 | - apiGroups: ["apps"] # "" indicates the core API group 15 | resources: ["daemonsets"] 16 | verbs: ["get"] 17 | --- 18 | {{- /* 19 | ... as declared by this binding. 20 | */}} 21 | kind: RoleBinding 22 | apiVersion: rbac.authorization.k8s.io/v1 23 | metadata: 24 | name: {{ include "jupyterhub.hook-image-awaiter.fullname" . }} 25 | labels: 26 | {{- include "jupyterhub.labels" . | nindent 4 }} 27 | hub.jupyter.org/deletable: "true" 28 | annotations: 29 | "helm.sh/hook": pre-install,pre-upgrade 30 | "helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded 31 | "helm.sh/hook-weight": "0" 32 | subjects: 33 | - kind: ServiceAccount 34 | name: {{ include "jupyterhub.hook-image-awaiter-serviceaccount.fullname" . }} 35 | namespace: "{{ .Release.Namespace }}" 36 | roleRef: 37 | kind: Role 38 | name: {{ include "jupyterhub.hook-image-awaiter.fullname" . }} 39 | apiGroup: rbac.authorization.k8s.io 40 | {{- end }} 41 | -------------------------------------------------------------------------------- /charts/jupyterhub/templates/image-puller/serviceaccount-continuous.yaml: -------------------------------------------------------------------------------- 1 | {{- if .Values.prePuller.continuous.enabled -}} 2 | apiVersion: v1 3 | kind: ServiceAccount 4 | metadata: 5 | name: {{ include "jupyterhub.continuous-image-puller.fullname" . }} 6 | labels: 7 | {{- include "jupyterhub.labels" . | nindent 4 }} 8 | {{- end }} 9 | 10 | -------------------------------------------------------------------------------- /charts/jupyterhub/templates/image-puller/serviceaccount-hook.yaml: -------------------------------------------------------------------------------- 1 | {{- if (include "jupyterhub.imagePuller.daemonset.hook.install" .) -}} 2 | apiVersion: v1 3 | kind: ServiceAccount 4 | metadata: 5 | name: {{ include "jupyterhub.hook-image-puller-serviceaccount.fullname" . }} 6 | labels: 7 | {{- include "jupyterhub.labels" . | nindent 4 }} 8 | hub.jupyter.org/deletable: "true" 9 | annotations: 10 | "helm.sh/hook": pre-install,pre-upgrade 11 | "helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded 12 | "helm.sh/hook-weight": "-10" 13 | {{- end }} 14 | 15 | -------------------------------------------------------------------------------- /charts/jupyterhub/templates/image-puller/serviceaccount.yaml: -------------------------------------------------------------------------------- 1 | {{- if (include "jupyterhub.imagePuller.daemonset.hook.install" .) -}} 2 | apiVersion: v1 3 | kind: ServiceAccount 4 | metadata: 5 | name: {{ include "jupyterhub.hook-image-awaiter-serviceaccount.fullname" . }} 6 | labels: 7 | {{- include "jupyterhub.labels" . | nindent 4 }} 8 | hub.jupyter.org/deletable: "true" 9 | annotations: 10 | "helm.sh/hook": pre-install,pre-upgrade 11 | "helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded 12 | "helm.sh/hook-weight": "0" 13 | {{- end }} 14 | -------------------------------------------------------------------------------- /charts/jupyterhub/templates/ingress.yaml: -------------------------------------------------------------------------------- 1 | {{- if and .Values.service.nginx .Values.service.nginx.host }} 2 | apiVersion: networking.k8s.io/v1 3 | kind: Ingress 4 | metadata: 5 | name: {{ include "jupyterhub.ingress.fullname" . }} 6 | namespace: {{ .Release.Namespace }} 7 | labels: 8 | {{- include "jupyterhub.labels" . | nindent 4 }} 9 | annotations: 10 | kubernetes.io/ingress.class: "nginx" 11 | nginx.ingress.kubernetes.io/auth-realm: "" 12 | nginx.ingress.kubernetes.io/auth-secret: "" 13 | nginx.ingress.kubernetes.io/auth-type: "" 14 | spec: 15 | rules: 16 | - host: {{ .Values.service.nginx.host }} 17 | http: 18 | paths: 19 | - path: / 20 | pathType: ImplementationSpecific 21 | backend: 22 | service: 23 | name: {{ include "jupyterhub.proxy-public.fullname" $ }} 24 | port: 25 | number: 80 26 | tls: 27 | - hosts: 28 | - '{{ .Values.service.nginx.tlsHost | default .Values.service.nginx.host }}' 29 | secretName: {{ .Values.service.nginx.tlsSecretName | default "tls-secret-replica" }} 30 | {{- end }} -------------------------------------------------------------------------------- /charts/jupyterhub/templates/proxy/autohttps/_configmap-dynamic.yaml: -------------------------------------------------------------------------------- 1 | {{- define "jupyterhub.dynamic.yaml" -}} 2 | http: 3 | middlewares: 4 | hsts: 5 | headers: 6 | stsIncludeSubdomains: flase 7 | stsPreload: false 8 | stsSeconds: 15724800 9 | redirect: 10 | redirectScheme: 11 | permanent: true 12 | scheme: https 13 | scheme: 14 | headers: 15 | customRequestHeaders: 16 | X-Scheme: https 17 | routers: 18 | default: 19 | entrypoints: 20 | - "https" 21 | middlewares: 22 | - "hsts" 23 | - "scheme" 24 | rule: PathPrefix(`/`) 25 | service: default 26 | tls: 27 | certResolver: default 28 | domains: 29 | {{- range $host := .Values.proxy.https.hosts }} 30 | - main: {{ $host }} 31 | {{- end }} 32 | options: default 33 | 34 | insecure: 35 | entrypoints: 36 | - "http" 37 | middlewares: 38 | - "redirect" 39 | rule: PathPrefix(`/`) 40 | service: default 41 | 42 | services: 43 | default: 44 | loadBalancer: 45 | servers: 46 | - url: 'http://proxy-http:8000/' 47 | 48 | tls: 49 | options: 50 | default: 51 | cipherSuites: 52 | - TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 53 | - TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 54 | - TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 55 | - TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 56 | - TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305 57 | - TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 58 | minVersion: VersionTLS12 59 | sniStrict: true 60 | {{- end }} 61 | -------------------------------------------------------------------------------- /charts/jupyterhub/templates/proxy/autohttps/_configmap-traefik.yaml: -------------------------------------------------------------------------------- 1 | {{- define "jupyterhub.traefik.yaml" -}} 2 | accessLog: 3 | # Redact commonly sensitive headers 4 | fields: 5 | headers: 6 | names: 7 | Authorization: redacted 8 | Cookie: redacted 9 | Set-Cookie: redacted 10 | X-Xsrftoken: redacted 11 | # Only log errors 12 | filters: 13 | statusCodes: 14 | - 500-599 15 | 16 | # Automatically acquire certificates certificates form a Certificate 17 | # Authority (CA) like Let's Encrypt using the ACME protocol's HTTP-01 18 | # challenge. 19 | # 20 | # ref: https://docs.traefik.io/https/acme/#certificate-resolvers 21 | certificatesResolvers: 22 | default: 23 | acme: 24 | caServer: {{ .Values.proxy.https.letsencrypt.acmeServer }} 25 | email: {{ .Values.proxy.https.letsencrypt.contactEmail }} 26 | httpChallenge: 27 | entryPoint: http 28 | storage: /etc/acme/acme.json 29 | 30 | # Let Traefik listen to port 80 and port 443 31 | # 32 | # ref: https://docs.traefik.io/routing/entrypoints/ 33 | entryPoints: 34 | # Port 80, used for: 35 | # - ACME HTTP-01 challenges 36 | # - Redirects to HTTPS 37 | http: 38 | address: ':8080' 39 | # Port 443, used for: 40 | # - TLS Termination Proxy, where HTTPS transitions to HTTP. 41 | https: 42 | address: ':8443' 43 | # Configure a high idle timeout for our websockets connections 44 | transport: 45 | respondingTimeouts: 46 | idleTimeout: 10m0s 47 | 48 | # Config of logs about what happens to Traefik itself (startup, 49 | # configuration, events, shutdown, and so on). 50 | # 51 | # ref: https://docs.traefik.io/observability/logs 52 | log: 53 | level: WARN 54 | 55 | # Let Traefik monitor another file we mount for dynamic configuration. As we 56 | # mount this file through this configmap, we can make a `kubectl edit` on the 57 | # configmap and have Traefik update on changes to dynamic.yaml. 58 | providers: 59 | file: 60 | filename: /etc/traefik/dynamic.yaml 61 | {{- end }} 62 | -------------------------------------------------------------------------------- /charts/jupyterhub/templates/proxy/autohttps/configmap.yaml: -------------------------------------------------------------------------------- 1 | {{- $HTTPS := (and .Values.proxy.https.hosts .Values.proxy.https.enabled) }} 2 | {{- $autoHTTPS := (and $HTTPS (eq .Values.proxy.https.type "letsencrypt")) }} 3 | {{- if $autoHTTPS -}} 4 | {{- $_ := .Values.proxy.https.letsencrypt.contactEmail | required "proxy.https.letsencrypt.contactEmail is a required field" -}} 5 | 6 | # This configmap contains Traefik configuration files to be mounted. 7 | # - traefik.yaml will only be read during startup (static configuration) 8 | # - dynamic.yaml will be read on change (dynamic configuration) 9 | # 10 | # ref: https://docs.traefik.io/getting-started/configuration-overview/ 11 | # 12 | # The configuration files are first rendered with Helm templating to large YAML 13 | # strings. Then we use the fromYAML function on these strings to get an object, 14 | # that we in turn merge with user provided extra configuration. 15 | # 16 | kind: ConfigMap 17 | apiVersion: v1 18 | metadata: 19 | name: {{ include "jupyterhub.autohttps.fullname" . }} 20 | labels: 21 | {{- include "jupyterhub.labels" . | nindent 4 }} 22 | data: 23 | traefik.yaml: | 24 | {{- include "jupyterhub.traefik.yaml" . | fromYaml | toYaml | nindent 4 }} 25 | dynamic.yaml: | 26 | {{- include "jupyterhub.dynamic.yaml" . | fromYaml | toYaml | nindent 4 }} 27 | 28 | {{- end }} 29 | -------------------------------------------------------------------------------- /charts/jupyterhub/templates/proxy/autohttps/rbac.yaml: -------------------------------------------------------------------------------- 1 | {{- $HTTPS := (and .Values.proxy.https.hosts .Values.proxy.https.enabled) -}} 2 | {{- $autoHTTPS := (and $HTTPS (eq .Values.proxy.https.type "letsencrypt")) -}} 3 | {{- if $autoHTTPS -}} 4 | {{- if .Values.rbac.create -}} 5 | apiVersion: rbac.authorization.k8s.io/v1 6 | kind: Role 7 | metadata: 8 | name: {{ include "jupyterhub.autohttps.fullname" . }} 9 | labels: 10 | {{- include "jupyterhub.labels" . | nindent 4 }} 11 | rules: 12 | - apiGroups: [""] 13 | resources: ["secrets"] 14 | verbs: ["get", "patch", "list", "create"] 15 | --- 16 | apiVersion: rbac.authorization.k8s.io/v1 17 | kind: RoleBinding 18 | metadata: 19 | name: {{ include "jupyterhub.autohttps.fullname" . }} 20 | labels: 21 | {{- include "jupyterhub.labels" . | nindent 4 }} 22 | subjects: 23 | - kind: ServiceAccount 24 | name: {{ include "jupyterhub.autohttps-serviceaccount.fullname" . }} 25 | apiGroup: 26 | roleRef: 27 | kind: Role 28 | name: {{ include "jupyterhub.autohttps.fullname" . }} 29 | apiGroup: rbac.authorization.k8s.io 30 | {{- end }} 31 | {{- end }} 32 | -------------------------------------------------------------------------------- /charts/jupyterhub/templates/proxy/autohttps/service.yaml: -------------------------------------------------------------------------------- 1 | {{- $HTTPS := (and .Values.proxy.https.hosts .Values.proxy.https.enabled) }} 2 | {{- $autoHTTPS := (and $HTTPS (eq .Values.proxy.https.type "letsencrypt")) }} 3 | {{- if $autoHTTPS -}} 4 | apiVersion: v1 5 | kind: Service 6 | metadata: 7 | name: {{ include "jupyterhub.proxy-http.fullname" . }} 8 | labels: 9 | {{- include "jupyterhub.labels" . | nindent 4 }} 10 | spec: 11 | type: ClusterIP 12 | selector: 13 | {{- $_ := merge (dict "componentLabel" "proxy") . }} 14 | {{- include "jupyterhub.matchLabels" $_ | nindent 4 }} 15 | ports: 16 | - port: 8000 17 | targetPort: http 18 | {{- end }} 19 | -------------------------------------------------------------------------------- /charts/jupyterhub/templates/proxy/autohttps/serviceaccount.yaml: -------------------------------------------------------------------------------- 1 | {{- $HTTPS := (and .Values.proxy.https.hosts .Values.proxy.https.enabled) -}} 2 | {{- $autoHTTPS := (and $HTTPS (eq .Values.proxy.https.type "letsencrypt")) -}} 3 | {{- if $autoHTTPS -}} 4 | apiVersion: v1 5 | kind: ServiceAccount 6 | metadata: 7 | name: {{ include "jupyterhub.autohttps-serviceaccount.fullname" . }} 8 | labels: 9 | {{- include "jupyterhub.labels" . | nindent 4 }} 10 | {{- end }} 11 | -------------------------------------------------------------------------------- /charts/jupyterhub/templates/proxy/service.yaml: -------------------------------------------------------------------------------- 1 | {{- $enabled := .Values.proxy.https.enabled -}} 2 | {{- $autoHTTPS := and $enabled (and (eq .Values.proxy.https.type "letsencrypt") .Values.proxy.https.hosts) -}} 3 | {{- $manualHTTPS := and $enabled (eq .Values.proxy.https.type "manual") -}} 4 | {{- $manualHTTPSwithsecret := and $enabled (eq .Values.proxy.https.type "secret") -}} 5 | {{- $offloadHTTPS := and $enabled (eq .Values.proxy.https.type "offload") -}} 6 | {{- $valid := or $autoHTTPS (or $manualHTTPS (or $manualHTTPSwithsecret $offloadHTTPS)) -}} 7 | {{- $HTTPS := and $enabled $valid -}} 8 | apiVersion: v1 9 | kind: Service 10 | metadata: 11 | name: {{ include "jupyterhub.proxy-api.fullname" . }} 12 | labels: 13 | {{- $_ := merge (dict "componentSuffix" "-api") . }} 14 | {{- include "jupyterhub.labels" $_ | nindent 4 }} 15 | spec: 16 | selector: 17 | {{- include "jupyterhub.matchLabels" . | nindent 4 }} 18 | ports: 19 | - port: 8001 20 | targetPort: api 21 | --- 22 | apiVersion: v1 23 | kind: Service 24 | metadata: 25 | name: {{ include "jupyterhub.proxy-public.fullname" . }} 26 | labels: 27 | {{- $_ := merge (dict "componentSuffix" "-public") . }} 28 | {{- include "jupyterhub.labels" $_ | nindent 4 }} 29 | spec: 30 | selector: 31 | # This service will target the autohttps pod if autohttps is configured, and 32 | # the proxy pod if not. When autohttps is configured, the service proxy-http 33 | # will be around to target the proxy pod directly. 34 | {{- if $autoHTTPS }} 35 | {{- $_ := merge (dict "componentLabel" "autohttps") . -}} 36 | {{- include "jupyterhub.matchLabels" $_ | nindent 4 }} 37 | {{- else }} 38 | {{- include "jupyterhub.matchLabels" . | nindent 4 }} 39 | {{- end }} 40 | ports: 41 | {{- if $HTTPS }} 42 | - name: https 43 | port: 443 44 | # When HTTPS termination is handled outside our helm chart, pass traffic 45 | # coming in via this Service's port 443 to targeted pod's port meant for 46 | # HTTP traffic. 47 | {{- if $offloadHTTPS }} 48 | targetPort: http 49 | {{- else }} 50 | targetPort: https 51 | {{- end }} 52 | {{- end }} 53 | - name: http 54 | port: 80 55 | targetPort: http 56 | type: LoadBalancer -------------------------------------------------------------------------------- /charts/jupyterhub/templates/scheduling/user-placeholder/pdb.yaml: -------------------------------------------------------------------------------- 1 | 2 | apiVersion: policy/v1 3 | kind: PodDisruptionBudget 4 | metadata: 5 | name: {{ include "jupyterhub.user-placeholder.fullname" . }} 6 | labels: 7 | {{- include "jupyterhub.labels" . | nindent 4 }} 8 | spec: 9 | minAvailable: 0 10 | selector: 11 | matchLabels: 12 | {{- include "jupyterhub.matchLabels" . | nindent 6 }} 13 | -------------------------------------------------------------------------------- /charts/jupyterhub/templates/scheduling/user-placeholder/statefulset.yaml: -------------------------------------------------------------------------------- 1 | 2 | apiVersion: apps/v1 3 | kind: StatefulSet 4 | metadata: 5 | name: {{ include "jupyterhub.user-placeholder.fullname" . }} 6 | labels: 7 | {{- include "jupyterhub.labels" . | nindent 4 }} 8 | spec: 9 | podManagementPolicy: Parallel 10 | replicas: 0 11 | selector: 12 | matchLabels: 13 | {{- include "jupyterhub.matchLabels" . | nindent 6 }} 14 | serviceName: {{ include "jupyterhub.user-placeholder.fullname" . }} 15 | template: 16 | metadata: 17 | labels: 18 | {{- /* Changes here will cause the Deployment to restart the pods. */}} 19 | {{- include "jupyterhub.matchLabelsLegacyAndModern" . | nindent 8 }} 20 | spec: 21 | {{- if .Values.scheduling.userScheduler.enabled }} 22 | schedulerName: {{ include "jupyterhub.user-scheduler.fullname" . }} 23 | {{- end }} 24 | {{- if include "jupyterhub.userAffinity" . }} 25 | affinity: 26 | {{- include "jupyterhub.userAffinity" . | nindent 8 }} 27 | {{- end }} 28 | terminationGracePeriodSeconds: 0 29 | automountServiceAccountToken: false 30 | 31 | containers: 32 | - name: pause 33 | image: registry.k8s.io/pause:3.10 34 | {{- if (include "jupyterhub.singleuser.resources" .) }} 35 | resources: 36 | {{- include "jupyterhub.singleuser.resources" . | nindent 12 }} 37 | {{- end }} 38 | securityContext: 39 | runAsNonRoot: true 40 | runAsUser: 65534 # nobody user 41 | runAsGroup: 65534 # nobody group 42 | allowPrivilegeEscalation: false 43 | capabilities: 44 | drop: ["ALL"] 45 | seccompProfile: 46 | type: "RuntimeDefault" 47 | -------------------------------------------------------------------------------- /charts/jupyterhub/templates/scheduling/user-scheduler/configmap.yaml: -------------------------------------------------------------------------------- 1 | {{- if .Values.scheduling.userScheduler.enabled -}} 2 | kind: ConfigMap 3 | apiVersion: v1 4 | metadata: 5 | name: {{ include "jupyterhub.user-scheduler-deploy.fullname" . }} 6 | labels: 7 | {{- include "jupyterhub.labels" . | nindent 4 }} 8 | data: 9 | {{- /* 10 | This is configuration of a k8s official kube-scheduler binary running in the 11 | user-scheduler. 12 | 13 | ref: https://kubernetes.io/docs/reference/scheduling/config/ 14 | ref: https://kubernetes.io/docs/reference/config-api/kube-scheduler-config.v1/ 15 | */}} 16 | config.yaml: | 17 | apiVersion: kubescheduler.config.k8s.io/v1 18 | kind: KubeSchedulerConfiguration 19 | leaderElection: 20 | resourceLock: leases 21 | resourceName: {{ include "jupyterhub.user-scheduler-lock.fullname" . }} 22 | resourceNamespace: "{{ .Release.Namespace }}" 23 | profiles: 24 | - schedulerName: {{ include "jupyterhub.user-scheduler.fullname" . }} 25 | plugins: 26 | score: 27 | disabled: 28 | - name: NodeResourcesBalancedAllocation 29 | - name: NodeAffinity 30 | - name: InterPodAffinity 31 | - name: NodeResourcesFit 32 | - name: ImageLocality 33 | enabled: 34 | - name: NodeAffinity 35 | weight: 14631 36 | - name: InterPodAffinity 37 | weight: 1331 38 | - name: NodeResourcesFit 39 | weight: 121 40 | - name: ImageLocality 41 | weight: 11 42 | pluginConfig: 43 | - name: NodeResourcesFit 44 | args: 45 | scoringStrategy: 46 | type: MostAllocated 47 | resources: 48 | - name: cpu 49 | weight: 1 50 | - name: memory 51 | weight: 1 52 | {{- end }} 53 | -------------------------------------------------------------------------------- /charts/jupyterhub/templates/scheduling/user-scheduler/pdb.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: policy/v1 2 | kind: PodDisruptionBudget 3 | metadata: 4 | name: {{ include "jupyterhub.user-scheduler-deploy.fullname" . }} 5 | labels: 6 | {{- include "jupyterhub.labels" . | nindent 4 }} 7 | spec: 8 | maxUnavailable: 1 9 | selector: 10 | matchLabels: 11 | {{- include "jupyterhub.matchLabels" . | nindent 6 }} 12 | -------------------------------------------------------------------------------- /charts/jupyterhub/templates/scheduling/user-scheduler/serviceaccount.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: ServiceAccount 3 | metadata: 4 | name: {{ include "jupyterhub.user-scheduler-serviceaccount.fullname" . }} 5 | labels: 6 | {{- include "jupyterhub.labels" . | nindent 4 }} -------------------------------------------------------------------------------- /charts/jupyterhub/templates/singleuser/netpol.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: networking.k8s.io/v1 2 | kind: NetworkPolicy 3 | metadata: 4 | name: {{ include "jupyterhub.singleuser.fullname" . }} 5 | labels: 6 | {{- include "jupyterhub.labels" . | nindent 4 }} 7 | spec: 8 | podSelector: 9 | matchLabels: 10 | {{- $_ := merge (dict "componentLabel" "singleuser-server") . }} 11 | {{- include "jupyterhub.matchLabels" $_ | nindent 6 }} 12 | policyTypes: 13 | - Ingress 14 | - Egress 15 | ingress: 16 | {{- with .Values.singleuser.networkPolicy.allowedIngressPorts }} 17 | - ports: 18 | {{- range $port := . }} 19 | - port: {{ $port }} 20 | {{- end }} 21 | {{- end }} 22 | - ports: 23 | - port: notebook-port 24 | from: 25 | # source 1 - labeled pods 26 | - podSelector: 27 | matchLabels: 28 | hub.jupyter.org/network-access-singleuser: "true" 29 | {{- with .Values.singleuser.networkPolicy.ingress }} 30 | {{- . | toYaml | nindent 4 }} 31 | {{- end }} 32 | egress: 33 | # singleuser-server --> hub 34 | - to: 35 | - podSelector: 36 | matchLabels: 37 | {{- $_ := merge (dict "componentLabel" "hub") . }} 38 | {{- include "jupyterhub.matchLabels" $_ | nindent 14 }} 39 | ports: 40 | - port: 8081 41 | - to: 42 | - podSelector: 43 | matchLabels: 44 | {{- $_ := merge (dict "componentLabel" "proxy") . }} 45 | {{- include "jupyterhub.matchLabels" $_ | nindent 14 }} 46 | ports: 47 | - port: 8000 48 | - to: 49 | - podSelector: 50 | matchLabels: 51 | {{- $_ := merge (dict "componentLabel" "autohttps") . }} 52 | {{- include "jupyterhub.matchLabels" $_ | nindent 14 }} 53 | ports: 54 | - port: 8080 55 | - port: 8443 56 | {{- with (include "jupyterhub.networkPolicy.renderEgressRules" (list . .Values.singleuser.networkPolicy)) }} 57 | {{- . | nindent 4 }} 58 | {{- end }} 59 | -------------------------------------------------------------------------------- /charts/jupyterhub/values.yaml: -------------------------------------------------------------------------------- 1 | hub: 2 | config: 3 | JupyterHub: 4 | admin_access: true 5 | authenticator_class: dummy 6 | baseUrl: / 7 | 8 | proxy: 9 | https: 10 | enabled: false 11 | type: letsencrypt 12 | letsencrypt: 13 | contactEmail: 14 | acmeServer: https://acme-v02.api.letsencrypt.org/directory 15 | secret: 16 | name: 17 | key: tls.key 18 | crt: tls.crt 19 | hosts: [] 20 | 21 | singleuser: 22 | networkTools: 23 | image: 24 | name: quay.io/jupyterhub/k8s-network-tools 25 | tag: "4.1.1-0.dev.git.6949.h138f95a8" 26 | 27 | cloudMetadata: 28 | blockWithIptables: true 29 | ip: 169.254.169.254 30 | networkPolicy: 31 | enabled: true 32 | egressAllowRules: 33 | cloudMetadataServer: false 34 | dnsPortsCloudMetadataServer: true 35 | dnsPortsKubeSystemNamespace: true 36 | dnsPortsPrivateIPs: true 37 | nonPrivateIPs: true 38 | privateIPs: false 39 | interNamespaceAccessLabels: ignore 40 | events: true 41 | extraLabels: 42 | hub.jupyter.org/network-access-hub: "true" 43 | allowPrivilegeEscalation: false 44 | uid: 1000 45 | fsGid: 100 46 | storage: 47 | type: dynamic 48 | static: 49 | pvcName: 50 | subPath: "{username}" 51 | capacity: 10Gi 52 | homeMountPath: /home/jovyan 53 | dynamic: 54 | storageClass: 55 | pvcNameTemplate: 56 | volumeNameTemplate: volume-{user_server} 57 | storageAccessModes: [ReadWriteOnce] 58 | 59 | image: 60 | name: quay.io/jupyterhub/k8s-singleuser-sample 61 | tag: "4.1.1-0.dev.git.6957.h0e735928" 62 | cmd: jupyterhub-singleuser 63 | 64 | scheduling: 65 | userScheduler: 66 | enabled: true 67 | replicas: 2 68 | logLevel: 4 69 | 70 | prePuller: 71 | hook: 72 | enabled: true 73 | pullOnlyOnChanges: true 74 | 75 | continuous: 76 | enabled: true 77 | 78 | service: 79 | nginx: 80 | host: 81 | tlsHost: 82 | tlsSecretName: 83 | 84 | cull: 85 | enabled: true 86 | users: false 87 | adminUsers: true 88 | removeNamedServers: false 89 | timeout: 3600 90 | every: 600 91 | concurrency: 10 92 | maxAge: 0 93 | -------------------------------------------------------------------------------- /charts/kafka/Chart.lock: -------------------------------------------------------------------------------- 1 | dependencies: 2 | - name: zookeeper 3 | repository: https://helm.zop.dev 4 | version: v0.0.1 5 | digest: sha256:86f04cd4de283e8af1361a389aeb45371355a4f99d4ac29c4fb00e6d7371b8f4 6 | generated: "2025-04-03T11:11:33.995026+05:30" 7 | -------------------------------------------------------------------------------- /charts/kafka/Chart.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v2 2 | appVersion: "1.0" 3 | description: Helm chart deploys kafka 4 | name: kafka 5 | version: 0.0.4 6 | icon: "https://storage.googleapis.com/zopdev-test-bucket/zop/files/originals/20250206/800a8c94-a94d-4dbe-9b71-f8e21963da2f-kafka.png" 7 | maintainers: 8 | - name: ZopDev 9 | url: zop.dev 10 | dependencies: 11 | - alias: zookeeper 12 | condition: zookeeper.enabled 13 | name: zookeeper 14 | repository: "https://helm.zop.dev" 15 | version: 0.0.1 16 | annotations: 17 | type: datasource -------------------------------------------------------------------------------- /charts/kafka/templates/_helpers.tpl: -------------------------------------------------------------------------------- 1 | {{- define "kafka.name" -}} 2 | {{- default .Chart.Name | trunc 63 | trimSuffix "-" }} 3 | {{- end }} 4 | 5 | {{- define "kafka.fullname" -}} 6 | {{- printf "%s-kafka" .Release.Name | trunc 63 | trimSuffix "-" }} 7 | {{- end }} 8 | 9 | {{- define "kafka.chart" -}} 10 | {{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} 11 | {{- end }} 12 | 13 | {{- define "kafka.labels" -}} 14 | helm.sh/chart: {{ include "kafka.chart" . }} 15 | {{ include "kafka.selectorLabels" . }} 16 | {{- if .Chart.AppVersion }} 17 | app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} 18 | {{- end }} 19 | app.kubernetes.io/managed-by: {{ .Release.Service }} 20 | {{- end }} 21 | 22 | {{- define "kafka.selectorLabels" -}} 23 | app: {{ .Release.Name }}-{{ include "kafka.name" . }} 24 | app.kubernetes.io/name: {{ include "kafka.name" . }} 25 | app.kubernetes.io/instance: {{ .Release.Name }} 26 | {{- end }} 27 | 28 | {{- define "kafka.listener" -}} 29 | {{- $namespace := .Release.Namespace }} 30 | {{- printf "${POD_NAME}.%s-headless.%s.svc.cluster.local" (include "kafka.fullname" .) $namespace | trimSuffix "-" -}} 31 | {{- end -}} 32 | 33 | {{- define "kafka.bootstrap.server" -}} 34 | {{- $namespace := .Release.Namespace }} 35 | {{- printf "%s-headless" (include "kafka.fullname" .) | trimSuffix "-" -}} 36 | {{- end -}} 37 | 38 | {{- define "kafka.zookeeper.fullname" -}} 39 | {{- $name := default "zookeeper" (index .Values "zookeeper" "nameOverride") -}} 40 | {{- printf "%s-%s-headless" .Release.Name $name | trunc 63 | trimSuffix "-" -}} 41 | {{- end -}} 42 | 43 | {{- define "kafka.zookeeper.ensemble" }} 44 | {{- if (index .Values "zookeeper" "enabled") -}} 45 | {{- $clientPort := default 2181 (index .Values "zookeeper" "port" "client") | int -}} 46 | {{- printf "%s:%d" (include "kafka.zookeeper.fullname" .) $clientPort }} 47 | {{- else -}} 48 | {{- printf "%s" (index .Values "zookeeper" "url") }} 49 | {{- end -}} 50 | {{- end -}} 51 | -------------------------------------------------------------------------------- /charts/kafka/templates/configmap.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: ConfigMap 3 | metadata: 4 | name: {{ include "kafka.fullname" . }}-configmap 5 | namespace: {{ .Release.Namespace }} 6 | data: 7 | BOOTSTRAP_SERVER: {{ include "kafka.bootstrap.server" . }}:9092 8 | 9 | -------------------------------------------------------------------------------- /charts/kafka/templates/headless-service.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: {{ include "kafka.fullname" . }}-headless 5 | labels: 6 | {{- include "kafka.labels" . | nindent 4 }} 7 | spec: 8 | type: ClusterIP 9 | clusterIP: None 10 | publishNotReadyAddresses: true 11 | ports: 12 | - name: tcp-kafka-int 13 | port: 9092 14 | protocol: TCP 15 | targetPort: tcp-kafka-int 16 | - name: tcp-kafka-ext 17 | port: 9093 18 | protocol: TCP 19 | targetPort: tcp-kafka-ext 20 | - name: metrics 21 | port: 2121 22 | protocol: TCP 23 | targetPort: metrics 24 | selector: 25 | {{- include "kafka.selectorLabels" . | nindent 4 }} 26 | 27 | -------------------------------------------------------------------------------- /charts/kafka/templates/poddisruptionbudget.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: policy/v1 2 | kind: PodDisruptionBudget 3 | metadata: 4 | name: {{ include "kafka.fullname" . }}-pdb 5 | labels: 6 | {{- include "kafka.labels" . | nindent 4 }} 7 | spec: 8 | maxUnavailable: {{ .Values.maxUnavailable }} 9 | selector: 10 | matchLabels: 11 | {{- include "kafka.selectorLabels" . | nindent 6 }} 12 | -------------------------------------------------------------------------------- /charts/kafka/templates/serviceMonitor.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: monitoring.coreos.com/v1 2 | kind: ServiceMonitor 3 | metadata: 4 | name: {{ include "kafka.fullname" . }} 5 | labels: 6 | {{- include "kafka.labels" . | nindent 4 }} 7 | release: prometheus 8 | spec: 9 | selector: 10 | matchLabels: 11 | {{- include "kafka.selectorLabels" . | nindent 6 }} 12 | endpoints: 13 | - port: metrics 14 | interval: 30s 15 | path: /metrics -------------------------------------------------------------------------------- /charts/kafka/values.schema.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://json-schema.org/draft-07/schema#", 3 | "type": "object", 4 | "properties": { 5 | "version": { 6 | "type": "string", 7 | "default": "7.8.0", 8 | "mutable": true 9 | }, 10 | "zookeeper": { 11 | "type": "object", 12 | "properties": { 13 | "enabled": { 14 | "type": "boolean", 15 | "default": true 16 | }, 17 | "url": { 18 | "type": "string", 19 | "default": "" 20 | } 21 | } 22 | }, 23 | "resources": { 24 | "type": "object", 25 | "properties": { 26 | "requests": { 27 | "type": "object", 28 | "properties": { 29 | "cpu": { 30 | "type": "string", 31 | "pattern": "^[0-9]+m$", 32 | "default": "500m", 33 | "mutable": true 34 | }, 35 | "memory": { 36 | "type": "string", 37 | "pattern": "^[0-9]+Mi$", 38 | "default": "500Mi", 39 | "mutable": true 40 | } 41 | } 42 | }, 43 | "limits": { 44 | "type": "object", 45 | "properties": { 46 | "cpu": { 47 | "type": "string", 48 | "pattern": "^[0-9]+m$", 49 | "default": "1000m", 50 | "mutable": true 51 | }, 52 | "memory": { 53 | "type": "string", 54 | "pattern": "^[0-9]+Mi$", 55 | "default": "1500Mi", 56 | "mutable": true 57 | } 58 | } 59 | } 60 | } 61 | }, 62 | "diskSize": { 63 | "type": "string", 64 | "pattern": "^[0-9]+Gi$", 65 | "default": "10Gi", 66 | "mutable": true, 67 | "editDisabled": true 68 | }, 69 | "services": { 70 | "type": "array", 71 | "items": { 72 | "type": "object", 73 | "properties": { 74 | "name": { 75 | "type": "string" 76 | } 77 | }, 78 | "required": ["name"] 79 | } 80 | } 81 | } 82 | } -------------------------------------------------------------------------------- /charts/kafka/values.yaml: -------------------------------------------------------------------------------- 1 | version: "7.8.0" 2 | 3 | zookeeper: 4 | enabled: true 5 | url: "" ## If not enabled provide the zookeeper url 6 | 7 | resources: 8 | requests: 9 | cpu: "500m" 10 | memory: "500Mi" 11 | limits: 12 | cpu: "1000m" 13 | memory: "1500Mi" 14 | 15 | diskSize : 10Gi -------------------------------------------------------------------------------- /charts/mariadb/Chart.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v2 2 | appVersion: "1.0" 3 | description: Helm chart for deploying mariadb datastore 4 | name: mariadb 5 | version: 0.0.4 6 | icon: "https://storage.googleapis.com/zopdev-test-bucket/zop/files/originals/20241210/f80d4fa9-22ff-4ea8-9558-abb1ab3dc4f3-mariadb.png" 7 | maintainers: 8 | - name: ZopDev 9 | url: zop.dev 10 | annotations: 11 | type: datasource -------------------------------------------------------------------------------- /charts/mariadb/templates/database-pod.yaml: -------------------------------------------------------------------------------- 1 | {{- range $index, $service := .Values.services }} 2 | apiVersion: v1 3 | kind: Pod 4 | metadata: 5 | name: {{ $.Release.Name }}-{{ $service.name }}-mariadb-init 6 | namespace: {{ $.Release.Namespace }} 7 | spec: 8 | containers: 9 | - name: mysql-init-role 10 | image: imega/mysql-client 11 | command: ["mysql"] 12 | args: 13 | ["-h", "{{ $.Release.Name }}-mariadb", "-u", "root", "-p$(ROOTPASSWORD)", "-e", "source /etc/config/db-init.sql"] 14 | env: 15 | - name: ROOTPASSWORD 16 | valueFrom: 17 | secretKeyRef: 18 | name: "{{ $.Release.Name }}-mariadb-secrets" 19 | key: mariadb-root-password 20 | volumeMounts: 21 | - name: secret-volume 22 | mountPath: /etc/config 23 | volumes: 24 | - name: secret-volume 25 | configMap: 26 | name: {{ $.Release.Name }}-{{ $service.name }}-init-script 27 | restartPolicy: OnFailure 28 | --- 29 | {{- end }} -------------------------------------------------------------------------------- /charts/mariadb/templates/master-configmap.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: ConfigMap 3 | metadata: 4 | name: "{{ .Release.Name }}-master-mariadb-configmap" 5 | namespace: {{ .Release.Namespace | quote }} 6 | labels: 7 | app.kubernetes.io/component: master 8 | data: 9 | my.cnf: |- 10 | [mysqld] 11 | skip-name-resolve 12 | explicit_defaults_for_timestamp 13 | basedir=/opt/bitnami/mariadb 14 | plugin_dir=/opt/bitnami/mariadb/plugin 15 | port=3306 16 | socket=/opt/bitnami/mariadb/tmp/mysql.sock 17 | tmpdir=/opt/bitnami/mariadb/tmp 18 | max_allowed_packet=16M 19 | bind-address=0.0.0.0 20 | pid-file=/opt/bitnami/mariadb/tmp/mysqld.pid 21 | log-error=/opt/bitnami/mariadb/logs/mysqld.log 22 | character-set-server=UTF8 23 | collation-server=utf8_general_ci 24 | 25 | [client] 26 | port=3306 27 | socket=/opt/bitnami/mariadb/tmp/mysql.sock 28 | default-character-set=UTF8 29 | plugin_dir=/opt/bitnami/mariadb/plugin 30 | 31 | [manager] 32 | port=3306 33 | socket=/opt/bitnami/mariadb/tmp/mysql.sock 34 | pid-file=/opt/bitnami/mariadb/tmp/mysqld.pid 35 | -------------------------------------------------------------------------------- /charts/mariadb/templates/master-serviceMonitor.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: monitoring.coreos.com/v1 2 | kind: ServiceMonitor 3 | metadata: 4 | name: {{ .Release.Name }}-mariadb-master 5 | labels: 6 | release: prometheus 7 | spec: 8 | selector: 9 | matchLabels: 10 | app: "{{ template "mariadb.name" . }}" 11 | component: "master" 12 | release: "{{ .Release.Name }}" 13 | endpoints: 14 | - port: metrics-port 15 | interval: 30s 16 | path: /metrics -------------------------------------------------------------------------------- /charts/mariadb/templates/master-svc.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: {{ template "mariadb.fullname" . }} 5 | labels: 6 | app: "{{ template "mariadb.name" . }}" 7 | component: "master" 8 | chart: "{{ template "mariadb.chart" . }}" 9 | release: {{ .Release.Name | quote }} 10 | heritage: {{ .Release.Service | quote }} 11 | spec: 12 | type: ClusterIP 13 | ports: 14 | - name: mysql 15 | port: 3306 16 | targetPort: mysql 17 | - name: metrics-port 18 | port: 2121 19 | targetPort: metrics-port 20 | selector: 21 | app: "{{ template "mariadb.name" . }}" 22 | component: "master" 23 | release: "{{ .Release.Name }}" 24 | -------------------------------------------------------------------------------- /charts/mariadb/templates/secrets.yaml: -------------------------------------------------------------------------------- 1 | {{- $secretName := printf "%s-mariadb-secrets" .Release.Name }} 2 | 3 | {{/* Generate a strong root password only if not already set */}} 4 | {{- $generatedRootPassword := printf "%s%s%s" (randAlpha 4) (randNumeric 4) (randAlpha 4 | upper) }} 5 | 6 | {{- $rootPassword := $generatedRootPassword }} 7 | 8 | --- 9 | apiVersion: v1 10 | kind: Secret 11 | metadata: 12 | name: "{{ .Release.Name }}-mariadb-secrets" 13 | labels: 14 | app: "{{ template "mariadb.name" . }}" 15 | chart: "{{ template "mariadb.chart" . }}" 16 | release: {{ .Release.Name | quote }} 17 | heritage: {{ .Release.Service | quote }} 18 | type: Opaque 19 | data: 20 | {{- if .Release.IsInstall }} 21 | mariadb-root-password: {{ $rootPassword | b64enc }} 22 | mariadb-replication-password: {{ $rootPassword | b64enc }} 23 | {{- else }} 24 | mariadb-root-password: {{ index (lookup "v1" "Secret" .Release.Namespace $secretName ).data "mariadb-root-password" }} 25 | mariadb-replication-password: {{ index (lookup "v1" "Secret" .Release.Namespace $secretName ).data "mariadb-replication-password" }} 26 | {{- end }} 27 | -------------------------------------------------------------------------------- /charts/mariadb/templates/slave-configmap.yaml: -------------------------------------------------------------------------------- 1 | {{- if .Values.replication.enabled }} 2 | apiVersion: v1 3 | kind: ConfigMap 4 | metadata: 5 | name: "{{ .Release.Name }}-slave-mariadb-configmap" 6 | namespace: {{ .Release.Namespace | quote }} 7 | labels: 8 | app.kubernetes.io/component: slave 9 | data: 10 | my.cnf: |- 11 | [mysqld] 12 | skip-name-resolve 13 | explicit_defaults_for_timestamp 14 | basedir=/opt/bitnami/mariadb 15 | port=3306 16 | socket=/opt/bitnami/mariadb/tmp/mysql.sock 17 | tmpdir=/opt/bitnami/mariadb/tmp 18 | max_allowed_packet=16M 19 | bind-address=0.0.0.0 20 | pid-file=/opt/bitnami/mariadb/tmp/mysqld.pid 21 | log-error=/opt/bitnami/mariadb/logs/mysqld.log 22 | character-set-server=UTF8 23 | collation-server=utf8_general_ci 24 | 25 | [client] 26 | port=3306 27 | socket=/opt/bitnami/mariadb/tmp/mysql.sock 28 | default-character-set=UTF8 29 | 30 | [manager] 31 | port=3306 32 | socket=/opt/bitnami/mariadb/tmp/mysql.sock 33 | pid-file=/opt/bitnami/mariadb/tmp/mysqld.pid 34 | 35 | {{- end}} -------------------------------------------------------------------------------- /charts/mariadb/templates/slave-serviceMonitor.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: monitoring.coreos.com/v1 2 | kind: ServiceMonitor 3 | metadata: 4 | name: {{ .Release.Name }}-mariadb-slave 5 | labels: 6 | release: prometheus 7 | spec: 8 | selector: 9 | matchLabels: 10 | app: "{{ template "mariadb.name" . }}" 11 | component: "slave" 12 | release: "{{ .Release.Name }}" 13 | endpoints: 14 | - port: metrics-port 15 | interval: 30s 16 | path: /metrics -------------------------------------------------------------------------------- /charts/mariadb/templates/slave-svc.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: {{ template "slave.fullname" . }} 5 | labels: 6 | app: "{{ template "mariadb.name" . }}" 7 | chart: "{{ template "mariadb.chart" . }}" 8 | component: "slave" 9 | release: {{ .Release.Name | quote }} 10 | heritage: {{ .Release.Service | quote }} 11 | spec: 12 | type: ClusterIP 13 | ports: 14 | - name: mysql 15 | port: 3306 16 | targetPort: mysql 17 | - name: metrics-port 18 | port: 2121 19 | targetPort: metrics-port 20 | selector: 21 | app: "{{ template "mariadb.name" . }}" 22 | component: "slave" 23 | release: "{{ .Release.Name }}" 24 | -------------------------------------------------------------------------------- /charts/mariadb/values.yaml: -------------------------------------------------------------------------------- 1 | version: 10.3.22-debian-10-r27 2 | 3 | replication: 4 | enabled: true 5 | 6 | master: 7 | resources: 8 | requests: 9 | cpu: "500m" 10 | memory: "256M" 11 | limits: 12 | cpu: "1500m" 13 | memory: "1Gi" 14 | persistence: 15 | size: 10Gi 16 | 17 | slave: 18 | replicas: 1 19 | 20 | resources: 21 | requests: 22 | cpu: "500m" 23 | memory: "256M" 24 | limits: 25 | cpu: "1500m" 26 | memory: "1Gi" 27 | 28 | persistence: 29 | size: 10Gi 30 | -------------------------------------------------------------------------------- /charts/mysql/Chart.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v2 2 | appVersion: "1.0" 3 | description: Helm chart for deploying mysql datastore 4 | name: mysql 5 | version: 0.0.16 6 | icon: "https://storage.googleapis.com/zopdev-test-bucket/zop/files/originals/20241119/c647e8cc-f958-4e6b-ba08-22dc79ca703a-pngtransparentmysqldatabasemariadbdolphinmarinemammalanimalstextthumbnail.png" 7 | maintainers: 8 | - name: ZopDev 9 | url: zop.dev 10 | annotations: 11 | type: datasource -------------------------------------------------------------------------------- /charts/mysql/templates/_helpers.tpl: -------------------------------------------------------------------------------- 1 | {{- define "mysql.fullname" -}} 2 | {{- printf "%s-mysql" .Release.Name | trunc 63 | trimSuffix "-" -}} 3 | {{- end -}} -------------------------------------------------------------------------------- /charts/mysql/templates/custom-mycnf-configmap.yaml: -------------------------------------------------------------------------------- 1 | {{- if .Values.customMyCnf }} 2 | apiVersion: v1 3 | kind: ConfigMap 4 | metadata: 5 | name: {{ include "mysql.fullname" . }}-custom-mycnf 6 | data: 7 | custom.cnf: |- 8 | {{ .Values.customMyCnf | nindent 4 }} 9 | {{- end }} -------------------------------------------------------------------------------- /charts/mysql/templates/database-pod.yaml: -------------------------------------------------------------------------------- 1 | {{- range $index, $service := .Values.services }} 2 | apiVersion: v1 3 | kind: Pod 4 | metadata: 5 | name: mysql-init-{{ $.Release.Name }}-{{ $service.name }} 6 | namespace: {{ $.Release.Namespace }} 7 | spec: 8 | containers: 9 | - name: mysql-init-role 10 | image: imega/mysql-client 11 | command: ["mysql"] 12 | args: 13 | ["-h", "{{ $.Release.Name }}-mysql", "-u", "root", "-p$(ROOTPASSWORD)", "-e", "source /etc/config/db-init.sql"] 14 | env: 15 | - name: ROOTPASSWORD 16 | valueFrom: 17 | secretKeyRef: 18 | name: {{$.Release.Name}}-mysql-root-secret 19 | key: root-password 20 | volumeMounts: 21 | - name: secret-volume 22 | mountPath: /etc/config 23 | volumes: 24 | - name: secret-volume 25 | configMap: 26 | name: {{$.Release.Name}}-{{ .name }}-init-script 27 | restartPolicy: OnFailure 28 | --- 29 | {{- end }} -------------------------------------------------------------------------------- /charts/mysql/templates/secret.yaml: -------------------------------------------------------------------------------- 1 | {{- $secretName := printf "%s-mysql-root-secret" .Release.Name }} 2 | 3 | {{/* Generate a strong root password only if not already set */}} 4 | {{- $generatedRootPassword := printf "%s%s%s" (randAlpha 4) (randNumeric 4) (randAlpha 4 | upper) }} 5 | 6 | {{- $rootPassword := $generatedRootPassword }} 7 | 8 | --- 9 | apiVersion: v1 10 | kind: Secret 11 | metadata: 12 | name: {{ $secretName }} 13 | namespace: {{ .Release.Namespace }} 14 | type: Opaque 15 | data: 16 | {{- if .Release.IsInstall }} 17 | root-password: {{ $rootPassword | b64enc }} 18 | {{ else }} 19 | root-password: {{ index (lookup "v1" "Secret" .Release.Namespace $secretName ).data "root-password" }} 20 | {{ end }} -------------------------------------------------------------------------------- /charts/mysql/templates/service.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: {{ .Release.Name }}-mysql 5 | namespace: {{ .Release.Namespace }} 6 | labels: 7 | app: {{ .Release.Name }}-mysql 8 | spec: 9 | ports: 10 | - port: 3306 11 | targetPort: 3306 12 | protocol: TCP 13 | name: mysql 14 | - port: 2121 15 | targetPort: 2121 16 | name: metrics-port 17 | selector: 18 | app: {{ .Release.Name }}-mysql 19 | type: NodePort -------------------------------------------------------------------------------- /charts/mysql/templates/serviceMonitor.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: monitoring.coreos.com/v1 2 | kind: ServiceMonitor 3 | metadata: 4 | name: {{ .Release.Name }}-mysql 5 | labels: 6 | app: {{ .Release.Name }}-mysql 7 | release: prometheus 8 | spec: 9 | selector: 10 | matchLabels: 11 | app: {{ .Release.Name }}-mysql 12 | endpoints: 13 | - port: metrics-port 14 | interval: 30s 15 | path: /metrics 16 | -------------------------------------------------------------------------------- /charts/mysql/values.schema.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://json-schema.org/draft-07/schema#", 3 | "type": "object", 4 | "properties": { 5 | "diskSize": { 6 | "type": "string", 7 | "default": "10Gi", 8 | "mutable": true, 9 | "editDisabled": true 10 | }, 11 | "customMyCnf": { 12 | "type": "string", 13 | "default": "", 14 | "mutable": true 15 | }, 16 | "version": { 17 | "default": "8.0", 18 | "mutable": true 19 | }, 20 | "resources": { 21 | "type": "object", 22 | "properties": { 23 | "requests": { 24 | "type": "object", 25 | "properties": { 26 | "cpu": { 27 | "type": "string", 28 | "default": "500m", 29 | "mutable": true 30 | }, 31 | "memory": { 32 | "type": "string", 33 | "default": "256M", 34 | "mutable": true 35 | } 36 | } 37 | }, 38 | "limits": { 39 | "type": "object", 40 | "properties": { 41 | "cpu": { 42 | "type": "string", 43 | "default": "1500m", 44 | "mutable": true 45 | }, 46 | "memory": { 47 | "type": "string", 48 | "default": "1024M", 49 | "mutable": true 50 | } 51 | } 52 | } 53 | } 54 | }, 55 | "services": { 56 | "type": "array", 57 | "items": { 58 | "type": "object", 59 | "properties": { 60 | "name": { 61 | "type": "string" 62 | }, 63 | "database": { 64 | "type": "string" 65 | } 66 | }, 67 | "required": ["name", "database"] 68 | } 69 | } 70 | } 71 | } -------------------------------------------------------------------------------- /charts/mysql/values.yaml: -------------------------------------------------------------------------------- 1 | diskSize: "10Gi" 2 | 3 | # Resource configuration 4 | resources: 5 | requests: 6 | cpu: "500m" 7 | memory: "256M" 8 | limits: 9 | cpu: "1500m" 10 | memory: "1024M" 11 | 12 | version: "8.0" 13 | 14 | customMyCnf: "" -------------------------------------------------------------------------------- /charts/opentsdb/Chart.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v2 2 | appVersion: "1.0" 3 | description: Helm chart for deploying opentsdb 4 | name: opentsdb 5 | version: 0.0.3 6 | icon: "https://storage.googleapis.com/zopdev-test-bucket/zop/files/originals/20241122/42ea9c53-055c-4441-8438-95d639dfc2f4-2086220.png" 7 | maintainers: 8 | - name: ZopDev 9 | url: zop.dev 10 | annotations: 11 | type: datasource -------------------------------------------------------------------------------- /charts/opentsdb/templates/configmap.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: ConfigMap 3 | metadata: 4 | name: "{{ .Release.Name }}-opentsdb-configmap" 5 | namespace: {{ .Release.Namespace | quote }} 6 | data: 7 | OPENTSDB_HOST: {{ $.Release.Name }}-opentsdb 8 | OPENTSDB_PORT: "4242" -------------------------------------------------------------------------------- /charts/opentsdb/templates/service.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: {{ $.Release.Name }}-opentsdb 5 | namespace: {{ .Release.Namespace | quote }} 6 | spec: 7 | selector: 8 | app.kubernetes.io/part-of: opentsdb 9 | app: {{ $.Release.Name }}-opentsdb 10 | type: ClusterIP 11 | ports: 12 | - protocol: TCP 13 | port: 4242 14 | targetPort: 4242 -------------------------------------------------------------------------------- /charts/opentsdb/values.schema.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://json-schema.org/draft-07/schema#", 3 | "type": "object", 4 | "properties": { 5 | 6 | "resources": { 7 | "type": "object", 8 | "properties": { 9 | "requests": { 10 | "type": "object", 11 | "properties": { 12 | "cpu": { 13 | "type": "string", 14 | "pattern": "^[0-9]+m$", 15 | "default": "100m", 16 | "mutable": true 17 | }, 18 | "memory": { 19 | "type": "string", 20 | "pattern": "^[0-9]+M$", 21 | "default": "256M", 22 | "mutable": true 23 | } 24 | } 25 | }, 26 | "limits": { 27 | "type": "object", 28 | "properties": { 29 | "cpu": { 30 | "type": "string", 31 | "pattern": "^[0-9]+m$", 32 | "default": "1000m", 33 | "mutable": true 34 | }, 35 | "memory": { 36 | "type": "string", 37 | "pattern": "^[0-9]+Gi$", 38 | "default": "1Gi", 39 | "mutable": true 40 | } 41 | } 42 | } 43 | } 44 | }, 45 | "diskSize": { 46 | "type": "string", 47 | "pattern": "^[0-9]+Gi$", 48 | "default": "10Gi", 49 | "mutable": true, 50 | "editDisabled": true 51 | }, 52 | "version": { 53 | "default": "2.2", 54 | "mutable": true 55 | }, 56 | "services": { 57 | "type": "array", 58 | "items": { 59 | "type": "object", 60 | "properties": { 61 | "name": { 62 | "type": "string" 63 | } 64 | } 65 | } 66 | } 67 | } 68 | } 69 | -------------------------------------------------------------------------------- /charts/opentsdb/values.yaml: -------------------------------------------------------------------------------- 1 | # values.yaml for OpenTSDB Helm chart 2 | version: 2.2 3 | 4 | # Resource configuration 5 | resources: 6 | requests: 7 | cpu: "100m" 8 | memory: "256M" 9 | limits: 10 | cpu: "1000m" 11 | memory: "1Gi" 12 | 13 | diskSize: "10Gi" 14 | 15 | # Update strategy for the StatefulSet 16 | 17 | -------------------------------------------------------------------------------- /charts/outline/Chart.lock: -------------------------------------------------------------------------------- 1 | dependencies: 2 | - name: postgres 3 | repository: https://helm.zop.dev 4 | version: v0.0.3 5 | - name: redis 6 | repository: https://helm.zop.dev 7 | version: v0.0.1 8 | - name: service 9 | repository: https://helm.zop.dev 10 | version: v0.0.17 11 | digest: sha256:26fd1db29a5c83f12989a53500bf0024b4a6be999b944cbd1e06173e3793d676 12 | generated: "2025-03-10T12:25:42.386582+05:30" 13 | -------------------------------------------------------------------------------- /charts/outline/Chart.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v2 2 | appVersion: "1.0" 3 | description: Helm chart for deploying outline app 4 | name: outline 5 | version: 0.0.5 6 | type: application 7 | icon: "https://storage.googleapis.com/zopdev-test-bucket/zop/files/originals/20241129/517f58c3-427a-4cd0-8d37-abe941776827-download1.jpeg" 8 | dependencies: 9 | - name: postgres 10 | version: 0.0.3 11 | repository: https://helm.zop.dev 12 | - name: redis 13 | version: 0.0.1 14 | repository: https://helm.zop.dev 15 | - name: service 16 | version: 0.0.17 17 | repository: https://helm.zop.dev 18 | maintainers: 19 | - name: ZopDev 20 | url: zop.dev 21 | annotations: 22 | type: application -------------------------------------------------------------------------------- /charts/outline/values.schema.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://json-schema.org/draft-07/schema#", 3 | "type": "object", 4 | "properties": { 5 | "postgres": { 6 | "type": "object", 7 | "properties": { 8 | "services": { 9 | "type": "array", 10 | "items": { 11 | "type": "object", 12 | "properties": { 13 | "name": { "type": "string", "enum": ["outline"] }, 14 | "database": { "type": "string", "enum": ["outline"] } 15 | } 16 | } 17 | } 18 | } 19 | }, 20 | "redis": { 21 | "type": "object", 22 | "properties": { 23 | "services": { 24 | "type": "array", 25 | "items": { 26 | "type": "object", 27 | "properties": { 28 | "name": { "type": "string", "enum": ["outline"] }, 29 | "database": { "type": "string", "enum": ["outline"] } 30 | } 31 | } 32 | } 33 | } 34 | }, 35 | "service": { 36 | "type": "object", 37 | "properties": { 38 | "name": { "type": "string", "enum": ["outline"] }, 39 | "image": { "type": "string", "enum": ["outlinewiki/outline"] }, 40 | "minCPU": { "type": "string" ,"default": "250m", "mutable": true}, 41 | "minMemory": { "type": "string","default": "1000Mi", "mutable": true }, 42 | "maxCPU": { "type": "string","default": "500m", "mutable": true }, 43 | "maxMemory": { "type": "string","default": "1500Mi", "mutable": true 44 | }, 45 | "minReplicas": { "type": "integer", "enum": [1] } 46 | } 47 | } 48 | } 49 | } -------------------------------------------------------------------------------- /charts/outline/values.yaml: -------------------------------------------------------------------------------- 1 | postgres: 2 | services: 3 | - name: "outline" 4 | database: "outline" 5 | redis: 6 | services: 7 | - name: "outline" 8 | database: "outline" 9 | 10 | 11 | service: 12 | name: outline 13 | image: outlinewiki/outline 14 | minCPU: "250m" 15 | minMemory: "1000Mi" 16 | maxCPU: "500m" 17 | maxMemory: "1500Mi" 18 | minReplicas: 1 19 | 20 | nginx: 21 | host : 22 | annotations: 23 | kubernetes.io/ingress.class: "nginx" 24 | nginx.ingress.kubernetes.io/auth-realm: '' 25 | nginx.ingress.kubernetes.io/auth-secret: '' 26 | nginx.ingress.kubernetes.io/auth-type: '' 27 | tlsHost : 28 | tlsSecretName: 29 | 30 | env: 31 | SECRET_KEY: 106ff5ec40e340972540fefd770dad24db868deb68bec9d2556365f2ff66ed99 # Replace with a hex-encoded 32-byte random key. You should use `openssl rand -hex 32` 32 | UTILS_SECRET: 45aec6e6b7340f3c8e5b34d533f9d63fd72a2830ee35d1345cb144d484205ba2 # Replace with a unique random key. You could still use `openssl rand -hex 32` 33 | FILE_STORAGE : local 34 | FORCE_HTTPS: false 35 | PGSSLMODE: disable 36 | PORT: 3000 37 | FILE_STORAGE_LOCAL_ROOT_DIR : /data 38 | 39 | datastores: 40 | postgres: 41 | - datastore: outline 42 | database: outline 43 | redis: 44 | - datastore: outline 45 | database: outline 46 | 47 | heartbeatURL: / 48 | 49 | httpPort: 3000 50 | 51 | livenessProbe: 52 | enable: true 53 | initialDelaySeconds: 30 54 | periodSeconds: 5 55 | timeoutSeconds: 3 56 | failureThreshold: 3 57 | 58 | readinessProbe: 59 | enable: true 60 | initialDelaySeconds: 30 61 | periodSeconds: 10 62 | timeoutSeconds: 5 63 | failureThreshold: 3 64 | 65 | volumeMounts: 66 | emptyDir: 67 | - name: outline-storage 68 | mountPath: /data -------------------------------------------------------------------------------- /charts/outline/zop-values.yaml: -------------------------------------------------------------------------------- 1 | service: 2 | minCPU: "250m" 3 | minMemory: "1000Mi" 4 | maxCPU: "500m" 5 | maxMemory: "1500Mi" -------------------------------------------------------------------------------- /charts/postgres/Chart.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v2 2 | appVersion: "1.0" 3 | description: Helm chart for deploying postgres datastore 4 | name: postgres 5 | version: 0.0.10 6 | icon: "https://storage.googleapis.com/zopdev-test-bucket/zop/files/originals/20241119/e4d58134-93e4-478e-851b-3a70b58dcd81-Postgresqlelephantsvg.jpg" 7 | maintainers: 8 | - name: ZopDev 9 | url: zop.dev 10 | annotations: 11 | type: datasource -------------------------------------------------------------------------------- /charts/postgres/templates/_helpers.tpl: -------------------------------------------------------------------------------- 1 | {{- define "postgresql.name" -}} 2 | {{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} 3 | {{- end -}} 4 | 5 | {{- define "postgresql.fullname" -}} 6 | {{- if .Values.fullnameOverride -}} 7 | {{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}} 8 | {{- else -}} 9 | {{- $name := default .Chart.Name .Values.nameOverride -}} 10 | {{- if contains $name .Release.Name -}} 11 | {{- .Release.Name | trunc 63 | trimSuffix "-" -}} 12 | {{- else -}} 13 | {{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}} 14 | {{- end -}} 15 | {{- end -}} 16 | {{- end -}} 17 | 18 | {{- define "postgresql.master.fullname" -}} 19 | {{- $name := default .Chart.Name .Values.nameOverride -}} 20 | {{- $fullname := default (printf "%s-%s" .Release.Name $name) .Values.fullnameOverride -}} 21 | {{- if .Values.replication.enabled -}} 22 | {{- printf "%s-%s" $fullname "master" | trunc 63 | trimSuffix "-" -}} 23 | {{- else -}} 24 | {{- printf "%s" $fullname | trunc 63 | trimSuffix "-" -}} 25 | {{- end -}} 26 | {{- end -}} 27 | 28 | {{- define "postgresql.chart" -}} 29 | {{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}} 30 | {{- end -}} -------------------------------------------------------------------------------- /charts/postgres/templates/alerts.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: monitoring.coreos.com/v1 2 | kind: PrometheusRule 3 | metadata: 4 | name: {{ .Release.Name }} 5 | namespace: {{ .Release.Namespace }} 6 | generation: 1 7 | labels: 8 | app: kube-prometheus-stack 9 | heritage: Helm 10 | release: prometheus 11 | spec: 12 | groups: 13 | - name: {{ .Release.Namespace }}.{{ .Release.Name }}-postgres.rules 14 | rules: 15 | - alert: PostgresqlRestarted 16 | expr: time() - pg_postmaster_start_time_seconds < 60 17 | for: 0m 18 | labels: 19 | severity: critical 20 | servicealert: "true" 21 | namespace: {{ .Release.Namespace }} 22 | service: {{ .Values.name }} 23 | annotations: 24 | summary: 'PostgreSQL instance {{ .Release.Name }} restarted' 25 | description: 'PostgreSQL instance {{ .Release.Name }} restarted < 1 minute ago' 26 | 27 | - alert: PostgresqlTooManyConnections 28 | expr: sum by (instance, job, server) (pg_stat_activity_count) > min by (instance, job, server) (pg_settings_max_connections * 0.8) 29 | for: 2m 30 | labels: 31 | severity: warning 32 | servicealert: "true" 33 | namespace: {{ .Release.Namespace }} 34 | service: {{ .Values.name }} 35 | annotations: 36 | summary: 'PostgreSQL instance {{ .Release.Name }} has too many connections (> 80%)' 37 | description: 'More than 80% of PostgreSQL connections of instance {{ .Release.Name }} are in use' 38 | 39 | - alert: PostgresqlDeadLocks 40 | expr: increase(pg_stat_database_deadlocks{datname!~"template.*|postgres"}[1m]) > 5 41 | for: 0m 42 | labels: 43 | severity: warning 44 | servicealert: "true" 45 | namespace: {{ .Release.Namespace }} 46 | service: {{ .Values.name }} 47 | annotations: 48 | summary: 'PostgreSQL instance {{ .Release.Name }} has dead-locks' 49 | description: 'PostgreSQL instance {{ .Release.Name }} has dead-locks' -------------------------------------------------------------------------------- /charts/postgres/templates/secret.yaml: -------------------------------------------------------------------------------- 1 | {{- $secretName := printf "%s-postgres-root-secret" .Release.Name }} 2 | 3 | {{/* Generate a strong root password only if not already set */}} 4 | {{- $generatedRootPassword := printf "%s%s%s" (randAlpha 4) (randNumeric 4) (randAlpha 4 | upper) }} 5 | {{- $generatedReplicaPassword := printf "%s%s%s" (randAlpha 4) (randNumeric 4) (randAlpha 4 | upper) }} 6 | 7 | {{- $rootPassword := $generatedRootPassword }} 8 | {{- $replicaPassword := $generatedReplicaPassword }} 9 | --- 10 | apiVersion: v1 11 | kind: Secret 12 | metadata: 13 | name: {{ $secretName }} 14 | labels: 15 | app: {{ template "postgresql.name" . }} 16 | chart: {{ template "postgresql.chart" . }} 17 | release: {{ .Release.Name | quote }} 18 | heritage: {{ .Release.Service | quote }} 19 | type: Opaque 20 | data: 21 | {{- if .Release.IsInstall }} 22 | postgres-password: {{ $rootPassword | b64enc }} 23 | {{ else }} 24 | postgres-password: {{ index (lookup "v1" "Secret" .Release.Namespace $secretName ).data "postgres-password" }} 25 | {{ end }} 26 | 27 | {{- if .Values.replication.enabled }} 28 | {{- $replicaSecret := (lookup "v1" "Secret" .Release.Namespace $secretName) }} 29 | {{- if and $replicaSecret (hasKey $replicaSecret "data") (hasKey $replicaSecret.data "postgresql-replication-password") }} 30 | postgresql-replication-password: {{ index $replicaSecret.data "postgresql-replication-password" }} 31 | {{- else }} 32 | postgresql-replication-password: {{ $replicaPassword | b64enc }} 33 | {{- end }} 34 | {{- end }} -------------------------------------------------------------------------------- /charts/postgres/templates/service-headless.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: {{ $.Release.Name }}-postgres-headless 5 | labels: 6 | app: {{ template "postgresql.name" . }} 7 | chart: {{ template "postgresql.chart" . }} 8 | release: {{ .Release.Name | quote }} 9 | heritage: {{ .Release.Service | quote }} 10 | spec: 11 | type: ClusterIP 12 | clusterIP: None 13 | ports: 14 | - name: tcp-postgresql 15 | port: 5432 16 | targetPort: tcp-postgresql 17 | - name: metrics-port 18 | port: 2121 19 | targetPort: 2121 20 | selector: 21 | app: {{ template "postgresql.name" . }} 22 | release: {{ .Release.Name | quote }} 23 | -------------------------------------------------------------------------------- /charts/postgres/templates/service-read.yaml: -------------------------------------------------------------------------------- 1 | {{- if .Values.replication.enabled }} 2 | apiVersion: v1 3 | kind: Service 4 | metadata: 5 | name: {{ $.Release.Name }}-postgres-read-replica 6 | labels: 7 | app: {{ template "postgresql.name" . }} 8 | chart: {{ template "postgresql.chart" . }} 9 | release: {{ .Release.Name | quote }} 10 | heritage: {{ .Release.Service | quote }} 11 | spec: 12 | type: ClusterIP 13 | ports: 14 | - name: tcp-postgresql 15 | port: 5432 16 | targetPort: tcp-postgresql 17 | selector: 18 | app: {{ template "postgresql.name" . }} 19 | release: {{ .Release.Name | quote }} 20 | role: slave 21 | {{- end }} 22 | -------------------------------------------------------------------------------- /charts/postgres/templates/service.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: {{ $.Release.Name }}-postgres 5 | labels: 6 | app: {{ template "postgresql.name" . }} 7 | chart: {{ template "postgresql.chart" . }} 8 | release: {{ .Release.Name | quote }} 9 | heritage: {{ .Release.Service | quote }} 10 | spec: 11 | type: ClusterIP 12 | ports: 13 | - name: tcp-postgresql 14 | port: 5432 15 | targetPort: tcp-postgresql 16 | selector: 17 | app: {{ template "postgresql.name" . }} 18 | release: {{ .Release.Name | quote }} 19 | role: master -------------------------------------------------------------------------------- /charts/postgres/templates/serviceMonitor.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: monitoring.coreos.com/v1 2 | kind: ServiceMonitor 3 | metadata: 4 | name: {{ $.Release.Name }}-postgres 5 | labels: 6 | release: prometheus 7 | app: {{ template "postgresql.name" . }} 8 | spec: 9 | selector: 10 | matchLabels: 11 | app: {{ template "postgresql.name" . }} 12 | release: {{ .Release.Name | quote }} 13 | namespaceSelector: 14 | matchNames: 15 | - {{ .Release.Namespace }} 16 | endpoints: 17 | - port: metrics-port 18 | interval: 30s 19 | path: /metrics 20 | -------------------------------------------------------------------------------- /charts/postgres/values.yaml: -------------------------------------------------------------------------------- 1 | version: "17.4.0" 2 | 3 | replication: 4 | enabled: false 5 | count: 1 6 | 7 | diskSize : "10Gi" 8 | 9 | resources: 10 | requests: 11 | cpu: "250m" 12 | memory: "500Mi" 13 | limits: 14 | cpu: "500m" 15 | memory: "1000Mi" -------------------------------------------------------------------------------- /charts/redis/Chart.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v2 2 | appVersion: "1.0" 3 | description: Helm chart deploys redis instance 4 | name: redis 5 | version: 0.0.4 6 | icon: "https://storage.googleapis.com/zopdev-test-bucket/zop/files/originals/20241119/a322e6a1-2433-4ff5-b778-6372fc27bedd-cdnlogocomredis2min111.jpg" 7 | maintainers: 8 | - name: ZopDev 9 | url: zop.dev 10 | annotations: 11 | type: datasource -------------------------------------------------------------------------------- /charts/redis/templates/configmap.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: ConfigMap 3 | metadata: 4 | name: "{{ .Release.Name }}-redis-configmap" 5 | namespace: {{ .Release.Namespace | quote }} 6 | labels: 7 | app.kubernetes.io/component: master 8 | data: 9 | master.conf: | 10 | bind 0.0.0.0 11 | protected-mode yes 12 | port 6379 13 | tcp-backlog 511 14 | timeout 0 15 | tcp-keepalive 300 16 | daemonize no 17 | supervised no 18 | pidfile /var/run/redis_6379.pid 19 | loglevel notice 20 | logfile "" -------------------------------------------------------------------------------- /charts/redis/templates/headless-svc.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: "{{ .Release.Name }}-redis-headless-service" 5 | namespace: {{ .Release.Namespace | quote }} 6 | labels: 7 | app.kubernetes.io/component: master 8 | spec: 9 | type: ClusterIP 10 | clusterIP: None 11 | ports: 12 | - name: tcp-redis 13 | port: 6379 14 | targetPort: 6379 15 | - name: metrics-port 16 | port: 2121 17 | targetPort: 2121 18 | selector: 19 | app: {{ .Release.Name }}-redis -------------------------------------------------------------------------------- /charts/redis/templates/service-config-map.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: ConfigMap 3 | metadata: 4 | name: "{{ .Release.Name }}-redis-service-configmap" 5 | namespace: {{ .Release.Namespace | quote }} 6 | labels: 7 | app.kubernetes.io/component: master 8 | data: 9 | REDIS_PORT: "6379" 10 | REDIS_HOST: "{{ .Release.Name }}-redis-headless-service" 11 | REDIS_URL: {{ printf "redis://%s-redis-headless-service:6379" .Release.Name }} -------------------------------------------------------------------------------- /charts/redis/templates/serviceMonitor.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: monitoring.coreos.com/v1 2 | kind: ServiceMonitor 3 | metadata: 4 | name: {{ .Release.Name }}-redis 5 | labels: 6 | app: {{ .Release.Name }}-redis 7 | release: prometheus 8 | spec: 9 | selector: 10 | matchLabels: 11 | app.kubernetes.io/component: master 12 | endpoints: 13 | - port: metrics-port 14 | interval: 30s 15 | path: /metrics -------------------------------------------------------------------------------- /charts/redis/values.schema.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-07/schema#", 3 | "type": "object", 4 | "properties": { 5 | "services": { 6 | "type": "array", 7 | "items": { 8 | "type": "object", 9 | "properties": { 10 | "name": { 11 | "type": "string" 12 | } 13 | }, 14 | "required": ["name"] 15 | } 16 | }, 17 | "diskSize": { 18 | "type": "string", 19 | "pattern": "^[0-9]+Gi$", 20 | "default": "10Gi", 21 | "mutable": true, 22 | "editDisabled": true 23 | }, 24 | "version": { 25 | "type": "string" 26 | }, 27 | "resources": { 28 | "type": "object", 29 | "properties": { 30 | "requests": { 31 | "type": "object", 32 | "properties": { 33 | "cpu": { "type": "string" , "pattern": "^[0-9]+m$", "default": "500m", "mutable": "true"}, 34 | "memory": { "type": "string" , "pattern": "^[0-9]+M$", "default": "256M", "mutable": "true"} 35 | }, 36 | "required": ["cpu", "memory"] 37 | }, 38 | "limits": { 39 | "type": "object", 40 | "properties": { 41 | "cpu": { "type": "string" , "pattern": "^[0-9]+m$", "default": "1500m", "mutable": "true"}, 42 | "memory": { "type": "string", "pattern": "^[0-9]+Gi$", "default": "1024M", "mutable": "true"} 43 | }, 44 | "required": ["cpu", "memory"] 45 | } 46 | }, 47 | "required": ["requests", "limits"] 48 | } 49 | }, 50 | "required": ["diskSize", "version", "resources"] 51 | } 52 | -------------------------------------------------------------------------------- /charts/redis/values.yaml: -------------------------------------------------------------------------------- 1 | diskSize: "10Gi" 2 | 3 | version: "6.2.13" 4 | 5 | # Resource configuration 6 | resources: 7 | requests: 8 | cpu: "500m" 9 | memory: "256M" 10 | limits: 11 | cpu: "1500m" 12 | memory: "1Gi" -------------------------------------------------------------------------------- /charts/redisdistributed/Chart.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v2 2 | appVersion: "1.0" 3 | description: Helm chart deploys redis distributed instance 4 | name: redisdistributed 5 | version: 0.0.8 6 | icon: "https://storage.googleapis.com/zopdev-test-bucket/zop/files/originals/20241227/beaa0bf2-efc3-4096-9616-69568624a7d6-redisdistributed.png" 7 | maintainers: 8 | - name: ZopDev 9 | url: zop.dev 10 | annotations: 11 | type: datasource -------------------------------------------------------------------------------- /charts/redisdistributed/templates/configmap.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: ConfigMap 3 | metadata: 4 | name: "{{ .Release.Name }}-redis-configmap" 5 | namespace: {{ .Release.Namespace | quote }} 6 | labels: 7 | app.kubernetes.io/component: master 8 | data: 9 | master.conf: | 10 | dir /data 11 | rename-command FLUSHDB "" 12 | rename-command FLUSHALL "" 13 | 14 | replica.conf: | 15 | dir /data 16 | slave-read-only yes -------------------------------------------------------------------------------- /charts/redisdistributed/templates/headless-svc.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: "{{ .Release.Name }}-redis-headless-service" 5 | namespace: {{ .Release.Namespace | quote }} 6 | labels: 7 | app: "{{ .Release.Name }}-redisdistributed-master" 8 | app.kubernetes.io/component: master 9 | spec: 10 | type: ClusterIP 11 | clusterIP: None 12 | ports: 13 | - name: redis 14 | port: 6379 15 | targetPort: 6379 16 | - name: metrics-port 17 | port: 2121 18 | targetPort: 2121 19 | selector: 20 | app: "{{ .Release.Name }}-redisdistributed-master" -------------------------------------------------------------------------------- /charts/redisdistributed/templates/service-config-map.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: ConfigMap 3 | metadata: 4 | name: "{{ .Release.Name }}-redis-values-configmap" 5 | namespace: {{ .Release.Namespace | quote }} 6 | labels: 7 | app.kubernetes.io/component: master 8 | data: 9 | REDIS_PORT: "6379" 10 | REDIS_HOST: "{{ .Release.Name }}-redis-headless-service" 11 | REDIS_URL: {{ printf "redis://%s-redis-headless-service:6379" .Release.Name }} -------------------------------------------------------------------------------- /charts/redisdistributed/templates/serviceMonitor.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: monitoring.coreos.com/v1 2 | kind: ServiceMonitor 3 | metadata: 4 | name: {{ .Release.Name }}-redis 5 | labels: 6 | release: prometheus 7 | spec: 8 | selector: 9 | matchLabels: 10 | app: "{{ .Release.Name }}-redisdistributed" 11 | endpoints: 12 | - port: metrics-port 13 | interval: 30s 14 | path: /metrics -------------------------------------------------------------------------------- /charts/redisdistributed/values.yaml: -------------------------------------------------------------------------------- 1 | version: "6.2.13" 2 | 3 | master: 4 | resources: 5 | requests: 6 | cpu: "100m" 7 | memory: "500Mi" 8 | limits: 9 | cpu: "500m" 10 | memory: "1000Mi" 11 | 12 | persistence: 13 | size: 10Gi 14 | 15 | slave: 16 | enable : true 17 | count: 1 18 | resources: 19 | requests: 20 | cpu: "100m" 21 | memory: "500Mi" 22 | limits: 23 | cpu: "500m" 24 | memory: "1000Mi" 25 | 26 | persistence: 27 | size: 10Gi -------------------------------------------------------------------------------- /charts/scylladb/Chart.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | appVersion: "1.0" 3 | description: Helm chart for deploying ScyllaDB 4 | name: scylladb 5 | version: 0.0.1 6 | icon: "https://zop.dev/logo.png" 7 | maintainers: 8 | - name: ZopDev 9 | url: zop.dev -------------------------------------------------------------------------------- /charts/scylladb/templates/configmap.yaml: -------------------------------------------------------------------------------- 1 | {{- range $index, $service := .Values.services }} 2 | apiVersion: v1 3 | kind: ConfigMap 4 | metadata: 5 | name: {{ $.Release.Name }}-{{ $service.database }}-{{ $service.name }}-scylladb-configmap 6 | namespace: {{ $.Release.Namespace }} 7 | data: 8 | SCYLLADB_HOST: {{ $.Release.Name }}-scylladb 9 | SCYLLADB_KEYSPACE: "{{ $service.database }}" 10 | SCYLLADB_PORT: "9042" 11 | SCYLLADB_USERNAME: "{{ $service.name }}-user" 12 | --- 13 | {{- end }} -------------------------------------------------------------------------------- /charts/scylladb/templates/database-pod.yaml: -------------------------------------------------------------------------------- 1 | {{- range $index, $service := .Values.services }} 2 | apiVersion: v1 3 | kind: Pod 4 | metadata: 5 | name: {{ $.Release.Name }}-{{ $service.name }}-scylladb-init 6 | namespace: {{ $.Release.Namespace }} 7 | spec: 8 | containers: 9 | - name: scylladb-init 10 | image: {{ $.Values.image }} 11 | command: 12 | - /bin/bash 13 | - -c 14 | - | 15 | until cqlsh -u superuser -p $SCYLLADB_PASSWORD {{ $.Release.Name }}-scylladb; do 16 | echo "Waiting for ScyllaDB to be ready..." 17 | sleep 5 18 | done 19 | cqlsh -u superuser -p $SCYLLADB_PASSWORD {{ $.Release.Name }}-scylladb -e "SOURCE '/etc/config/init-schema.cql';" 20 | env: 21 | - name: SCYLLADB_PASSWORD 22 | valueFrom: 23 | secretKeyRef: 24 | name: {{ $.Release.Name }}-scylladb-database-secret 25 | key: pod_password 26 | volumeMounts: 27 | - name: script-volume 28 | mountPath: /etc/config 29 | volumes: 30 | - name: script-volume 31 | configMap: 32 | name: {{ $.Release.Name }}-{{ $service.name }}-init-script 33 | restartPolicy: OnFailure 34 | --- 35 | {{- end}} -------------------------------------------------------------------------------- /charts/scylladb/templates/database-secret.yaml: -------------------------------------------------------------------------------- 1 | {{- range $index, $service := .Values.services }} 2 | apiVersion: v1 3 | kind: Secret 4 | metadata: 5 | name: {{ $.Release.Name }}-{{ $service.database }}-{{ $service.name}}-scylladb-database-secret 6 | namespace: {{ $.Release.Namespace }} 7 | type: Opaque 8 | data: 9 | SCYLLADB_PASSWORD: {{ $service.password | b64enc }} 10 | --- 11 | {{- end }} -------------------------------------------------------------------------------- /charts/scylladb/templates/init-script-config-map.yaml: -------------------------------------------------------------------------------- 1 | {{- range $index, $service := .Values.services }} 2 | apiVersion: v1 3 | kind: ConfigMap 4 | metadata: 5 | name: {{ $.Release.Name }}-{{ $service.name }}-init-script 6 | namespace: {{ $.Release.Namespace }} 7 | data: 8 | init-schema.cql: | 9 | CREATE KEYSPACE IF NOT EXISTS "{{ $service.database }}" 10 | WITH replication = {'class': 'SimpleStrategy', 'replication_factor': 3}; 11 | 12 | USE "{{ $service.database }}"; 13 | CREATE ROLE IF NOT EXISTS "{{ $service.name }}-user" WITH PASSWORD = '{{ $service.password }}' AND LOGIN = true; 14 | GRANT ALL PERMISSIONS ON KEYSPACE "{{ $service.database }}" TO "{{ $service.name }}-user"; 15 | --- 16 | {{- end }} -------------------------------------------------------------------------------- /charts/scylladb/templates/secret.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Secret 3 | metadata: 4 | name: {{ $.Release.Name }}-scylladb-database-secret 5 | namespace: {{ .Release.Namespace }} 6 | type: Opaque 7 | data: 8 | pod_password: {{ .Values.scylladbRootPassword | b64enc }} -------------------------------------------------------------------------------- /charts/scylladb/templates/service.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: {{ $.Release.Name }}-scylladb 5 | labels: 6 | app: {{ $.Release.Name }}-scylladb 7 | spec: 8 | type: ClusterIP 9 | clusterIP: None 10 | ports: 11 | - port: 9042 12 | targetPort: 9042 13 | selector: 14 | app: {{ $.Release.Name }}-scylladb -------------------------------------------------------------------------------- /charts/scylladb/templates/user-job.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: batch/v1 2 | kind: Job 3 | metadata: 4 | name: {{ $.Release.Name }}-scylladb-create-superuser 5 | namespace: {{ $.Release.Namespace }} 6 | spec: 7 | template: 8 | spec: 9 | containers: 10 | - name: scylla-superuser-creation 11 | image: {{ .Values.image }} 12 | command: 13 | - "/bin/bash" 14 | - "-c" 15 | - | 16 | until cqlsh -u cassandra -p cassandra {{ $.Release.Name }}-scylladb; do 17 | echo "Waiting for ScyllaDB to be ready..." 18 | sleep 5 19 | done 20 | 21 | cqlsh -u cassandra -p cassandra {{ $.Release.Name }}-scylladb -e "CREATE ROLE superuser WITH PASSWORD = '${SCYLLA_PASSWORD}' AND LOGIN = true AND SUPERUSER = true;" 22 | cqlsh -u superuser -p ${SCYLLA_PASSWORD} {{ $.Release.Name }}-scylladb -e "DROP ROLE cassandra;" 23 | env: 24 | - name: SCYLLA_PASSWORD 25 | valueFrom: 26 | secretKeyRef: 27 | name: {{ $.Release.Name }}-scylladb-database-secret 28 | key: pod_password 29 | restartPolicy: OnFailure -------------------------------------------------------------------------------- /charts/scylladb/values.yaml: -------------------------------------------------------------------------------- 1 | image: "scylladb/scylla:latest" 2 | pullPolicy: IfNotPresent 3 | 4 | resources: 5 | requests: 6 | memory: "1Gi" 7 | cpu: "500m" 8 | limits: 9 | memory: "2Gi" 10 | cpu: "1000m" 11 | 12 | diskSize: "10Gi" 13 | 14 | config: 15 | cluster_name: "Cluster" 16 | 17 | scylladbRootPassword: 18 | 19 | services: -------------------------------------------------------------------------------- /charts/service/Chart.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | appVersion: "1.0" 3 | description: Helm chart creates a deployment, service, hpa for a service along with serviceMonitor etc 4 | name: service 5 | version: 0.0.23 6 | icon: "https://zop.dev/logo.png" 7 | maintainers: 8 | - name: ZopDev 9 | url: zop.dev -------------------------------------------------------------------------------- /charts/service/templates/env-configmap.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: ConfigMap 3 | metadata: 4 | name: {{ .Values.name }}-env-configmap 5 | labels: 6 | app: {{ .Values.name }} 7 | data: 8 | {{- range $k, $v := .Values.env }} 9 | {{ $k }}: {{ $v | quote }} 10 | {{- end }} 11 | {{- if .Values.envList }} 12 | {{- range .Values.envList }} 13 | {{ .name }}: {{ .value | quote }} 14 | {{- end }} 15 | {{- end }} 16 | -------------------------------------------------------------------------------- /charts/service/templates/grafana-dashboard-configmap.yaml: -------------------------------------------------------------------------------- 1 | {{- if .Values.grafanaDashboard }} 2 | apiVersion: v1 3 | kind: ConfigMap 4 | metadata: 5 | name: {{ .Values.name }} 6 | namespace: monitoring 7 | labels: 8 | grafanaDashboard: "true" 9 | data: 10 | {{- range $k,$v := .Values.grafanaDashboard }} 11 | {{ $k }}: {{ $v | toJson | quote }} 12 | {{- end }} 13 | 14 | {{- end }} -------------------------------------------------------------------------------- /charts/service/templates/hpa.yaml: -------------------------------------------------------------------------------- 1 | {{- if (.Values.hpa_enable) -}} 2 | --- 3 | apiVersion: autoscaling/v2 4 | kind: HorizontalPodAutoscaler 5 | metadata: 6 | name: {{ .Values.name }} 7 | spec: 8 | maxReplicas: {{ .Values.maxReplicas | default 4}} 9 | minReplicas: {{ .Values.minReplicas | default 2}} 10 | scaleTargetRef: 11 | apiVersion: apps/v1 12 | kind: Deployment 13 | name: {{ .Values.name }} 14 | metrics: 15 | - type: Resource 16 | resource: 17 | name: cpu 18 | target: 19 | type: Utilization 20 | {{ if ne .Values.hpaCPU "" }} 21 | {{ if ne .Values.hpaCPU nil }} 22 | averageUtilization: {{ .Values.hpaCPU }} 23 | {{ else if ne .Values.maxCPU "" }} 24 | averageUtilization: {{ div (mul (int (trimSuffix "m" .Values.maxCPU)) 80) (int (trimSuffix "m" .Values.minCPU)) }} 25 | {{ else }} 26 | averageUtilization: 80 27 | {{ end }} 28 | {{ end }} 29 | - type: Resource 30 | resource: 31 | name: memory 32 | target: 33 | type: Utilization 34 | {{if ne .Values.hpaMemory ""}} 35 | {{ if ne .Values.hpaMemory nil }} 36 | averageUtilization: {{ .Values.hpaMemory }} 37 | {{ else if ne .Values.maxMemory "" }} 38 | averageUtilization: {{ div (mul (int (trimSuffix "M" .Values.maxMemory)) 80) (int (trimSuffix "M" .Values.minMemory)) }} 39 | {{ else }} 40 | averageUtilization: 80 41 | {{ end }} 42 | {{ end }} 43 | --- 44 | {{- end -}} -------------------------------------------------------------------------------- /charts/service/templates/ingress.yaml: -------------------------------------------------------------------------------- 1 | {{- if and .Values.nginx .Values.nginx.host }} 2 | apiVersion: networking.k8s.io/v1 3 | kind: Ingress 4 | metadata: 5 | name: {{ .Values.name }} 6 | namespace: {{ .Release.Namespace }} 7 | labels: 8 | app: {{ .Values.name }} 9 | annotations: 10 | {{- range $key, $value := .Values.nginx.annotations }} 11 | {{ $key }}: {{ $value | quote }} 12 | {{- end }} 13 | 14 | spec: 15 | rules: 16 | - host: {{ .Values.nginx.host }} 17 | http: 18 | paths: 19 | - path: / 20 | pathType: ImplementationSpecific 21 | backend: 22 | service: 23 | name: {{ .Values.name }} 24 | port: 25 | number: 80 26 | {{- if .Values.metricsPort }} 27 | - path: /metrics 28 | pathType: ImplementationSpecific 29 | backend: 30 | service: 31 | name: {{ .Values.name }} 32 | port: 33 | number: 2121 34 | {{- end }} 35 | tls: 36 | - hosts: 37 | - '{{ .Values.nginx.tlsHost | default .Values.nginx.host }}' 38 | secretName: {{ .Values.nginx.tlsSecretName | default "tls-secret-replica" }} 39 | {{- end }} -------------------------------------------------------------------------------- /charts/service/templates/pod-disruption-budget.yaml: -------------------------------------------------------------------------------- 1 | {{- if gt (int .Values.minReplicas) 1 }} 2 | apiVersion: policy/v1 3 | kind: PodDisruptionBudget 4 | metadata: 5 | name: {{ .Values.name }} 6 | spec: 7 | minAvailable: {{ .Values.minAvailable }} 8 | selector: 9 | matchLabels: 10 | app: {{ .Values.name }} 11 | {{- end }} -------------------------------------------------------------------------------- /charts/service/templates/pvc.yaml: -------------------------------------------------------------------------------- 1 | {{- if and .Values.volumeMounts .Values.volumeMounts.pvc }} 2 | {{- range $index, $service := .Values.volumeMounts.pvc }} 3 | apiVersion: v1 4 | kind: PersistentVolumeClaim 5 | metadata: 6 | name: {{ $service.name }} 7 | labels: 8 | app.kubernetes.io/instance: {{ $.Release.Name }} 9 | app.kubernetes.io/name: {{ $.Chart.Name }} 10 | spec: 11 | accessModes: 12 | - ReadWriteOnce 13 | resources: 14 | requests: 15 | storage: {{ .storage | default "5Gi" }} 16 | --- 17 | {{- end }} 18 | {{- end }} -------------------------------------------------------------------------------- /charts/service/templates/service.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: {{ .Values.name }} 5 | labels: 6 | app: {{ .Values.name }} 7 | spec: 8 | ports: 9 | - name: http-port 10 | port: 80 11 | targetPort: {{ .Values.httpPort}} 12 | {{- if and .Values.metricsPort (ne (int .Values.metricsPort) 0) }} 13 | - name: metrics-port 14 | port: 2121 15 | targetPort: {{ .Values.metricsPort}} 16 | {{- end }} 17 | {{- range $k, $v := .Values.ports}} 18 | - name: {{ $k}} 19 | port: {{ $v }} 20 | targetPort: {{ $v }} 21 | {{- end }} 22 | selector: 23 | app: {{ .Values.name }} 24 | type: NodePort 25 | --- -------------------------------------------------------------------------------- /charts/service/templates/serviceMonitor.yaml: -------------------------------------------------------------------------------- 1 | {{- if .Values.metricsPort }} 2 | apiVersion: monitoring.coreos.com/v1 3 | kind: ServiceMonitor 4 | metadata: 5 | name: {{.Values.name}} 6 | labels: 7 | app: {{.Values.name}} 8 | release: prometheus 9 | spec: 10 | selector: 11 | matchLabels: 12 | app: {{.Values.name}} 13 | endpoints: 14 | - port: metrics-port 15 | interval: {{.Values.metricsScrapeInterval }} 16 | path: /metrics 17 | {{- end }} 18 | --- -------------------------------------------------------------------------------- /charts/solr-operator/Chart.lock: -------------------------------------------------------------------------------- 1 | dependencies: 2 | - name: zookeeper-operator 3 | repository: https://helm.zop.dev 4 | version: v0.0.1 5 | digest: sha256:f179767db85e46a206747d922d65c33e33d5a246a8997ef9dc246837eac61477 6 | generated: "2025-04-08T12:12:53.582849+05:30" 7 | -------------------------------------------------------------------------------- /charts/solr-operator/Chart.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v2 2 | appVersion: "1.0" 3 | description: A Helm chart for Deploying Solr Operator on Kubernetes 4 | name: solr-operator 5 | version: 0.0.1 6 | icon: "https://storage.googleapis.com/zopdev-test-bucket/zop/files/originals/20250403/a45b7860-5846-4fa9-b68d-6765251210bd-solr.png" 7 | dependencies: 8 | - name: 'zookeeper-operator' 9 | version: 0.0.1 10 | repository: https://helm.zop.dev 11 | condition: zookeeper-operator.install 12 | maintainers: 13 | - name: ZopDev 14 | url: zop.dev -------------------------------------------------------------------------------- /charts/solr-operator/templates/_helpers.tpl: -------------------------------------------------------------------------------- 1 | {{- define "solr-operator.name" -}} 2 | {{ .Chart.Name | trunc 63 | trimSuffix "-" }} 3 | {{- end }} 4 | 5 | {{- define "solr-operator.fullname" -}} 6 | {{ printf "%s-solr-operator" .Release.Name | trunc 63 | trimSuffix "-" }} 7 | {{- end }} 8 | 9 | {{- define "solr-operator.chart" -}} 10 | {{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}} 11 | {{- end -}} 12 | 13 | {{- define "solr-operator.serviceAccountName" -}} 14 | {{ printf "%s-sa" (include "solr-operator.fullname" .) }} 15 | {{- end }} 16 | 17 | {{- define "solr-operator.watchNamespaces" -}} 18 | {{ .Release.Namespace }} 19 | {{- end -}} 20 | 21 | {{- define "solr-operator.mTLS.clientCertDirectory" -}} 22 | /etc/ssl/solr/client-cert 23 | {{- end -}} 24 | 25 | {{- define "solr-operator.mTLS.caCertDirectory" -}} 26 | /etc/ssl/solr/ca-cert 27 | {{- end -}} 28 | {{- define "solr-operator.mTLS.caCertName" -}} 29 | rootSolrCert.pem 30 | {{- end -}} 31 | 32 | {{- define "solr-operator.mTLS.volumeMounts" -}} 33 | {{- if .Values.mTLS.clientCertSecret -}} 34 | - name: tls-client-cert 35 | mountPath: {{ include "solr-operator.mTLS.clientCertDirectory" . }} 36 | readOnly: true 37 | {{- end -}} 38 | {{ if .Values.mTLS.caCertSecret }} 39 | - name: tls-ca-cert 40 | mountPath: {{ include "solr-operator.mTLS.caCertDirectory" . }} 41 | readOnly: true 42 | {{ end }} 43 | {{- end -}} 44 | 45 | {{- define "solr-operator.mTLS.volumes" -}} 46 | {{- if .Values.mTLS.clientCertSecret -}} 47 | - name: tls-client-cert 48 | secret: 49 | secretName: {{ .Values.mTLS.clientCertSecret }} 50 | optional: false 51 | {{- end -}} 52 | {{ if .Values.mTLS.caCertSecret }} 53 | - name: tls-ca-cert 54 | secret: 55 | secretName: {{ .Values.mTLS.caCertSecret }} 56 | items: 57 | - key: {{ .Values.mTLS.caCertSecretKey }} 58 | path: {{ include "solr-operator.mTLS.caCertName" . }} 59 | optional: false 60 | {{- end -}} 61 | {{- end -}} -------------------------------------------------------------------------------- /charts/solr-operator/templates/leader-election-role-binding.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: rbac.authorization.k8s.io/v1 2 | kind: RoleBinding 3 | metadata: 4 | name: {{ include "solr-operator.fullname" . }}-leader-election-rolebinding 5 | namespace: {{ .Release.Namespace }} 6 | roleRef: 7 | apiGroup: rbac.authorization.k8s.io 8 | kind: Role 9 | name: {{ include "solr-operator.fullname" . }}-leader-election-role 10 | subjects: 11 | - kind: ServiceAccount 12 | name: {{ include "solr-operator.serviceAccountName" . }} 13 | namespace: {{ .Release.Namespace }} 14 | 15 | -------------------------------------------------------------------------------- /charts/solr-operator/templates/leader-election-role.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: rbac.authorization.k8s.io/v1 2 | kind: Role 3 | metadata: 4 | name: {{ include "solr-operator.fullname" . }}-leader-election-role 5 | namespace: {{ .Release.Namespace }} 6 | rules: 7 | - apiGroups: 8 | - "" 9 | resources: 10 | - configmaps 11 | verbs: 12 | - get 13 | - list 14 | - watch 15 | - create 16 | - update 17 | - patch 18 | - delete 19 | - apiGroups: 20 | - coordination.k8s.io 21 | resources: 22 | - leases 23 | verbs: 24 | - get 25 | - list 26 | - watch 27 | - create 28 | - update 29 | - patch 30 | - delete 31 | - apiGroups: 32 | - "" 33 | resources: 34 | - events 35 | verbs: 36 | - create 37 | - patch 38 | -------------------------------------------------------------------------------- /charts/solr-operator/templates/role-binding.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: rbac.authorization.k8s.io/v1 2 | kind: ClusterRoleBinding 3 | metadata: 4 | name: {{ include "solr-operator.fullname" . }}-rolebinding 5 | namespace: {{ .Release.Namespace }} 6 | roleRef: 7 | apiGroup: rbac.authorization.k8s.io 8 | kind: ClusterRole 9 | name: {{ include "solr-operator.fullname" . }}-role 10 | subjects: 11 | - kind: ServiceAccount 12 | name: {{ include "solr-operator.serviceAccountName" . }} 13 | namespace: {{ .Release.Namespace }} 14 | -------------------------------------------------------------------------------- /charts/solr-operator/templates/serviceaccount.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: ServiceAccount 3 | metadata: 4 | name: {{ include "solr-operator.serviceAccountName" . }} 5 | namespace: {{ .Release.Namespace }} -------------------------------------------------------------------------------- /charts/solr-operator/values.yaml: -------------------------------------------------------------------------------- 1 | version : "v0.9.0" 2 | 3 | zookeeper-operator: 4 | install: true 5 | crd: 6 | create: true 7 | 8 | resources: 9 | requests: 10 | cpu: "100m" 11 | memory: "128Mi" 12 | limits: 13 | cpu: "200m" 14 | memory: "256Mi" 15 | 16 | mTLS: 17 | clientCertSecret: "" 18 | caCertSecret: "" 19 | caCertSecretKey: ca-cert.pem 20 | insecureSkipVerify: true 21 | watchForUpdates: true 22 | 23 | metrics: 24 | enable: true 25 | -------------------------------------------------------------------------------- /charts/solr/Chart.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v2 2 | appVersion: "1.0" 3 | description: Helm chart for deploying Apache Solr datastore 4 | name: solr 5 | version: 0.0.5 6 | icon: "https://storage.googleapis.com/zopdev-test-bucket/zop/files/originals/20250403/a45b7860-5846-4fa9-b68d-6765251210bd-solr.png" 7 | maintainers: 8 | - name: ZopDev 9 | url: zop.dev 10 | annotations: 11 | type: datasource -------------------------------------------------------------------------------- /charts/solr/templates/_helpers.tpl: -------------------------------------------------------------------------------- 1 | {{- define "solr.hashPassword" -}} 2 | {{- $password := .rootPassword }} 3 | 4 | {{- $magicNum := 101559956668416 }} 5 | 6 | {{- /* Generate salt components */}} 7 | {{- $rand1 := randInt 0 $magicNum }} 8 | {{- $num1 := sub $magicNum $rand1 }} 9 | {{- $rand2 := randInt 0 $magicNum }} 10 | {{- $num2 := sub $magicNum $rand2 }} 11 | 12 | {{- /* Convert numbers to base36-like encoding */}} 13 | {{- $base36num1 := toString $num1 | b64enc }} 14 | {{- $base36num2 := toString $num2 | b64enc }} 15 | 16 | {{- /* Create salt */}} 17 | {{- $salt := print (substr 1 -1 $base36num1) (substr 1 -1 $base36num2) }} 18 | 19 | {{- /* Hash operations */}} 20 | {{- $saltedInput := print $salt $password }} 21 | {{- $firstHash := $saltedInput | sha256sum }} 22 | {{- $secondHash := $firstHash | sha256sum }} 23 | 24 | {{- /* Final encoding */}} 25 | {{- $finalHash := $secondHash | b64enc }} 26 | {{- $encodedSalt := $salt | b64enc }} 27 | 28 | {{- printf "%s %s" $finalHash $encodedSalt }} 29 | {{- end }} 30 | -------------------------------------------------------------------------------- /charts/solr/templates/configmap.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: ConfigMap 3 | metadata: 4 | name: {{ $.Release.Name }}-solr-configmap 5 | namespace: {{ $.Release.Namespace }} 6 | data: 7 | SOLR_HOST: {{ $.Release.Name }}-solr 8 | SOLR_PORT: "8983" 9 | -------------------------------------------------------------------------------- /charts/solr/templates/ingress.yaml: -------------------------------------------------------------------------------- 1 | {{- if and .Values.host .Values.solrRootPassword }} 2 | apiVersion: networking.k8s.io/v1 3 | kind: Ingress 4 | metadata: 5 | name: {{ .Release.Name }}-solr 6 | namespace: {{ .Release.Namespace }} 7 | labels: 8 | app: solr 9 | annotations: 10 | kubernetes.io/ingress.class: "nginx" 11 | nginx.ingress.kubernetes.io/auth-realm: "" 12 | nginx.ingress.kubernetes.io/auth-secret: "" 13 | nginx.ingress.kubernetes.io/auth-type: "" 14 | spec: 15 | rules: 16 | - host: {{ .Values.host }} 17 | http: 18 | paths: 19 | - path: / 20 | pathType: ImplementationSpecific 21 | backend: 22 | service: 23 | name: {{ .Release.Name }}-solr 24 | port: 25 | number: 8983 26 | tls: 27 | - hosts: 28 | - '{{ .Values.tlsHost | default .Values.host }}' 29 | secretName: {{ .Values.tlsSecretName | default "tls-secret-replica" }} 30 | {{- end }} 31 | -------------------------------------------------------------------------------- /charts/solr/templates/init-solr-security.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: ConfigMap 3 | metadata: 4 | name: {{ .Release.Name }}-solr-security-config 5 | data: 6 | security.json: | 7 | { 8 | "authentication":{ 9 | "blockUnknown": false, 10 | "class":"solr.BasicAuthPlugin", 11 | "credentials":{"admin":"{{ include "solr.hashPassword" . }}"}, 12 | "realm":"Solr users", 13 | "forwardCredentials": false 14 | }, 15 | "authorization":{ 16 | "class":"solr.RuleBasedAuthorizationPlugin", 17 | "permissions":[{"name":"security-edit", 18 | "role":"admin"}], 19 | "user-role":{ "admin":"admin"} 20 | } 21 | } -------------------------------------------------------------------------------- /charts/solr/templates/secret.yaml: -------------------------------------------------------------------------------- 1 | {{- $secretName := printf "%s-solr-root-secret" .Release.Name }} 2 | 3 | {{/* Generate a strong root password only if not already set */}} 4 | {{- $generatedRootPassword := printf "%s" (randAlpha 6 | lower ) }} 5 | 6 | {{- $rootPassword := $generatedRootPassword }} 7 | 8 | --- 9 | apiVersion: v1 10 | kind: Secret 11 | metadata: 12 | name: {{ $secretName }} 13 | namespace: {{ .Release.Namespace }} 14 | type: Opaque 15 | data: 16 | {{- if .Release.IsInstall }} 17 | root-password: {{ $rootPassword | b64enc }} 18 | {{ else }} 19 | root-password: {{ index (lookup "v1" "Secret" .Release.Namespace $secretName ).data "root-password" }} 20 | {{ end }} 21 | hashed-password: {{ include "solr.hashPassword" (dict "rootPassword" $rootPassword) | b64enc }} 22 | -------------------------------------------------------------------------------- /charts/solr/templates/service.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: {{ .Release.Name }}-solr 5 | namespace: {{ .Release.Namespace }} 6 | labels: 7 | app: solr 8 | spec: 9 | selector: 10 | app: solr 11 | type: ClusterIP 12 | ports: 13 | - protocol: TCP 14 | port: 8983 15 | targetPort: 8983 16 | name: solr 17 | - protocol: TCP 18 | port: 2121 19 | targetPort: 2121 20 | name: metrics 21 | -------------------------------------------------------------------------------- /charts/solr/templates/serviceMonitor.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: monitoring.coreos.com/v1 2 | kind: ServiceMonitor 3 | metadata: 4 | name: {{ .Release.Name }}-solr 5 | namespace: {{ .Release.Namespace }} 6 | labels: 7 | app: solr 8 | release: prometheus 9 | spec: 10 | selector: 11 | matchLabels: 12 | app: solr 13 | endpoints: 14 | - port: metrics 15 | interval: 30s 16 | path: /metrics -------------------------------------------------------------------------------- /charts/solr/values.schema.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://json-schema.org/draft-07/schema#", 3 | "type": "object", 4 | "properties": { 5 | "version": { 6 | "default": "9.8", 7 | "mutable": true 8 | }, 9 | "resources": { 10 | "type": "object", 11 | "properties": { 12 | "requests": { 13 | "type": "object", 14 | "properties": { 15 | "memory": { 16 | "type": "string", 17 | "default": "2500Mi", "mutable": true 18 | }, 19 | "cpu": { 20 | "type": "string", 21 | "default": "250m", "mutable": true 22 | } 23 | } 24 | }, 25 | "limits": { 26 | "type": "object", 27 | "properties": { 28 | "memory": { 29 | "type": "string", 30 | "default": "3000Mi", "mutable": true 31 | }, 32 | "cpu": { 33 | "type": "string", 34 | "default": "500m", "mutable": true 35 | } 36 | } 37 | } 38 | } 39 | }, 40 | "diskSize": { 41 | "type": "string", 42 | "default": "10Gi", "mutable": true, 43 | "editDisabled": true 44 | }, 45 | "services": { 46 | "type": "array", 47 | "items": { 48 | "type": "object", 49 | "properties": { 50 | "name": { 51 | "type": "string" 52 | } 53 | }, 54 | "required": ["name"] 55 | } 56 | } 57 | } 58 | } -------------------------------------------------------------------------------- /charts/solr/values.yaml: -------------------------------------------------------------------------------- 1 | version: "9.8" 2 | 3 | resources: 4 | requests: 5 | memory: "2500Mi" 6 | cpu: "250m" 7 | limits: 8 | memory: "3000Mi" 9 | cpu: "500m" 10 | 11 | diskSize: "10Gi" 12 | -------------------------------------------------------------------------------- /charts/solrcloud/Chart.lock: -------------------------------------------------------------------------------- 1 | dependencies: 2 | - name: solr-operator 3 | repository: https://helm.zop.dev 4 | version: v0.0.1 5 | digest: sha256:7567d50a6f686a97bf9e43284ccb8b72ad9a3e50b1c7027172a76064df54f40d 6 | generated: "2025-04-29T16:19:35.871851+05:30" 7 | -------------------------------------------------------------------------------- /charts/solrcloud/Chart.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v2 2 | appVersion: "1.0" 3 | description: Helm chart for deploying Apache SolrCloud datastore 4 | name: solrcloud 5 | version: 0.0.3 6 | icon: "https://storage.googleapis.com/zopdev-test-bucket/zop/files/originals/20250408/cbc1c182-d41b-4b92-9d45-b87b562c2640-solrcloud.png" 7 | maintainers: 8 | - name: ZopDev 9 | url: zop.dev 10 | dependencies: 11 | - name: 'solr-operator' 12 | version: 0.0.1 13 | repository: https://helm.zop.dev 14 | annotations: 15 | type: datasource -------------------------------------------------------------------------------- /charts/solrcloud/templates/_custom_option_helpers.tpl: -------------------------------------------------------------------------------- 1 | {{- define "solr.custom-kube-options.pod.filler" -}} 2 | {{- if .Values.resources -}} 3 | resources: 4 | {{- toYaml .Values.resources | nindent 2 }} 5 | {{ end }} 6 | {{- end -}} 7 | 8 | {{- define "solr.custom-kube-options.stateful-set.filler" }} 9 | {{- end -}} 10 | 11 | {{- define "solr.custom-kube-options.filler" -}} 12 | {{- with (include "solr.custom-kube-options.pod.filler" .) -}} 13 | {{- if . -}} 14 | podOptions: 15 | {{- . | nindent 2 -}} 16 | {{ end }} 17 | {{ end }} 18 | {{- with (include "solr.custom-kube-options.stateful-set.filler" .) -}} 19 | {{- if . -}} 20 | statefulSetOptions: 21 | {{- . | nindent 2 -}} 22 | {{ end }} 23 | {{ end }} 24 | {{- end -}} 25 | 26 | {{- define "solr.custom-kube-options" -}} 27 | {{- with (include "solr.custom-kube-options.filler" .) -}} 28 | {{- if . -}} 29 | customSolrKubeOptions: 30 | {{- . | nindent 2 -}} 31 | {{ end }} 32 | {{ end }} 33 | {{- end -}} -------------------------------------------------------------------------------- /charts/solrcloud/templates/_helpers.tpl: -------------------------------------------------------------------------------- 1 | {{- define "solr.name" -}} 2 | {{- default .Chart.Name | trunc 63 | trimSuffix "-" }} 3 | {{- end }} 4 | 5 | {{- define "solr.fullname" -}} 6 | {{- printf "%s-solrcloud" .Release.Name | trunc 63 | trimSuffix "-" }} 7 | {{- end }} 8 | 9 | {{- define "solr.fullname-no-suffix" -}} 10 | {{ include "solr.fullname" . | trimSuffix "-solrcloud" | trimSuffix "-solr" }} 11 | {{- end }} 12 | 13 | {{- define "solr.chart" -}} 14 | {{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} 15 | {{- end }} 16 | 17 | {{- define "solr.labels" -}} 18 | helm.sh/chart: {{ include "solr.chart" . }} 19 | {{ include "solr.selectorLabels" . }} 20 | app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} 21 | {{- end }} 22 | 23 | {{- define "solr.selectorLabels" -}} 24 | app.kubernetes.io/name: {{ include "solr.name" . }} 25 | app.kubernetes.io/instance: {{ .Release.Name }} 26 | {{- end }} -------------------------------------------------------------------------------- /charts/solrcloud/templates/configmap.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: ConfigMap 3 | metadata: 4 | name: {{ $.Release.Name }}-solrcloud-auth-configmap 5 | namespace: {{ $.Release.Namespace }} 6 | data: 7 | SOLR_HOST: {{ $.Release.Name }}-solrcloud-headless 8 | SOLR_PORT: "8983" 9 | SOLR_USER: "admin" -------------------------------------------------------------------------------- /charts/solrcloud/templates/get-password-admin.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: batch/v1 2 | kind: Job 3 | metadata: 4 | name: {{ .Release.Name }}-get-password 5 | namespace: {{ .Release.Namespace }} 6 | annotations: 7 | "helm.sh/hook": post-install,post-upgrade 8 | "helm.sh/hook-weight": "1" 9 | "helm.sh/hook-delete-policy": hook-succeeded 10 | spec: 11 | template: 12 | spec: 13 | serviceAccountName: {{ .Release.Name }}-manager-sa 14 | restartPolicy: Never 15 | containers: 16 | - name: kubectl 17 | image: bitnami/kubectl 18 | command: 19 | - /bin/sh 20 | - -c 21 | - | 22 | # Wait for source secret to be available 23 | echo "Waiting for source secret to be available..." 24 | until kubectl get secret {{ .Release.Name }}-solrcloud-security-bootstrap -n {{ .Release.Namespace }}; do 25 | sleep 10 26 | done 27 | 28 | # Get password from source secret 29 | PASSWORD=$(kubectl get secret {{ .Release.Name }}-solrcloud-security-bootstrap -n {{ .Release.Namespace }} -o jsonpath='{.data.admin}' | base64 --decode) 30 | 31 | # Create or patch destination secret 32 | echo "Creating/updating destination secret with password from source..." 33 | kubectl create secret generic {{ .Release.Name }}-solrcloud-auth-secret \ 34 | -n {{ .Release.Namespace }} \ 35 | --from-literal=SOLR_PASSWORD="$PASSWORD" \ 36 | --type=Opaque \ 37 | --dry-run=client -o yaml | kubectl apply -f - 38 | 39 | echo "Password successfully copied!" -------------------------------------------------------------------------------- /charts/solrcloud/templates/metricsService.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: {{ .Release.Name }}-solr-metrics-2121 5 | namespace: {{ .Release.Namespace }} 6 | labels: 7 | app.kubernetes.io/managed-by: Helm 8 | service-type: metrics 9 | solr-prometheus-exporter: {{ .Release.Name }}-prom-exporter 10 | annotations: 11 | cloud.google.com/neg: '{"ingress":true}' 12 | prometheus.io/path: /metrics 13 | prometheus.io/scheme: http 14 | prometheus.io/scrape: 'true' 15 | spec: 16 | type: ClusterIP 17 | ports: 18 | - name: solr-metrics 19 | protocol: TCP 20 | appProtocol: http 21 | port: 2121 22 | targetPort: 8080 23 | selector: 24 | solr-prometheus-exporter: {{ .Release.Name }}-prom-exporter 25 | technology: solr-prometheus-exporter 26 | -------------------------------------------------------------------------------- /charts/solrcloud/templates/serviceMonitor.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: monitoring.coreos.com/v1 2 | kind: ServiceMonitor 3 | metadata: 4 | name: {{ .Release.Name }}-solr-metrics 5 | labels: 6 | app: {{ .Release.Name }}-solr-metrics 7 | release: prometheus 8 | spec: 9 | selector: 10 | matchLabels: 11 | solr-prometheus-exporter: {{ .Release.Name }}-prom-exporter 12 | namespaceSelector: 13 | matchNames: 14 | - {{ .Release.Namespace }} 15 | endpoints: 16 | - port: solr-metrics 17 | interval: 10s 18 | path: /metrics 19 | scheme: http 20 | -------------------------------------------------------------------------------- /charts/solrcloud/templates/solr-metrics.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: solr.apache.org/v1beta1 2 | kind: SolrPrometheusExporter 3 | metadata: 4 | name: {{ .Release.Name }}-prom-exporter 5 | namespace: {{ .Release.Namespace }} 6 | spec: 7 | customKubeOptions: 8 | podOptions: 9 | resources: 10 | requests: 11 | cpu: 300m 12 | memory: 900Mi 13 | solrReference: 14 | basicAuthSecret: {{ .Release.Name }}-solrcloud-basic-auth 15 | cloud: 16 | name: {{ .Release.Name }} 17 | numThreads: 6 18 | -------------------------------------------------------------------------------- /charts/solrcloud/templates/solrcloud.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: solr.apache.org/v1beta1 2 | kind: SolrCloud 3 | metadata: 4 | name: {{ include "solr.fullname-no-suffix" . }} 5 | namespace: {{ .Release.Namespace }} 6 | labels: 7 | {{- include "solr.labels" . | nindent 4 }} 8 | spec: 9 | solrImage: 10 | repository: solr 11 | tag: {{ .Values.version | quote}} 12 | solrSecurity: 13 | authenticationType: Basic 14 | solrAddressability: 15 | podPort: 8983 16 | updateStrategy: 17 | method: "Managed" 18 | availability: 19 | podDisruptionBudget: 20 | enabled: true 21 | method: ClusterWide 22 | scaling: 23 | vacatePodsOnScaleDown: true 24 | populatePodsOnScaleUp: true 25 | dataStorage: 26 | persistent: 27 | reclaimPolicy: "Retain" 28 | pvcTemplate: 29 | metadata: 30 | name: {{ include "solr.fullname-no-suffix" . }}-pvc 31 | spec: 32 | resources: 33 | requests: 34 | storage: {{ .Values.diskSize | quote }} 35 | {{- include "solr.custom-kube-options" . | nindent 2 -}} 36 | zookeeperRef: 37 | provided: 38 | chroot: "/" 39 | replicas: 3 40 | maxUnavailableReplicas: 1 41 | -------------------------------------------------------------------------------- /charts/solrcloud/values.yaml: -------------------------------------------------------------------------------- 1 | version: "8.11" 2 | 3 | resources: 4 | requests: 5 | cpu: "500m" 6 | memory: "500Mi" 7 | limits: 8 | cpu: "1000m" 9 | memory: "1500Mi" 10 | 11 | diskSize : "20Gi" 12 | 13 | solr-operator: 14 | version : "v0.9.0" 15 | resources: 16 | requests: 17 | cpu: "100m" 18 | memory: "128Mi" 19 | limits: 20 | cpu: "200m" 21 | memory: "256Mi" -------------------------------------------------------------------------------- /charts/superset/Chart.lock: -------------------------------------------------------------------------------- 1 | dependencies: 2 | - name: postgres 3 | repository: https://helm.zop.dev 4 | version: v0.0.6 5 | - name: redis 6 | repository: https://helm.zop.dev 7 | version: v0.0.1 8 | digest: sha256:6b796c78768fdbc7da79de8f150d549203027c233686329367bf8058d24291b0 9 | generated: "2025-04-14T16:48:01.756142+05:30" 10 | -------------------------------------------------------------------------------- /charts/superset/Chart.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v2 2 | appVersion: "1.0" 3 | description: Helm chart for Deploying Apache Superset 4 | name: superset 5 | version: 0.0.5 6 | type: application 7 | icon: "https://storage.googleapis.com/zopdev-test-bucket/zop/files/originals/20250226/195c1a30-da2a-4eb4-8394-68fe3fd52523-superset.png" 8 | maintainers: 9 | - name: ZopDev 10 | url: zop.dev 11 | dependencies: 12 | - condition: postgres.enabled 13 | name: postgres 14 | version: 0.0.6 15 | repository: https://helm.zop.dev 16 | - condition: redis.enabled 17 | name: redis 18 | version: 0.0.1 19 | repository: https://helm.zop.dev 20 | annotations: 21 | type: application -------------------------------------------------------------------------------- /charts/superset/templates/env-secrets.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Secret 3 | metadata: 4 | name: {{ template "superset.fullname" . }}-env 5 | namespace: {{ .Release.Namespace }} 6 | labels: 7 | app: {{ template "superset.fullname" . }} 8 | chart: {{ template "superset.chart" . }} 9 | release: "{{ .Release.Name }}" 10 | type: Opaque 11 | stringData: 12 | REDIS_HOST: {{ tpl .Values.supersetNode.connections.redis_host . | quote }} 13 | REDIS_USER: {{ .Values.supersetNode.connections.redis_user | quote }} 14 | {{- if .Values.supersetNode.connections.redis_password }} 15 | REDIS_PASSWORD: {{ .Values.supersetNode.connections.redis_password | quote }} 16 | {{- end }} 17 | REDIS_PORT: {{ .Values.supersetNode.connections.redis_port | quote }} 18 | REDIS_PROTO: {{ if .Values.supersetNode.connections.redis_ssl.enabled }}"rediss"{{ else }}"redis"{{ end }} 19 | REDIS_DB: {{ .Values.supersetNode.connections.redis_cache_db | quote }} 20 | REDIS_CELERY_DB: {{ .Values.supersetNode.connections.redis_celery_db | quote }} 21 | {{- if .Values.supersetNode.connections.redis_ssl.enabled }} 22 | REDIS_SSL_CERT_REQS: {{ .Values.supersetNode.connections.redis_ssl.ssl_cert_reqs | default "CERT_NONE" | quote }} 23 | {{- end }} 24 | DB_HOST: {{ tpl .Values.supersetNode.connections.db_host . | quote }} 25 | DB_PORT: {{ .Values.supersetNode.connections.db_port | quote }} 26 | DB_NAME: {{ .Values.supersetNode.connections.db_name | quote }} -------------------------------------------------------------------------------- /charts/superset/templates/flower/service.yaml: -------------------------------------------------------------------------------- 1 | {{- if .Values.supersetCeleryFlower.enabled }} 2 | apiVersion: v1 3 | kind: Service 4 | metadata: 5 | name: "{{ template "superset.fullname" . }}-flower" 6 | namespace: {{ .Release.Namespace }} 7 | labels: 8 | app: {{ template "superset.name" . }} 9 | chart: {{ template "superset.chart" . }} 10 | release: {{ .Release.Name }} 11 | spec: 12 | type: ClusterIP 13 | ports: 14 | - port: 5555 15 | targetPort: flower 16 | protocol: TCP 17 | name: flower 18 | selector: 19 | app: {{ template "superset.name" . }}-flower 20 | release: {{ .Release.Name }} 21 | {{- end }} 22 | -------------------------------------------------------------------------------- /charts/superset/templates/node/hpa.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: autoscaling/v2 2 | kind: HorizontalPodAutoscaler 3 | metadata: 4 | name: {{ include "superset.fullname" . }}-hpa 5 | labels: 6 | app: {{ template "superset.name" . }} 7 | chart: {{ template "superset.chart" . }} 8 | release: {{ .Release.Name }} 9 | spec: 10 | scaleTargetRef: 11 | apiVersion: apps/v1 12 | kind: Deployment 13 | name: {{ include "superset.fullname" . }} 14 | minReplicas: 1 15 | maxReplicas: 15 16 | metrics: 17 | - type: Resource 18 | resource: 19 | name: cpu 20 | target: 21 | type: Utilization 22 | averageUtilization: 80 23 | - type: Resource 24 | resource: 25 | name: memory 26 | target: 27 | type: Utilization 28 | averageUtilization: 80 29 | -------------------------------------------------------------------------------- /charts/superset/templates/node/ingress.yaml: -------------------------------------------------------------------------------- 1 | {{- if and .Values.service.nginx .Values.service.nginx.host }} 2 | apiVersion: networking.k8s.io/v1 3 | kind: Ingress 4 | metadata: 5 | name: {{ .Release.Name }}-superset 6 | namespace: {{ .Release.Namespace }} 7 | labels: 8 | app: {{ template "superset.name" . }} 9 | annotations: 10 | kubernetes.io/ingress.class: "nginx" 11 | nginx.ingress.kubernetes.io/auth-realm: "" 12 | nginx.ingress.kubernetes.io/auth-secret: "" 13 | nginx.ingress.kubernetes.io/auth-type: "" 14 | spec: 15 | rules: 16 | - host: {{ .Values.service.nginx.host }} 17 | http: 18 | paths: 19 | - path: / 20 | pathType: ImplementationSpecific 21 | backend: 22 | service: 23 | name: {{ template "superset.fullname" . }} 24 | port: 25 | number: 8088 26 | tls: 27 | - hosts: 28 | - '{{ .Values.service.nginx.tlshost | default .Values.service.nginx.host }}' 29 | secretName: {{ .Values.service.nginx.tlsSecretname | default "tls-secret-replica" }} 30 | {{- end }} -------------------------------------------------------------------------------- /charts/superset/templates/node/service.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: {{ template "superset.fullname" . }} 5 | namespace: {{ .Release.Namespace }} 6 | labels: 7 | app: {{ template "superset.name" . }} 8 | chart: {{ template "superset.chart" . }} 9 | release: {{ .Release.Name }} 10 | spec: 11 | type: ClusterIP 12 | ports: 13 | - port: 8088 14 | targetPort: http 15 | protocol: TCP 16 | name: http 17 | selector: 18 | app: {{ template "superset.name" . }} 19 | release: {{ .Release.Name }} 20 | -------------------------------------------------------------------------------- /charts/superset/templates/superset-configs.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Secret 3 | metadata: 4 | name: {{ template "superset.fullname" . }}-config 5 | namespace: {{ .Release.Namespace }} 6 | labels: 7 | app: {{ template "superset.fullname" . }} 8 | chart: {{ template "superset.chart" . }} 9 | release: "{{ .Release.Name }}" 10 | type: Opaque 11 | stringData: 12 | superset_config.py: | 13 | {{- include "superset-config" . | nindent 4 }} 14 | superset_init.sh: | 15 | {{- tpl .Values.init.initscript . | nindent 4 }} 16 | superset_bootstrap.sh: | 17 | #!/bin/bash 18 | pip install psycopg2-binary==2.9.6 \ 19 | sqlalchemy-bigquery==1.6.1 \ 20 | elasticsearch-dbapi==0.2.5 &&\ 21 | if [ ! -f ~/bootstrap ]; then echo "Running Superset with uid 0" > ~/bootstrap; fi -------------------------------------------------------------------------------- /charts/surrealdb/Chart.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | appVersion: "1.0" 3 | description: Helm chart for deploying surrealdb 4 | name: surrealdb 5 | version: 0.0.3 6 | icon: "https://storage.googleapis.com/zopdev-test-bucket/zop/files/originals/20241122/c44b7326-00d7-4c62-bce7-ca576509d27f-10982346.png" 7 | maintainers: 8 | - name: ZopDev 9 | url: zop.dev 10 | annotations: 11 | type: datasource -------------------------------------------------------------------------------- /charts/surrealdb/templates/configmap.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: ConfigMap 3 | metadata: 4 | name: "{{ .Release.Name }}-surrealdb-service-configmap" 5 | namespace: {{ .Release.Namespace | quote }} 6 | data: 7 | SURREAL_PORT: "8000" 8 | SURREAL_HOST: "{{ $.Release.Name}}-surrealdb" -------------------------------------------------------------------------------- /charts/surrealdb/templates/service.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: {{ $.Release.Name }}-surrealdb 5 | namespace: {{ .Release.Namespace | quote }} 6 | spec: 7 | selector: 8 | app.kubernetes.io/part-of: surrealdb 9 | app: {{ $.Release.Name }}-surrealdb 10 | type: ClusterIP 11 | ports: 12 | - protocol: TCP 13 | port: 8000 14 | targetPort: 8000 -------------------------------------------------------------------------------- /charts/surrealdb/values.schema.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://json-schema.org/draft-07/schema#", 3 | "type": "object", 4 | "properties": { 5 | "version": { 6 | "type": "string", 7 | "default": "v2", 8 | "mutable": true, 9 | "description": "SurrealDB version to use" 10 | 11 | }, 12 | "resources": { 13 | "type": "object", 14 | "properties": { 15 | "requests": { 16 | "type": "object", 17 | "properties": { 18 | "cpu": { 19 | "type": "string", 20 | "pattern": "^[0-9]+m$", 21 | "default": "100m", 22 | "mutable": true, 23 | "description": "CPU request for SurrealDB" 24 | }, 25 | "memory": { 26 | "type": "string", 27 | "pattern": "^[0-9]+M$", 28 | "default": "256M", 29 | "mutable": true, 30 | "description": "Memory request for SurrealDB" 31 | } 32 | } 33 | }, 34 | "limits": { 35 | "type": "object", 36 | "properties": { 37 | "cpu": { 38 | "type": "string", 39 | "pattern": "^[0-9]+m$", 40 | "default": "1000m", 41 | "mutable": true, 42 | "description": "CPU limit for SurrealDB" 43 | }, 44 | "memory": { 45 | "type": "string", 46 | "pattern": "^[0-9]+Gi$", 47 | "default": "1Gi", 48 | "mutable": true, 49 | "description": "Memory limit for SurrealDB" 50 | } 51 | } 52 | } 53 | } 54 | }, 55 | "diskSize": { 56 | "type": "string", 57 | "pattern": "^[0-9]+Gi$", 58 | "default": "10Gi", 59 | "mutable": true, 60 | "description": "Disk size for SurrealDB data", 61 | "editDisabled": true 62 | }, 63 | "services": { 64 | "type": "array", 65 | "items": { 66 | "type": "object", 67 | "properties": { 68 | "name": { 69 | "type": "string" 70 | } 71 | }, 72 | "required": ["name"] 73 | } 74 | } 75 | } 76 | } -------------------------------------------------------------------------------- /charts/surrealdb/values.yaml: -------------------------------------------------------------------------------- 1 | # values.yaml for SurrealDB Helm chart 2 | 3 | # image version for surrealdb 4 | version: v2 5 | 6 | # Resource configuration 7 | resources: 8 | requests: 9 | cpu: "100m" 10 | memory: "256M" 11 | limits: 12 | cpu: "1000m" 13 | memory: "1Gi" 14 | 15 | # disk size for surrealdb 16 | diskSize: "10Gi" 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /charts/wordpress/Chart.lock: -------------------------------------------------------------------------------- 1 | dependencies: 2 | - name: mysql 3 | repository: https://helm.zop.dev 4 | version: v0.0.3 5 | - name: service 6 | repository: https://helm.zop.dev 7 | version: v0.0.17 8 | digest: sha256:6d0631affe044d16df531011a7c84c0f73d4f6f4be5bfac2503881e6e0381407 9 | generated: "2025-03-10T12:07:57.005141+05:30" 10 | -------------------------------------------------------------------------------- /charts/wordpress/Chart.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v2 2 | appVersion: "1.0" 3 | description: Helm chart for deploying WordPress app 4 | name: wordpress 5 | version: 0.0.5 6 | type: application 7 | icon: "https://storage.googleapis.com/zopdev-test-bucket/zop/files/originals/20241129/9f2ff083-4ba6-4494-91d4-c6c7c96c8ab0-download.jpeg" 8 | dependencies: 9 | - name: mysql 10 | repository: "https://helm.zop.dev" 11 | version: 0.0.3 12 | - name: service 13 | repository: "https://helm.zop.dev" 14 | version: 0.0.17 15 | maintainers: 16 | - name: ZopDev 17 | url: zop.dev 18 | annotations: 19 | type: application -------------------------------------------------------------------------------- /charts/wordpress/values.yaml: -------------------------------------------------------------------------------- 1 | mysql: 2 | services: 3 | - name: wordpress 4 | database: wordpress 5 | 6 | service: 7 | name: wordpress 8 | image: wordpress:latest 9 | minCPU: "250m" 10 | minMemory: "1000Mi" 11 | maxCPU: "500m" 12 | maxMemory: "1500Mi" 13 | minReplicas: 1 14 | maxReplicas: 1 15 | 16 | nginx: 17 | annotations: 18 | kubernetes.io/ingress.class: "nginx" 19 | nginx.ingress.kubernetes.io/auth-realm: '' 20 | nginx.ingress.kubernetes.io/auth-secret: '' 21 | nginx.ingress.kubernetes.io/auth-type: '' 22 | 23 | env: 24 | WORDPRESS_DB_HOST: "$(DB_HOST):$(DB_PORT)" 25 | WORDPRESS_DB_USER: "$(DB_USER)" 26 | WORDPRESS_DB_PASSWORD: "$(DB_PASSWORD)" 27 | WORDPRESS_DB_NAME: "$(DB_NAME)" 28 | 29 | datastores: 30 | mysql: 31 | - datastore: wordpress 32 | database: wordpress 33 | 34 | 35 | httpPort: 80 -------------------------------------------------------------------------------- /charts/zookeeper-operator/Chart.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v2 2 | appVersion: "1.0" 3 | description: A Helm chart for Deploying Zookeeper Operator on Kubernetes 4 | name: zookeeper-operator 5 | version: 0.0.1 6 | icon: "https://storage.googleapis.com/zopdev-test-bucket/zop/files/originals/20250407/69625503-f6f1-4521-9c14-1d262ee8683b-zookeeper.png" 7 | maintainers: 8 | - name: ZopDev 9 | url: zop.dev -------------------------------------------------------------------------------- /charts/zookeeper-operator/templates/_helpers.tpl: -------------------------------------------------------------------------------- 1 | {{- define "zookeeper-operator.name" -}} 2 | {{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} 3 | {{- end -}} 4 | 5 | {{- define "zookeeper-operator.fullname" -}} 6 | {{- if .Values.fullnameOverride -}} 7 | {{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}} 8 | {{- else -}} 9 | {{- $name := default .Chart.Name .Values.nameOverride -}} 10 | {{- if contains $name .Release.Name -}} 11 | {{- .Release.Name | trunc 63 | trimSuffix "-" -}} 12 | {{- else -}} 13 | {{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}} 14 | {{- end -}} 15 | {{- end -}} 16 | {{- end -}} 17 | 18 | {{- define "zookeeper-operator.commonLabels" -}} 19 | app.kubernetes.io/name: {{ include "zookeeper-operator.name" . }} 20 | {{- if .Chart.AppVersion }} 21 | app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} 22 | {{- end }} 23 | app.kubernetes.io/managed-by: {{ .Release.Service }} 24 | helm.sh/chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}" 25 | {{- end -}} 26 | 27 | -------------------------------------------------------------------------------- /charts/zookeeper-operator/templates/clusterrole.yaml: -------------------------------------------------------------------------------- 1 | kind: ClusterRole 2 | apiVersion: rbac.authorization.k8s.io/v1 3 | metadata: 4 | name: {{ template "zookeeper-operator.fullname" . }} 5 | labels: 6 | {{ include "zookeeper-operator.commonLabels" . | indent 4 }} 7 | rules: 8 | - apiGroups: 9 | - zookeeper.pravega.io 10 | resources: 11 | - "*" 12 | verbs: 13 | - "*" 14 | - apiGroups: 15 | - "" 16 | resources: 17 | - nodes 18 | - pods 19 | - services 20 | - endpoints 21 | - persistentvolumeclaims 22 | - events 23 | - configmaps 24 | - secrets 25 | - serviceaccounts 26 | verbs: 27 | - "*" 28 | - apiGroups: 29 | - apps 30 | resources: 31 | - deployments 32 | - daemonsets 33 | - replicasets 34 | - statefulsets 35 | verbs: 36 | - "*" 37 | - apiGroups: 38 | - policy 39 | resources: 40 | - poddisruptionbudgets 41 | verbs: 42 | - "*" 43 | -------------------------------------------------------------------------------- /charts/zookeeper-operator/templates/clusterrolebinding.yaml: -------------------------------------------------------------------------------- 1 | kind: ClusterRoleBinding 2 | apiVersion: rbac.authorization.k8s.io/v1 3 | metadata: 4 | name: {{ template "zookeeper-operator.fullname" . }} 5 | labels: 6 | {{ include "zookeeper-operator.commonLabels" . | indent 4 }} 7 | subjects: 8 | - kind: ServiceAccount 9 | name: zookeeper-operator 10 | namespace: {{ .Release.Namespace }} 11 | roleRef: 12 | kind: ClusterRole 13 | name: {{ template "zookeeper-operator.fullname" . }} 14 | apiGroup: rbac.authorization.k8s.io 15 | -------------------------------------------------------------------------------- /charts/zookeeper-operator/templates/operator.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: apps/v1 2 | kind: Deployment 3 | metadata: 4 | name: {{ template "zookeeper-operator.fullname" . }} 5 | namespace: {{ .Release.Namespace }} 6 | labels: 7 | {{ include "zookeeper-operator.commonLabels" . | indent 4 }} 8 | spec: 9 | replicas: 1 10 | selector: 11 | matchLabels: 12 | name: {{ template "zookeeper-operator.fullname" . }} 13 | template: 14 | metadata: 15 | labels: 16 | name: {{ template "zookeeper-operator.fullname" . }} 17 | component: zookeeper-operator 18 | spec: 19 | serviceAccountName: zookeeper-operator 20 | containers: 21 | - name: {{ template "zookeeper-operator.fullname" . }} 22 | image: "pravega/zookeeper-operator:0.2.15" 23 | imagePullPolicy: IfNotPresent 24 | ports: 25 | - containerPort: 6000 26 | name: metrics 27 | command: 28 | - zookeeper-operator 29 | env: 30 | - name: WATCH_NAMESPACE 31 | value: "" 32 | - name: POD_NAME 33 | valueFrom: 34 | fieldRef: 35 | fieldPath: metadata.name 36 | - name: OPERATOR_NAME 37 | value: {{ template "zookeeper-operator.fullname" . }} 38 | {{- if .Values.resources }} 39 | resources: 40 | {{ toYaml .Values.resources | indent 10 }} 41 | {{- end }} 42 | 43 | -------------------------------------------------------------------------------- /charts/zookeeper-operator/templates/role.yaml: -------------------------------------------------------------------------------- 1 | kind: Role 2 | apiVersion: rbac.authorization.k8s.io/v1 3 | metadata: 4 | name: {{ template "zookeeper-operator.fullname" . }} 5 | namespace: {{ .Release.Namespace }} 6 | labels: 7 | {{ include "zookeeper-operator.commonLabels" . | indent 4 }} 8 | rules: 9 | - apiGroups: 10 | - zookeeper.pravega.io 11 | resources: 12 | - "*" 13 | verbs: 14 | - "*" 15 | - apiGroups: 16 | - "" 17 | resources: 18 | - pods 19 | - services 20 | - endpoints 21 | - persistentvolumeclaims 22 | - events 23 | - configmaps 24 | - secrets 25 | verbs: 26 | - "*" 27 | - apiGroups: 28 | - apps 29 | resources: 30 | - deployments 31 | - daemonsets 32 | - replicasets 33 | - statefulsets 34 | verbs: 35 | - "*" 36 | - apiGroups: 37 | - policy 38 | resources: 39 | - poddisruptionbudgets 40 | verbs: 41 | - "*" 42 | -------------------------------------------------------------------------------- /charts/zookeeper-operator/templates/rolebinding.yaml: -------------------------------------------------------------------------------- 1 | kind: RoleBinding 2 | apiVersion: rbac.authorization.k8s.io/v1 3 | metadata: 4 | name: {{ template "zookeeper-operator.fullname" . }} 5 | namespace: {{ .Release.Namespace }} 6 | labels: 7 | {{ include "zookeeper-operator.commonLabels" . | indent 4 }} 8 | subjects: 9 | - kind: ServiceAccount 10 | name: zookeeper-operator 11 | roleRef: 12 | kind: Role 13 | name: {{ template "zookeeper-operator.fullname" . }} 14 | apiGroup: rbac.authorization.k8s.io 15 | -------------------------------------------------------------------------------- /charts/zookeeper-operator/templates/serviceaccount.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: ServiceAccount 3 | metadata: 4 | name: zookeeper-operator 5 | namespace: {{ .Release.Namespace }} 6 | labels: 7 | {{ include "zookeeper-operator.commonLabels" . | indent 4 }} 8 | -------------------------------------------------------------------------------- /charts/zookeeper-operator/values.yaml: -------------------------------------------------------------------------------- 1 | crd: 2 | create: true 3 | 4 | resources: 5 | requests: 6 | cpu: "100m" 7 | memory: "128Mi" 8 | limits: 9 | cpu: "200m" 10 | memory: "256Mi" 11 | -------------------------------------------------------------------------------- /charts/zookeeper/Chart.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | appVersion: "1.0" 3 | description: A Helm chart for Deploying Zookeeper on Kubernetes 4 | name: zookeeper 5 | version: 0.0.1 6 | icon: "https://zop.dev/logo.png" 7 | maintainers: 8 | - name: ZopDev 9 | url: zop.dev -------------------------------------------------------------------------------- /charts/zookeeper/templates/_helpers.tpl: -------------------------------------------------------------------------------- 1 | {{- define "zookeeper.name" -}} 2 | {{- default .Chart.Name | trunc 63 | trimSuffix "-" }} 3 | {{- end }} 4 | 5 | {{- define "zookeeper.fullname" -}} 6 | {{- printf "%s-zookeeper" .Release.Name | trunc 63 | trimSuffix "-" }} 7 | {{- end }} 8 | 9 | {{- define "zookeeper.chart" -}} 10 | {{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} 11 | {{- end }} 12 | 13 | {{- define "zookeeper.labels" -}} 14 | helm.sh/chart: {{ include "zookeeper.chart" . }} 15 | {{ include "zookeeper.selectorLabels" . }} 16 | {{- if .Chart.AppVersion }} 17 | app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} 18 | {{- end }} 19 | app.kubernetes.io/managed-by: {{ .Release.Service }} 20 | {{- end }} 21 | 22 | {{- define "zookeeper.selectorLabels" -}} 23 | app: {{ .Release.Name }}-{{ include "zookeeper.name" . }} 24 | app.kubernetes.io/name: {{ include "zookeeper.name" . }} 25 | app.kubernetes.io/instance: {{ .Release.Name }} 26 | {{- end }} 27 | 28 | {{- define "zookeeper.serverlist" -}} 29 | {{- $namespace := .Release.Namespace }} 30 | {{- $name := include "zookeeper.fullname" . -}} 31 | {{- $peersPort := .Values.port.peers -}} 32 | {{- $leaderElectionPort := .Values.port.leader -}} 33 | {{- $zk := dict "servers" (list) -}} 34 | {{- range $idx, $v := until (int .Values.replicaCount) }} 35 | {{- $noop := printf "%s-%d.%s-headless.%s.svc.cluster.local:%d:%d" $name $idx $name $namespace (int $peersPort) (int $leaderElectionPort) | append $zk.servers | set $zk "servers" -}} 36 | {{- end }} 37 | {{- printf "%s" (join ";" $zk.servers) | quote -}} 38 | {{- end -}} -------------------------------------------------------------------------------- /charts/zookeeper/templates/headless-service.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: {{ include "zookeeper.fullname" . }}-headless 5 | labels: 6 | {{- include "zookeeper.labels" . | nindent 4 }} 7 | spec: 8 | type: ClusterIP 9 | clusterIP: None 10 | publishNotReadyAddresses: true 11 | ports: 12 | - name: tcp-peers 13 | port: {{ .Values.port.peers }} 14 | protocol: TCP 15 | targetPort: tcp-peers 16 | - name: tcp-leader 17 | port: {{ .Values.port.leader }} 18 | protocol: TCP 19 | targetPort: tcp-leader 20 | - name: http-admin 21 | port: {{ .Values.port.admin }} 22 | protocol: TCP 23 | targetPort: http-admin 24 | - name: tcp-client 25 | port: {{ .Values.port.client }} 26 | protocol: TCP 27 | targetPort: tcp-client 28 | selector: 29 | {{- include "zookeeper.selectorLabels" . | nindent 4 }} 30 | -------------------------------------------------------------------------------- /charts/zookeeper/templates/poddisruptionbudget.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: policy/v1 2 | kind: PodDisruptionBudget 3 | metadata: 4 | name: {{ include "zookeeper.fullname" . }}-pdb 5 | labels: 6 | {{- include "zookeeper.labels" . | nindent 4 }} 7 | spec: 8 | minAvailable: {{ .Values.minAvailable | default 1 }} 9 | selector: 10 | matchLabels: 11 | {{- include "zookeeper.selectorLabels" . | nindent 6 }} 12 | -------------------------------------------------------------------------------- /charts/zookeeper/values.yaml: -------------------------------------------------------------------------------- 1 | image: 2 | registry: docker.io 3 | repository: confluentinc/cp-zookeeper 4 | tag: "7.8.0" 5 | pullPolicy: 6 | imagePullSecrets: [] 7 | 8 | replicaCount: 3 9 | minAvailable: 1 10 | 11 | livenessProbe: 12 | enabled: true 13 | initialDelaySeconds: 30 14 | periodSeconds: 10 15 | timeoutSeconds: 5 16 | failureThreshold: 6 17 | successThreshold: 1 18 | 19 | readinessProbe: 20 | enabled: true 21 | initialDelaySeconds: 10 22 | periodSeconds: 10 23 | timeoutSeconds: 5 24 | failureThreshold: 6 25 | successThreshold: 1 26 | 27 | 28 | podSecurityContext: 29 | fsGroup: 1000 30 | 31 | securityContext: 32 | allowPrivilegeEscalation: false 33 | readOnlyRootFilesystem: true 34 | runAsUser: 1000 35 | runAsGroup: 1000 36 | capabilities: 37 | drop: 38 | - ALL 39 | 40 | resources: 41 | requests: 42 | cpu: "100m" 43 | memory: "500Mi" 44 | limits: 45 | cpu: "500m" 46 | memory: "1000Mi" 47 | 48 | diskSize : 1Gi 49 | 50 | ## Zookeeper Configuration 51 | tickTime: 2000 52 | initLimit: 10 53 | syncLimit: 5 54 | maxClientCnxns: 60 55 | autopurge: 56 | purgeInterval: 24 57 | snapRetainCount: 3 58 | quorumListenOnAllIPs: true 59 | maxSessionTimeout: 40000 60 | adminEnableServer: true 61 | heapOpts: "-XX:MaxRAMPercentage=75.0 -XX:InitialRAMPercentage=50.0" 62 | log4jRootLogLevel: INFO 63 | 64 | port: 65 | peers: 2888 66 | leader: 3888 67 | admin: 8080 68 | client: 2181 -------------------------------------------------------------------------------- /docs/CNAME: -------------------------------------------------------------------------------- 1 | helm.zop.dev -------------------------------------------------------------------------------- /docs/Chromadb-v0.0.1.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/Chromadb-v0.0.1.tgz -------------------------------------------------------------------------------- /docs/cassandra-v0.0.1.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/cassandra-v0.0.1.tgz -------------------------------------------------------------------------------- /docs/cassandra-v0.0.2.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/cassandra-v0.0.2.tgz -------------------------------------------------------------------------------- /docs/cassandra-v0.0.3.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/cassandra-v0.0.3.tgz -------------------------------------------------------------------------------- /docs/cassandra-v0.0.4.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/cassandra-v0.0.4.tgz -------------------------------------------------------------------------------- /docs/cassandra-v0.0.5.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/cassandra-v0.0.5.tgz -------------------------------------------------------------------------------- /docs/chromadb-v0.0.2.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/chromadb-v0.0.2.tgz -------------------------------------------------------------------------------- /docs/chromadb-v0.0.3.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/chromadb-v0.0.3.tgz -------------------------------------------------------------------------------- /docs/chromadb-v0.0.4.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/chromadb-v0.0.4.tgz -------------------------------------------------------------------------------- /docs/cockroachdb-v0.0.1.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/cockroachdb-v0.0.1.tgz -------------------------------------------------------------------------------- /docs/cockroachdb-v0.0.2.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/cockroachdb-v0.0.2.tgz -------------------------------------------------------------------------------- /docs/cockroachdb-v0.0.3.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/cockroachdb-v0.0.3.tgz -------------------------------------------------------------------------------- /docs/cockroachdb-v0.0.4.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/cockroachdb-v0.0.4.tgz -------------------------------------------------------------------------------- /docs/cron-job-v0.0.1.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/cron-job-v0.0.1.tgz -------------------------------------------------------------------------------- /docs/cron-job-v0.0.10.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/cron-job-v0.0.10.tgz -------------------------------------------------------------------------------- /docs/cron-job-v0.0.11.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/cron-job-v0.0.11.tgz -------------------------------------------------------------------------------- /docs/cron-job-v0.0.12.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/cron-job-v0.0.12.tgz -------------------------------------------------------------------------------- /docs/cron-job-v0.0.13.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/cron-job-v0.0.13.tgz -------------------------------------------------------------------------------- /docs/cron-job-v0.0.14.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/cron-job-v0.0.14.tgz -------------------------------------------------------------------------------- /docs/cron-job-v0.0.15.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/cron-job-v0.0.15.tgz -------------------------------------------------------------------------------- /docs/cron-job-v0.0.16.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/cron-job-v0.0.16.tgz -------------------------------------------------------------------------------- /docs/cron-job-v0.0.17.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/cron-job-v0.0.17.tgz -------------------------------------------------------------------------------- /docs/cron-job-v0.0.2.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/cron-job-v0.0.2.tgz -------------------------------------------------------------------------------- /docs/cron-job-v0.0.3.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/cron-job-v0.0.3.tgz -------------------------------------------------------------------------------- /docs/cron-job-v0.0.4.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/cron-job-v0.0.4.tgz -------------------------------------------------------------------------------- /docs/cron-job-v0.0.5.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/cron-job-v0.0.5.tgz -------------------------------------------------------------------------------- /docs/cron-job-v0.0.6.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/cron-job-v0.0.6.tgz -------------------------------------------------------------------------------- /docs/cron-job-v0.0.7.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/cron-job-v0.0.7.tgz -------------------------------------------------------------------------------- /docs/cron-job-v0.0.8.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/cron-job-v0.0.8.tgz -------------------------------------------------------------------------------- /docs/cron-job-v0.0.9.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/cron-job-v0.0.9.tgz -------------------------------------------------------------------------------- /docs/dgraph-v0.0.1.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/dgraph-v0.0.1.tgz -------------------------------------------------------------------------------- /docs/dgraph-v0.0.2.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/dgraph-v0.0.2.tgz -------------------------------------------------------------------------------- /docs/dgraph-v0.0.3.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/dgraph-v0.0.3.tgz -------------------------------------------------------------------------------- /docs/jupyterhub-v0.0.1.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/jupyterhub-v0.0.1.tgz -------------------------------------------------------------------------------- /docs/jupyterhub-v0.0.2.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/jupyterhub-v0.0.2.tgz -------------------------------------------------------------------------------- /docs/jupyterhub-v0.0.3.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/jupyterhub-v0.0.3.tgz -------------------------------------------------------------------------------- /docs/kafka-v0.0.1.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/kafka-v0.0.1.tgz -------------------------------------------------------------------------------- /docs/kafka-v0.0.2.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/kafka-v0.0.2.tgz -------------------------------------------------------------------------------- /docs/kafka-v0.0.3.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/kafka-v0.0.3.tgz -------------------------------------------------------------------------------- /docs/kafka-v0.0.4.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/kafka-v0.0.4.tgz -------------------------------------------------------------------------------- /docs/mariadb-v0.0.1.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/mariadb-v0.0.1.tgz -------------------------------------------------------------------------------- /docs/mariadb-v0.0.2.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/mariadb-v0.0.2.tgz -------------------------------------------------------------------------------- /docs/mariadb-v0.0.3.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/mariadb-v0.0.3.tgz -------------------------------------------------------------------------------- /docs/mariadb-v0.0.4.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/mariadb-v0.0.4.tgz -------------------------------------------------------------------------------- /docs/mysql-v0.0.1.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/mysql-v0.0.1.tgz -------------------------------------------------------------------------------- /docs/mysql-v0.0.10.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/mysql-v0.0.10.tgz -------------------------------------------------------------------------------- /docs/mysql-v0.0.11.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/mysql-v0.0.11.tgz -------------------------------------------------------------------------------- /docs/mysql-v0.0.12.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/mysql-v0.0.12.tgz -------------------------------------------------------------------------------- /docs/mysql-v0.0.13.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/mysql-v0.0.13.tgz -------------------------------------------------------------------------------- /docs/mysql-v0.0.14.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/mysql-v0.0.14.tgz -------------------------------------------------------------------------------- /docs/mysql-v0.0.15.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/mysql-v0.0.15.tgz -------------------------------------------------------------------------------- /docs/mysql-v0.0.16.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/mysql-v0.0.16.tgz -------------------------------------------------------------------------------- /docs/mysql-v0.0.2.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/mysql-v0.0.2.tgz -------------------------------------------------------------------------------- /docs/mysql-v0.0.3.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/mysql-v0.0.3.tgz -------------------------------------------------------------------------------- /docs/mysql-v0.0.4.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/mysql-v0.0.4.tgz -------------------------------------------------------------------------------- /docs/mysql-v0.0.5.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/mysql-v0.0.5.tgz -------------------------------------------------------------------------------- /docs/mysql-v0.0.6.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/mysql-v0.0.6.tgz -------------------------------------------------------------------------------- /docs/mysql-v0.0.7.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/mysql-v0.0.7.tgz -------------------------------------------------------------------------------- /docs/mysql-v0.0.8.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/mysql-v0.0.8.tgz -------------------------------------------------------------------------------- /docs/mysql-v0.0.9.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/mysql-v0.0.9.tgz -------------------------------------------------------------------------------- /docs/opentsdb-v0.0.1.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/opentsdb-v0.0.1.tgz -------------------------------------------------------------------------------- /docs/opentsdb-v0.0.2.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/opentsdb-v0.0.2.tgz -------------------------------------------------------------------------------- /docs/opentsdb-v0.0.3.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/opentsdb-v0.0.3.tgz -------------------------------------------------------------------------------- /docs/outline-v0.0.1.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/outline-v0.0.1.tgz -------------------------------------------------------------------------------- /docs/outline-v0.0.2.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/outline-v0.0.2.tgz -------------------------------------------------------------------------------- /docs/outline-v0.0.3.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/outline-v0.0.3.tgz -------------------------------------------------------------------------------- /docs/outline-v0.0.4.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/outline-v0.0.4.tgz -------------------------------------------------------------------------------- /docs/outline-v0.0.5.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/outline-v0.0.5.tgz -------------------------------------------------------------------------------- /docs/postgres-v0.0.1.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/postgres-v0.0.1.tgz -------------------------------------------------------------------------------- /docs/postgres-v0.0.10.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/postgres-v0.0.10.tgz -------------------------------------------------------------------------------- /docs/postgres-v0.0.2.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/postgres-v0.0.2.tgz -------------------------------------------------------------------------------- /docs/postgres-v0.0.3.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/postgres-v0.0.3.tgz -------------------------------------------------------------------------------- /docs/postgres-v0.0.4.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/postgres-v0.0.4.tgz -------------------------------------------------------------------------------- /docs/postgres-v0.0.5.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/postgres-v0.0.5.tgz -------------------------------------------------------------------------------- /docs/postgres-v0.0.6.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/postgres-v0.0.6.tgz -------------------------------------------------------------------------------- /docs/postgres-v0.0.7.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/postgres-v0.0.7.tgz -------------------------------------------------------------------------------- /docs/postgres-v0.0.8.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/postgres-v0.0.8.tgz -------------------------------------------------------------------------------- /docs/postgres-v0.0.9.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/postgres-v0.0.9.tgz -------------------------------------------------------------------------------- /docs/redis-v0.0.1.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/redis-v0.0.1.tgz -------------------------------------------------------------------------------- /docs/redis-v0.0.2.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/redis-v0.0.2.tgz -------------------------------------------------------------------------------- /docs/redis-v0.0.3.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/redis-v0.0.3.tgz -------------------------------------------------------------------------------- /docs/redis-v0.0.4.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/redis-v0.0.4.tgz -------------------------------------------------------------------------------- /docs/redisdistributed-v0.0.6.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/redisdistributed-v0.0.6.tgz -------------------------------------------------------------------------------- /docs/redisdistributed-v0.0.7.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/redisdistributed-v0.0.7.tgz -------------------------------------------------------------------------------- /docs/redisdistributed-v0.0.8.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/redisdistributed-v0.0.8.tgz -------------------------------------------------------------------------------- /docs/scylladb-v0.0.1.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/scylladb-v0.0.1.tgz -------------------------------------------------------------------------------- /docs/service-v0.0.1.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/service-v0.0.1.tgz -------------------------------------------------------------------------------- /docs/service-v0.0.10.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/service-v0.0.10.tgz -------------------------------------------------------------------------------- /docs/service-v0.0.11.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/service-v0.0.11.tgz -------------------------------------------------------------------------------- /docs/service-v0.0.12.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/service-v0.0.12.tgz -------------------------------------------------------------------------------- /docs/service-v0.0.13.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/service-v0.0.13.tgz -------------------------------------------------------------------------------- /docs/service-v0.0.14.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/service-v0.0.14.tgz -------------------------------------------------------------------------------- /docs/service-v0.0.15.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/service-v0.0.15.tgz -------------------------------------------------------------------------------- /docs/service-v0.0.16.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/service-v0.0.16.tgz -------------------------------------------------------------------------------- /docs/service-v0.0.17.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/service-v0.0.17.tgz -------------------------------------------------------------------------------- /docs/service-v0.0.18.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/service-v0.0.18.tgz -------------------------------------------------------------------------------- /docs/service-v0.0.19.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/service-v0.0.19.tgz -------------------------------------------------------------------------------- /docs/service-v0.0.2.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/service-v0.0.2.tgz -------------------------------------------------------------------------------- /docs/service-v0.0.20.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/service-v0.0.20.tgz -------------------------------------------------------------------------------- /docs/service-v0.0.21.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/service-v0.0.21.tgz -------------------------------------------------------------------------------- /docs/service-v0.0.22.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/service-v0.0.22.tgz -------------------------------------------------------------------------------- /docs/service-v0.0.23.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/service-v0.0.23.tgz -------------------------------------------------------------------------------- /docs/service-v0.0.3.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/service-v0.0.3.tgz -------------------------------------------------------------------------------- /docs/service-v0.0.4.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/service-v0.0.4.tgz -------------------------------------------------------------------------------- /docs/service-v0.0.5.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/service-v0.0.5.tgz -------------------------------------------------------------------------------- /docs/service-v0.0.6.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/service-v0.0.6.tgz -------------------------------------------------------------------------------- /docs/service-v0.0.7.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/service-v0.0.7.tgz -------------------------------------------------------------------------------- /docs/service-v0.0.8.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/service-v0.0.8.tgz -------------------------------------------------------------------------------- /docs/service-v0.0.9.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/service-v0.0.9.tgz -------------------------------------------------------------------------------- /docs/solr-operator-v0.0.1.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/solr-operator-v0.0.1.tgz -------------------------------------------------------------------------------- /docs/solr-v0.0.1.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/solr-v0.0.1.tgz -------------------------------------------------------------------------------- /docs/solr-v0.0.2.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/solr-v0.0.2.tgz -------------------------------------------------------------------------------- /docs/solr-v0.0.3.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/solr-v0.0.3.tgz -------------------------------------------------------------------------------- /docs/solr-v0.0.4.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/solr-v0.0.4.tgz -------------------------------------------------------------------------------- /docs/solr-v0.0.5.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/solr-v0.0.5.tgz -------------------------------------------------------------------------------- /docs/solrcloud-v0.0.1.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/solrcloud-v0.0.1.tgz -------------------------------------------------------------------------------- /docs/solrcloud-v0.0.2.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/solrcloud-v0.0.2.tgz -------------------------------------------------------------------------------- /docs/solrcloud-v0.0.3.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/solrcloud-v0.0.3.tgz -------------------------------------------------------------------------------- /docs/superset-v0.0.1.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/superset-v0.0.1.tgz -------------------------------------------------------------------------------- /docs/superset-v0.0.2.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/superset-v0.0.2.tgz -------------------------------------------------------------------------------- /docs/superset-v0.0.3.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/superset-v0.0.3.tgz -------------------------------------------------------------------------------- /docs/superset-v0.0.4.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/superset-v0.0.4.tgz -------------------------------------------------------------------------------- /docs/superset-v0.0.5.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/superset-v0.0.5.tgz -------------------------------------------------------------------------------- /docs/superset-v0.0.6.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/superset-v0.0.6.tgz -------------------------------------------------------------------------------- /docs/surrealdb-v0.0.1.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/surrealdb-v0.0.1.tgz -------------------------------------------------------------------------------- /docs/surrealdb-v0.0.2.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/surrealdb-v0.0.2.tgz -------------------------------------------------------------------------------- /docs/surrealdb-v0.0.3.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/surrealdb-v0.0.3.tgz -------------------------------------------------------------------------------- /docs/wordpress-v0.0.1.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/wordpress-v0.0.1.tgz -------------------------------------------------------------------------------- /docs/wordpress-v0.0.2.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/wordpress-v0.0.2.tgz -------------------------------------------------------------------------------- /docs/wordpress-v0.0.3.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/wordpress-v0.0.3.tgz -------------------------------------------------------------------------------- /docs/wordpress-v0.0.4.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/wordpress-v0.0.4.tgz -------------------------------------------------------------------------------- /docs/wordpress-v0.0.5.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/wordpress-v0.0.5.tgz -------------------------------------------------------------------------------- /docs/zookeeper-operator-v0.0.1.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/zookeeper-operator-v0.0.1.tgz -------------------------------------------------------------------------------- /docs/zookeeper-v0.0.1.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zopdev/helm-charts/eef95bdcd596edfe6700fcbd881c7540d8a646b3/docs/zookeeper-v0.0.1.tgz -------------------------------------------------------------------------------- /promql/mysql.yaml: -------------------------------------------------------------------------------- 1 | queries: 2 | "<=0.0.8": 3 | mysql_up: 4 | query: >- 5 | avg by (pod) ( 6 | mysql_up{ 7 | namespace='', 8 | pod=~'.*' 9 | } 10 | ) 11 | 12 | open_connections: 13 | query: >- 14 | avg by (pod) ( 15 | mysql_global_status_threads_connected{ 16 | namespace='', 17 | pod=~'.*' 18 | } 19 | ) 20 | 21 | inuse_connections: 22 | query: >- 23 | avg by (pod) ( 24 | mysql_global_status_threads_running{ 25 | namespace='', 26 | pod=~'.*' 27 | } 28 | ) 29 | 30 | queries_per_second: 31 | query: >- 32 | rate(mysql_global_status_queries{namespace='',pod=~'.*'}[1m]) 33 | 34 | bytes_received_per_second: 35 | query: >- 36 | rate(mysql_global_status_bytes_received{namespace='',pod=~'.*'}[1m]) 37 | unit: "kb/s" 38 | 39 | bytes_sent_per_second: 40 | query: >- 41 | rate(mysql_global_status_bytes_sent{namespace='',pod=~'.*'}[1m]) 42 | unit: "kb/s" 43 | 44 | innodb_buffer_pool_reads: 45 | query: >- 46 | rate(mysql_global_status_innodb_buffer_pool_reads{namespace='',pod=~'.*'}[1m]) 47 | 48 | innodb_buffer_pool_read_requests: 49 | query: >- 50 | rate(mysql_global_status_innodb_buffer_pool_read_requests{namespace='',pod=~'.*'}[1m]) 51 | 52 | slow_queries: 53 | query: >- 54 | rate(mysql_global_status_slow_queries{namespace='',pod=~'.*'}[1m]) 55 | 56 | aborted_connects: 57 | query: >- 58 | rate(mysql_global_status_aborted_connects{namespace='',pod=~'.*'}[1m]) 59 | 60 | threads_created: 61 | query: >- 62 | rate(mysql_global_status_threads_created{namespace='',pod=~'.*'}[1m]) 63 | -------------------------------------------------------------------------------- /promql/redis.yaml: -------------------------------------------------------------------------------- 1 | queries: 2 | "<=0.0.4": 3 | redis_up: 4 | query: >- 5 | avg by (pod) ( 6 | redis_up{ 7 | namespace='', 8 | pod=~'.*' 9 | } 10 | ) 11 | 12 | connected_clients: 13 | query: >- 14 | avg by (pod) ( 15 | redis_connected_clients{ 16 | namespace='', 17 | pod=~'.*' 18 | } 19 | ) 20 | 21 | memory_used: 22 | query: >- 23 | avg by (pod) ( 24 | redis_memory_used_bytes{ 25 | namespace='', 26 | pod=~'.*' 27 | } 28 | ) 29 | unit: "bytes" 30 | 31 | memory_peak: 32 | query: >- 33 | avg by (pod) ( 34 | redis_memory_used_peak_bytes{ 35 | namespace='', 36 | pod=~'.*' 37 | } 38 | ) 39 | unit: "bytes" 40 | 41 | keys_total: 42 | query: >- 43 | sum by (pod) ( 44 | redis_db_keys{ 45 | namespace='', 46 | pod=~'.*' 47 | } 48 | ) 49 | 50 | ops_per_second: 51 | query: >- 52 | rate( 53 | redis_commands_processed_total{ 54 | namespace='', 55 | pod=~'.*' 56 | }[1m] 57 | ) 58 | 59 | rejected_connections: 60 | query: >- 61 | rate( 62 | redis_rejected_connections_total{ 63 | namespace='', 64 | pod=~'.*' 65 | }[1m] 66 | ) 67 | -------------------------------------------------------------------------------- /promql/service.yaml: -------------------------------------------------------------------------------- 1 | queries: 2 | "<=0.0.22": 3 | cpu_utilisation: 4 | query: >- 5 | (avg(rate(container_cpu_usage_seconds_total{namespace='',container=''}[1m])) by (pod) / 6 | on (pod)(kube_pod_container_resource_limits{namespace='',container='',resource='cpu'}))*100 7 | unit: "%" 8 | 9 | memory_utilisation: 10 | query: >- 11 | (avg(rate(container_memory_usage_bytes{namespace='',container=''}[1m])) by (pod) / 12 | on (pod)(kube_pod_container_resource_limits{namespace='',container='',resource='memory'}))*10000 13 | unit: "%" 14 | 15 | network_utilisation: 16 | query: >- 17 | sum by (pod) (rate(container_network_transmit_bytes_total{namespace='',pod=~'.*'}[1m])) 18 | unit: "kb/s" 19 | 20 | cpu_throttling: 21 | query: >- 22 | sum(increase(container_cpu_cfs_throttled_periods_total{container='', namespace=''}[1m])) by (container) / 23 | sum(increase(container_cpu_cfs_periods_total{container='', namespace=''}[1m])) by (container) 24 | 25 | pod_restarts: 26 | query: >- 27 | increase(kube_pod_container_status_restarts_total{namespace='', container=''}[1m]) 28 | 29 | nginx_ingress_volume_controller: 30 | query: >- 31 | sum by (status) (increase(nginx_ingress_controller_requests{exported_service='', exported_namespace=''}[1m])) 32 | --------------------------------------------------------------------------------